本期開小灶Heyro將帶領大家進入下一趟旅程——基于卷積神經網絡的圖像分類算法講解,從而幫助大家了解在卷積神經網絡結構下衍生出的被用于圖像分類的經典算法。
在了解圖像分類算法以前,我們先來了解“何為圖像分類”。
圖像分類的核心是從給定的分類集合中給圖像分配一個標簽的任務。簡言之,我們需要對一個輸入圖像進行分析后返回一個對應的分類標簽,標簽來自預先定義的可能類別集。圖像分類的任務即為正確給出輸入圖像的類別或輸出不同類別的概率。例如,我們先假設一個含有可能類別的類別集:
Categories = {cat, dog, fox}
然后,我們向分類系統提供一張狐貍犬的圖片。
經過分類系統的處理,最終輸出可以是單一標簽dog,也可以是基于概率的多個標簽,例如cat:1%, dog:94%,fox:5% 。
計算機并不能像人類一樣快速通過視覺系統識別出圖像信息的語義。對于計算機而言,RGB圖像是由一個個像素數值構成的高維矩陣(張量)。計算機識別圖像的任務即尋找一個函數關系,該函數可將高維矩陣信息映射到一個具體的類別標簽中。利用計算機實現圖像分類目的過程隨即衍生出圖像分類算法。
圖像分類算法的起源——神經認知機
傳統的圖像識別模型一般包括:底層特征學習>特征編碼>空間約束>分類器設計>模型融合等幾個流程。
2012年Alex Krizhevsky提出的CNN(卷積神經網絡)模型在ImageNet大規模視覺識別比賽(ILSVRC)中脫穎而出,其效果大大超越了傳統的圖像識別方法,該模型被稱為AlexNet。
基于卷積神經網絡的圖像分類算法起源最早可追溯到日本學者福島邦彥提出的neocognition(神經認知機)神經網絡模型。
福島邦彥于1978年至1984年研制了用于手寫字母識別的多層自組織神經網絡——認知機。福島邦彥在認知機中引入了最大值檢出等概念。簡言之,當網格中某種神經元損壞時,該神經元立即可由其他神經元來代替。由此一來,認知機就具有較好的容錯能力。
但是,認知機的網絡較為復雜,它對輸入的大小變換及平移、旋轉等變化并不敏感。雖然它能夠識別復雜的文字,但卻需要大量的處理單元和連接,這使得其硬件實現較為困難。
而福島邦彥在1980年提出的“神經認知機”神經網絡模型卻能夠很好地應對以上問題。
該模型借鑒了生物的視覺神經系統。它對模式信號的識別優于認知機。無論輸入信號發生變換、失真,抑或被改變大小等,神經認知機都能對輸入信號進行處理。但是,該模型被提出后一直未受到較大關注,直至AlexNet在ILSVRC中大獲全勝,卷積神經網絡的潛力才為業界所認知。
深度學習算法
自AlexNet之后,深度學習的發展極為迅速,網絡深度也在不斷地快速增長,隨后出現了VGG(19層)、GoogleNet(22層)、ResNet(152層),以及SENet(252層)等深度學習算法。
隨著模型深度和結構設計的發展,ImageNet分類的Top-5錯誤率也越來越低。在ImageNet上1000種物體的分類中,ResNet的Top-5錯誤率僅為3.57%。在同樣的數據集上,人眼的識別錯誤率約為5.1%,換言之,目前深度學習模型的識別能力已經超過了人眼。
在卷積神經網絡的歷史上,比較有里程碑意義的算法包括AlexNet、VGG、Inception (GoogleNet是Inception系列中的一員),以及ResNet。
在本期開小灶中,我們將首先為大家介紹經典圖像分類算法AlexNet。
AlexNet 網絡結構
作為G. Hinton代表作的AlexNet是深度學習領域最重要的成果之一。下面讓我們一起從左到右依次認識這個結構。
在AlexNet網絡結構(如下圖所示)中,輸入為一個224×224大小的RGB圖像。
AlexNet網絡結構
第一層卷積,用48個11×11×3的卷積核計算出48個55×55大小的特征圖,用另外48個11×11×3的卷積核計算出另外48個55×55大小的特征圖,這兩個分支的卷積步長都是4,通過卷積把圖像的大小從224′224減小為55×55。第一層卷積之后,進行局部響應歸一化 (LRN) 以及步長為2、池化窗口為3×3的最大池化,池化輸出的特征圖大小為27×27。
第二層卷積,用兩組各128個5×5×48的卷積核對兩組輸入的特征圖分別進行卷積處理,輸出兩組各128個27×27的特征圖。第二層卷積之后,做局部響應歸一化和步長為2、池化窗口為3×3的最大池化,池化輸出的特征圖大小為13×13。
第三層卷積,將兩組特征圖合為一組。采用192個3×3×256的卷積核對所有輸入特征圖做卷積運算,再用另外192個3×3×256的卷積核對所有輸入特征圖做卷積運算,輸出兩組各192個13×13的特征圖。
第四層卷積,對兩組輸入特征圖分別用192個3×3×192的卷積核做卷積運算。
第五層卷積,對兩組輸入特征圖分別用128個3×3×192的卷積核做卷積運算。第五層卷積之后,做步長為2、池化窗口為3×3的最大池化,池化輸出的特征圖大小為6×6。
第六層和第七層的全連接層都有兩組神經元(每組2048個神經元)。
第八層的全連接層輸出1000種特征并送到softmax中,softmax輸出分類的概率。
AlexNet 技術創新點
相較于傳統人工神經網絡而言,AlexNet的技術創新體現在四個方面。
其一為Dropout(隨機失活)。Dropout于2012年由G. Hinton等人提出。該方法通過隨機舍棄部分隱層節點來緩解過擬合。目前,Dropout已經成為深度學習訓練常用的技巧之一。
使用Dropout進行模型訓練的過程為:a. 以一定概率隨機舍棄部分隱層神經元,即將這些神經元的輸出設置為0;b.一小批訓練樣本經過正向傳播后,在反向傳播更新權重時不更新其中與被舍棄神經元相連的權重;c. 恢復被刪除神經元,并輸入另一小批訓練樣本;d. 重復步驟a ~ c ,直到處理完所有訓練樣本。
其二為LRN(局部響應歸一化)。LRN對同一層的多個輸入特征圖在每個位置上做局部歸一化,從而提升高響應特征并抑制低響應特征。LRN的輸入是卷積層輸出特征圖經過ReLU激活函數后的輸出。但近年來業界發現LRN層作用有限,因此目前使用LRN的研究并不多。
其三是Max Pooling(最大池化)。最大池化可以避免特征被平均池化模糊,從而提高特征的魯棒性。在AlexNet之前,很多研究用平均池化;從AlexNet開始,業界公認最大池化的效果比較好。
其四是ReLU激活函數。在AlexNet之前,常用的激活函數是sigmoid和tanh。而ReLU函數很簡單,我們在之前的開小灶中為大家講解過ReLU激活函數的特征,即輸入小于0時輸出0,輸入大于0時輸出等于輸入。看似非常簡單的ReLU函數卻在訓練時帶來了非常好的效果,這是業界在AlexNet之前未曾料想到的。AlexNet在卷積層和全連接層的輸出均使用ReLU激活函數,從而有效提高訓練時的收斂速度。
AlexNet通過把看似平凡的技術組合起來取得了驚人的顯著效果。
正是由于AlexNet采用了深層神經網絡的訓練思路,并輔以ReLU函數、Dropout及數據擴充等操作,使得圖像識別真正走向了與深度學習結合發展的方向。
原文標題:基于卷積神經網絡的圖像分類算法講解
文章出處:【微信公眾號:機器視覺智能檢測】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
神經網絡
+關注
關注
42文章
4771瀏覽量
100772 -
算法
+關注
關注
23文章
4612瀏覽量
92901
原文標題:基于卷積神經網絡的圖像分類算法講解
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論