2016-08-09 36 views
0

我有一個灰度圖像,未知頻率上的handwriten數字(0-9)。圖像迴歸具有未知數量的目標/標籤

我試圖確定一個構建機器學習模型:

  1. 的X,Y座標的每一位。
  2. 數字標籤(即0-9)。

(我不能上傳灰度圖像,所以假設.表示 「黑色背景」,並且數字代表本身):

Image1:  Image2:  Image3: 
7....... .2...... ........ 
........ .....3.. ........ 
....1... ........ ........ 
........ ....2... ........ 

因此,讓f表示我應該具有的機器學習模型/功能:

f(Image1) = [ label0:[], f(Image2) = [ label0:[], f(Image3) = [ label0:[], 
       label1:[(x=4,y=2)],  label1:[],    label1:[], 
       label2:[],    label2:[(x=1,y=0),  label2:[], 
               (x=1,y=3)],  
       label3:[],    label3:[(x=5,y=1)],  label3:[], 
       label4:[],    label4:[],    label4:[], 
       label5:[],    label5:[],    label5:[], 
       label6:[],    label6:[],    label6:[], 
       label7:[(x=0,y=0)],  label7:[],    label7:[], 
       label8:[],    label8:[],    label8:[], 
       label9:[],    label9:[],    label9:[], 
      ] 

我試圖應用深度學習方法使用Keras來同時解決這兩個問題,但我努力設置我的標籤,因爲每個圖像都有未知數量的標籤。

任何人都有關於如何設置這樣一個深度學習問題的任何想法?我應該將問題分成2個階段(位置然後分類 - 但是然後位置問題仍然有未知數量的標籤)?謝謝!

回答

1

您可以將此問題分爲兩部分。

在第一部分中,您應該創建一個方法來檢測圖像中是否是數字。爲此,您可以使用名爲「滑動窗口」的方法(watch this video by Andrew Ng explaining this method)。假設您的圖像尺寸爲200x200,每個數字的尺寸爲20x20。您可以創建一個尺寸爲20x20的窗口,並且在每個迭代窗口中向右移動20像素(或更少/更多),如果窗口到達圖像的右側部分,其移動回到左側,向下20像素(或更少/更多)。每次移動窗口後,您都會裁剪圖像,使用神經網絡檢查裁剪圖像上是否有數字。如果有數字,則將窗口的x,y座標和裁剪後的圖像保存爲圖像的陣列。

第二部分應該很容易,有數字你將它們傳遞給確定數字標籤的神經網絡。因此,您應該訓練兩個神經網絡 - 一個用於檢測圖像上是否有數字,另一個用於確定數字的標籤。

還有第二種方法來找到圖像上的數字,你可以訓練神經網絡,它決定了圖像上的位數(這可能很困難),然後,通過使用k-means(你應該設置簇的數量爲你的位數'從NN獲得),你可以找到數字的位置,如果他們不太接近彼此。我在一個項目中完成了這個工作,並且它可以工作,但是您應該有純背景的圖像,並且您必須創建一個陣列,其像素位置的亮度超過某個閾值。