當前位置:
首頁 > 最新 > HALCON高級篇:CNNs理論

HALCON高級篇:CNNs理論

卷積神經網路(CNNs

隨著機器視覺硬體已經變得越來越強,訓練多隱含層的神經網路現在已經成為可能,其就是我們已知的深度學習。在深度學習領域的一個主要工具就是卷積神經網路(CNNs)。

CNNs具有特徵不必人工去選擇的優勢,相反,濾波器值在整個訓練過程中都將被調整。基本上,在訓練中採用帶標籤的圖像,CNN儘力去找能夠合理的區分類的特徵。這就意味著,當訓練一個CNN的時候,不像一些其他的分類方法,它不必要為分類器去指定特徵。但是,神經網路架構,例如層的順序和數量,超參數等,必須被指定。因為這個任務是相當複雜的,CNNs目前僅僅在HALCON中用於OCR的分類,僅僅用預訓練的字體普遍性。也就是說,至今訓練你自己的基於CNN的OCR分類器還是不可能的。CNNs不能用於一般特徵的分類或者圖像的分割。下面,一些CNN理論的基本概念被描述。

CNNs是受人類和許多動物的視覺皮質的啟發。當我們看特定方向的邊緣時,一些在大腦中單獨的神經細胞就會有反應。當暴露在垂直邊緣,一些神經元將被激活;當展示了水平或者對角邊緣的時候,一些神經元將被激活。類似的,卷積神經網路通過尋找底層特徵,如邊緣或者曲線類執行分類,然後建立起更抽象的概念。這些概念可能類似於文本,logo或者機器部件。這些特徵在訓練的過程中被自動的選擇。圖像被傳入到一系列層中得到一個輸出。在下文,一些常用類型的層將被介紹。特別是卷積,池化,ReLU和全連接層。

卷積層

第一層通常是一個卷積層。這裡,一個濾波器沿著圖像移動,如下圖:

圖1:一個3x3的濾波器在5x5大小的圖像上移動,移動在左上角開始,結果是一個3x3的特徵映射。

濾波器(或者內核)是一個數組(或者權重)。一個例子如圖2。圖像的原始像素值同濾波器的權重進行相乘,這些相乘值被相加求總和。由於這代表了一個卷積,故這個層的名字被叫為「卷積層」。

圖2: 一個5x5的濾波器在一張16x16大小的圖像上移動。濾波器被設計去尋找水平邊。如果被濾波的5x5區域內包含一個水平邊,那麼所求和是一個大的數。如果這沒有水平邊,和將相對較小。

這個卷積在整張圖像上被執行,結果被稱為特徵映射。在圖2中,濾波的結果是一個數組(特徵映射),其提供了在圖像中哪裡找到水平邊的信息。在實際中,許多不同的濾波器被用來去決定圖像的特徵。結果,單個濾波器產生2維的激活映射,其然後沿著第三維被疊加,產生了3維的輸出容量(見圖4)。

池化層

池化是一個非線性下採樣的形式,其減少了圖像表現的空間尺寸,同時還有神經網路中參數的數量,進而也減少了過擬合的風險。一個常用的方法被稱為「最大池化」(見圖3)。它將輸入圖像劃分為小矩形,然後返回每個矩形的最大值。

圖3:「最大池化」劃分一個4x4的輸入圖像未4個不重疊的矩形,並返回每一個矩形的最大值

矯正的線性單元(ReLU)層

一個CNNN必須能夠去接近非線性函數,從而,它需要至少一個非線性層。ReLU層已經變成了一個常用的方法,因為它們能夠被很快的計算出來。

全連接的層

在一個CNN中,最後一層通常是一個全連接層。這個層類似於MLP的一個隱含層,其獲得先前層的輸出,其代表了更高層特徵的特徵映射。然後,基於這些特徵,類別被選定。例如,如果圖像展示了一個狗(類:狗),這可能是代表更高層特徵的特徵映射,如爪子,鼻子或者毛。這些特徵映射被自動創建。

基本配置

一個簡單CNN分類器的架構看起來是這樣的:

輸入圖像->卷積層->矯正的線性單元(ReLU)->卷積層->ReLU->池化層->ReLU->卷積層->ReLU->池化層->全連接層

圖4:一個卷積神經網路的簡化配置。一個卷積層通常緊跟一個池化層。在最後,一個全連接層被用來計算輸出。另外,ReLU層通常在這些層之間,來增加神經網路的非線性屬性。

每一層用前邊層的輸出(見圖4)。第一層檢測底層特徵,如邊緣或者曲線。接下來層的特徵映射描述了更高層特徵。在一個CNN最後的濾波器感知來自原始圖像更大區域的信息。這樣的話,它就能夠預測一個對象的類別。

基於CNN的OCR分類器的優勢在於其泛化能力。這樣,當開發已給OCR應用時候,推薦首先嘗試用預訓練的基於CNN的OCR字體普遍性,並且在嘗試其他任何OCR分類方法之前去評估結果。

覺得有幫助?請轉載分享給你們的朋友吧。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 HalconVision 的精彩文章:

HALCON中級篇:條碼識別

TAG:HalconVision |