【連載22】OverFeat
- 2020 年 3 月 16 日
- 筆記
電腦視覺有三大任務:分類(識別)、定位、檢測,從左到右每個任務是下個任務的子任務,所以難度遞增。OverFeat是2014年《OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks》中提出的一個基於卷積神經網路的特徵提取框架,論文的最大亮點在於通過一個統一的框架去解決影像分類、定位、檢測問題,並提出feature map上的一個點可以還原並對應到原圖的一個區域,於是一些在原圖上的操作可以轉到在feature map上做,這點對以後的檢測演算法有較深遠的影響。它在ImageNet 2013的task 3定位任務中獲得第一,在檢測和分類任務中也有不錯的表現。
OverFeat分類任務
文中借鑒了AlexNet的結構,並做了些結構改進和提高了線上inference效率,結構如下:

相對AlexNet,網路結構幾乎一樣,區別在於:
去掉了LRN層,不做額外歸一化操作 使用區域非重疊pooling 前兩層使用較小的stride,從而產生較大的feature map,提高了模型精度
- Offset Pooling 分類任務中一大亮點是提出利用Offset Pooling做多尺度分類的概念,在一維情況的解釋如下:

a圖代表經過第5個卷積層後的feature map有20個神經元,選取stride=3做非重疊pooling,有以下3種方式:(通常我們只使用第一種)
△=0分組:[1,2,3],[4,5,6],[7,8,9],…,[16,17,18] △=1分組:[2,3,4],[5,6,7],[8,9,10],…,[17,18,19] △=2分組:[3,4,5],[6,7,8],[9,10,11],…,[18,19,20]
在二維情況下,輸入影像在經過FCN及第5個卷積層後得到若干個feature map,使用3×3 filter在feature map上做滑動窗口(注意此時不在原圖上做,節省大量計算消耗)。按上圖的原理,滑動窗口總共要做9次,從(0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (2,0), (2,1), (2,2)處分別滑動。得到的feature map分別經過後面的3個FC層,得到多組特徵,最後拼接起來得到最終特徵向量並用於分類。
- Inference自適應輸入圖片大小 訓練模型時往往採用的是固定大小圖片(後面的SPP-net、Fast R-CNN等模型通過SPP或ROI pooling可以允許輸入大小可變),當inference階段遇到比規定大小更大的圖片時怎麼辦?可以利用Fully Convolutional Networks(《Fully Convolutional Networks for Semantic Segmentation》)的思想:把卷積層到全連接層映射看成對整張圖的卷積操作,把全連接層到全連接層的映射可以看成採用1×1卷積核的卷積操作。以下圖說明:

綠色代表卷積核,藍色代表feature map,當輸入大於規定尺寸時,在黃色區域會有額外計算,最終的輸出也不是一個值而是一個矩陣,可以用各種策略輸出最終結果,比如一種簡單做法是用矩陣平均值作為最終分類結果。
OverFeat定位任務
- 回歸訓練 相對於分類問題,定位問題可以與其共享前1~5層網路結構,這種方式也被後面的模型所借鑒,區別是增加了一個l_2的回歸損失函數,基本思路是對同一張圖縮放產生多尺度圖片做輸入,用回歸網路預測Bounding Box(後面簡寫為BB)後再做融合,需要注意回歸層是與類別相關的,如果有1000個類則有1000個版本,每類一個。回歸示意圖如下:

第5層pooling結果作為輸入,共256個通道,以FCN的思想理解,先走一個4096通道的全連接層再走一個1024通道的全連接層,與前面類似使用Offet Pooing和滑動窗口對每類生成一個4通道矩陣,4個通道分別代表BB的四條邊的坐標。
- 網路輸出 回歸網路的輸出例子如下,單圖下生成多個BB的預測,這些BB傾向於收斂到一個固定位置並且可以定位物體姿勢多樣化的情況,當然計算複雜度不小,所以沒法用到實時檢測中。

- 預測融合策略 a. 同一幅圖在6種不同縮放尺度下分別輸入分類網路,每種尺度下選top k類別作為標定,用表示; b. 對任意尺度s分別輸入BB 回歸網路,用表示每個類別對應的BB集合; c. 將所有合併為大集合; d. 重複以下過程直到結束: 其中match_score為兩個BB的中心點之間的距離及BB重合區域面積之和,box_merge為兩個BB坐標均值,過程很好理解:所有分類(如可能有熊、鯨魚等)的BB被放在一個大集合,多尺度得到的分類集合中,正確分類會佔有優勢(置信度、匹配度、BB連續度等),隨著迭代的過程正確分類的BB被加強,錯誤分類的BB被減弱直到消失,不過這個方法確實複雜,可以看到在後來的演算法有各種改進和替換。


OverFeat檢測任務
與分類類似但需要考慮位置資訊,同樣採用網路結構共享特徵提取,在預測分類中還需要加「背景」這一類。
程式碼實踐
可參見:OverFeat