2014-02-16 102 views
1

如果我理解正確,在訓練神經網絡以識別圖像中的對象時,通常會將單個像素映射到單個輸入層節點。但是,有時我們可能只有很小的興趣區域,可能會有很大的局面。例如,如果我們正在訓練一個神經網絡來識別交通標誌,那麼我們可能會看到交通標誌只覆蓋其中一小部分的圖像,其餘的則由道路,樹木,天空等拍攝。創建一個神經網絡試圖從每個位置找到交通標誌看起來非常昂貴。神經網絡如何處理感興趣區域較小的大型圖像?

我的問題是,除了對圖像進行預處理之外,是否有任何具體的策略來處理這些與神經網絡有關的情況?

謝謝。

回答

1

使用每個輸入節點1周的象素通常是完成。進入你的網絡的是特徵向量,因此你應該輸入實際的特徵,而不是原始數據。輸入原始數據(及其所有噪音)不僅會導致分類錯誤,而且培訓所需的時間也會超過必要的時間。

總之:預處理是不可避免的。您需要更抽象的數據表示。有數百種方法可以解決您所問的問題。讓我給你一些流行的方法。

1)圖像處理找到感興趣的區域。
當檢測交通標誌時,常用的策略是使用邊緣檢測(即與某些濾波器卷積),應用一些啓發式算法,使用閾值濾波器並隔離感興趣的區域(斑點,強連通的組件等),將其作爲輸入到網絡。

2)在沒有任何預先知識或圖像處理的情況下應用特徵。
Viola/Jones使用特定的圖像表示法,從中可以非常快速地計算特徵。他們的框架已被證明可以實時工作。 (我知道他們的原創作品沒有說明神經網絡,但是我在論文中將它們的特徵應用於多層感知器,因此您可以將它與任何分類器一起使用,真的。)

3)深度學習。
學習更好的數據表示可以納入神經網絡本身。這些方法是最受歡迎的研究方法之一。由於這是一個非常大的話題,我只能給你一些關鍵詞,以便你可以自己研究。 Autoencoders是學習高效表示的網絡。有可能將它們與傳統的人工神經網絡一起使用。 Convolutional Neural Networks看起來有點複雜,但他們值得一試。在神經網絡的實際分類之前,它們具有子窗口卷積(邊緣檢測)和重採樣的交替層。 CNN目前能夠在OCR中取得一些最好的結果。

在每一種情況下,你都必須問自己:我是否1)給我的人工神經網絡表示具有完成這項工作所需的所有數據(表示不是太抽象),以及2)保持太多的噪音(並因此保持抽象)。

0

如果你想識別大尺寸圖像上的小物體,你應該使用「掃描窗口」。

對於 「掃描窗口」 可以應用漁政還原方法:

  1. DCT(http://en.wikipedia.org/wiki/Discrete_cosine_transform
  2. PCA(http://en.wikipedia.org/wiki/Principal_component_analysis
+0

感謝您的回覆。那麼通常通過使用掃描窗口並將掃描窗口中的圖像提供給網絡來處理神經網絡之外的這些類型的情況?神經網絡本身是否可以處理這樣的事情是完全不可能的? – tsiki

+0

例如: 我們拍攝2000x2000像素的原始圖像。掃描窗口可能是20x20像素(根據經驗選擇)。在這種情況下,NN的輸入層應該包含400個神經元,但是如果我們將DCT/PCA方法應用到我們的掃描窗口,我們可以減少到約100個神經元。 – oakio