(三)基礎網路演進、分類與定位的權衡
轉載自知乎:https://zhuanlan.zhihu.com/p/34142321
關於作者: @李家丞同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生。
-------------------------------------------------------------------------------------------------------
近年來,深度學習模型逐漸取代傳統機器視覺方法而成為目標檢測領域的主流演算法,本系列文章將回顧早期的經典工作,並對較新的趨勢做一個全景式的介紹,幫助讀者對這一領域建立基本的認識。由於作者學歷尚淺,水平有限,不實和不當之處也請指出和糾正,歡迎大家評論交流。
-------------------------------------------------------------------------------------------------------
從此篇開始,我們對近幾年檢測領域的工作提供一個概覽,並試圖從中歸納出一些趨勢。由於篇幅和視野所限,文章不會求全,相對注重思路的演進,淡化實驗結果的報告。事實上,我們並沒有看到這一任務上的"The Best Paper"和"The Final Paper",現階段的工作遠遠沒有到解決這一問題的程度,深度學習模型也仍然是非常年輕的研究領域。
實驗結果方面,筆者維護了一個檢測模型進展追蹤專案:Obj_Det_Progress_Tracker
文章結構
本篇關注基礎網路架構的演進和處理分類、定位這一矛盾問題上的進展。
基礎網路結構的演進
基礎網路(Backbone network)作為特徵提取器,對檢測模型的效能有著至關重要的影響。在分類任務的權威評測集ImageNet上,基於卷積網路的方法已經取得超越人類水平的進步,並也促使ImageNet完成了她的歷史使命。這也是機器視覺領域的整體進步,優秀的特徵、深刻的解釋都為其他任務的應用提供了良好的基礎。在本節中,我們選取了幾個在檢測任務上成功應用的基礎網路做一些介紹。
卷積網路結構演進的趨勢
筆者認為,卷積網路已經有如下幾個經典的設計正規化:
- Repeat. 由AlexNet和VGG等開拓,被之後幾乎所有的網路採用。即堆疊相同的拓撲結構,整個網路成為模組化的結構。
- Multi-path. 由Inception系列發揚,將前一層的輸入分割到不同的路徑上進行變換,最後拼接結果。
- Skip-connection. 最初出現於Highway Network,由ResNet發揚併成為標配。即建立淺層資訊與深層資訊的傳遞通道,改變原有的單一線性結構。
以這些正規化為脈絡整理卷積網路的演進歷程,可以歸納出下面的圖景:
CNN的經典設計正規化需要說明的是,上圖並不能概括完全近年來卷積網路的進步,各分支之間也有很多相互借鑑和共通的特徵,而致力於精簡網路結構的工作如SqueezeNet等則沒有出現。除了上面歸納的三個正規化,卷積網路結構方面另一個重要的潮流是深度可分離卷積(Depth-wise seperable convolution)的應用。下面我們選擇幾個在檢測任務上成功應用的基礎網路結構進行介紹。
ResNet: 殘差學習
殘差單元將原函式分解為殘差
作者將網路的訓練解釋為對某一複雜函式的擬合,通過新增跳躍連線,變對這一函式的擬合為每層對某一殘差的擬合(有點Boosting的意思),引入的恆等項也讓BP得到的梯度更為穩定。
殘差網路以skip-connection的設計較為成功地緩解了深層網路難以收斂的問題,將網路的深度提高了一個數量級,也帶動了一系列對殘差網路的解釋研究和衍生網路的提出。
在檢測領域,VGG作為特徵提取器的地位也逐漸被ResNet系列網路替代,文章中以ResNet作為基礎網路的Faster R-CNN也常作為後續工作的基線進行比較。
Xception:可分離卷積的大面積應用
Xception網路可以看做對Inception系列網路的推進,也是深度可分離卷積的成功應用。
文章指出,Inception單元背後的假設是跨Channel和跨空間的相關性可以充分解耦,類似的還有長度和高度方向上的卷積結構(在Inception-v3裡的3×3卷積被1×3和3×1卷積替代)。
進一步的,Xception基於更強的假設:跨channel和跨空間的相關性完全解耦。這也是深度可分離卷積所建模的理念。
一個簡化的Inception單元:
簡化的Inception單元,去掉了Pooling分支
等價於:
等價的簡化Inception單元,將1x1卷積合併
將channel的group推向極端,即每個channel都由獨立的3×3卷積處理:
把分組的粒度降為1這樣就得到了深度可分離卷積。
Xception最終的網路結構如下,簡單講是線性堆疊的Depthwise Separable卷積,並附加了Skip-connection。
Xceptiong的網路結構在MS COCO Chanllege 2017中,MSRA團隊以對齊版本的Xception為基礎網路取得前列的成績,一定程度上說明了這一網路提取特徵的能力;另一方面,Xception的一個改編版本也被Light-head R-CNN的工作(將在下一篇的實時性部分介紹)應用,以兩階段的方式取得了精度和速度都超越SSD等單階段檢測器的表現。
ResNeXt:新的維度
本文提出了深度網路的新維度,除了深度、寬度(Channel數)外,作者將在某一層並行transform的路徑數提取為第三維度,稱為"cardinality"。跟Inception單元不同的是,這些並行路徑均共享同一拓撲結構,而非精心設計的卷積核並聯。除了並行相同的路徑外,也添加了層與層間的shortcut connection。
相比Inception-ResNet,ResNeXt相當於將其Inception Module的每條路徑規範化了,並將規範後的路徑數目作為新的超引數。
ResNeXt的基本單元
上圖中,路徑被擴充套件為多條,而每條路徑的寬度(channel數)也變窄了(64->4)。
在近期Facebook開源的Detectron框架中,ResNeXt作為Mask R-CNN的基礎網路也取得了非常高的精度。
SENet:卷積網路的Attention元件
SENet是最後一屆ImageNet Challenge的奪冠架構,中心思想是新增旁路為channel之間的相關性進行建模,可以認為是channel維度的attention。
Squeeze和Excitation分支SENet通過'特徵重標定'(Feature Recalibration)來完成channel層面的注意力機制。具體地,先通過Squeeze操作將特徵的空間性壓縮掉,僅保留channel維度,再通過Excitation操作為每個特徵通道生成一個權重,用於顯式地建模channel之間的相關性,最後通過Reweight操作將權重加權到原來的channel上,即構成不同channel間重標定。
SENet可以作為網路中模組間的額外連線附屬到原有的經典結構上,其Squeeze操作在壓縮資訊的同時也降低了這一附屬連線的開銷。
SE作為額外部件新增在經典結構上經SENet改進的ResNet被UCenter團隊應用在MS COCO Chanllenge 2017上,也取得了不錯的效果。
NASNet:網路結構搜尋
NAS(Neural Architecture Searh,神經網路結構搜尋)的框架最早出現於作者的另一項工作Neural Architecture Search with Reinforcement Learning,其核心思想是用一個RNN學習定義網路結構的超參,通過強化學習的框架來更新這一RNN來得到更好表現的網路結構。
NAS的結構在本文中,作者參考本節最初提到的"Repeat"正規化,認為在小資料集上搜索到的結構單元具有移植性和擴充套件性,將這個結構單元通過堆疊得到的大網路能夠在較大資料集上取得較好的表現。這就構成了文章的基本思路:將網路搜尋侷限在微觀的區域性結構上,以相對原工作較小的開銷(實際開銷仍然巨大)得到可供擴充套件的網路單元,再由這些單元作為基本部件填入人工設計的"元結構"。
微觀層面,作者仍選擇用RNN作為Controller,挑選跳躍連線、最大池化、空洞卷積、深度可分離卷積等等操作構成基本搜尋空間,以逐元素相加(element-wise addition)和拼接(concatenation)作為合併操作,並重復一定的構建次數來搜尋此基本單元。
RNN作為Controller的微觀結構搜尋,右為示例結構巨集觀層面,將基本單元分為Normal Cell(不改變feature map大小)和Reduction Cell(使feature map的spatial維度減半,即stride=2),交替堆疊一定數量的Normal Cell和Reduction Cell形成下面的元結構。
NASNet在不同資料集上的元結構,ImageNet的圖片具有更多的畫素數,需要更多的Reduction單元
NASNet採取了自動搜尋的方式去設計網路的結構,人工的部分遷移到對搜尋空間的構建和評測指標的設立上,是一種"元學習"的策略。應用在檢測領域,NASNet作為基礎框架的Faster R-CNN取得了SOTA的表現,也支撐了這一搜索得到結構的泛化效能。在最近的工作中,作者團隊又設計了ENAS降低搜尋的空間和時間開銷,繼續推動著這一方向的研究。
分類與定位問題的權衡
從R-CNN開始,檢測模型常採用分類任務上表現最好的卷積網路作為基礎網路提取特徵,在其基礎上新增額外的頭部結構來實現檢測功能。然而,分類和檢測所面向的場景不盡相同:分類常常關注具有整體語義的影象(第二篇中介紹COCO資料集中提到的iconic image),而檢測則需要區分前景和背景(non-iconic image)。
分類網路中的Pooling層操作常常會引入平移不變性等使得整體語義的理解更加魯棒,而在檢測任務中我們則需要位置敏感的模型來保證預測位置的精確性,這就產生了分類和定位兩個任務間的矛盾。
R-FCN
文章指出了檢測任務之前的框架存在不自然的設計,即全卷積的特徵提取部分+全連線的分類器,而表現最好的影象分類器都是全卷積的結構(ResNet等)。這篇文章提出採用"位置敏感分數圖(Position Sensitive Score Map)"的方法來使檢測網路保持全卷積結構的同時又擁有位置感知能力。
R-FCN中位置敏感分數圖
位置敏感分數圖的生成有兩個重要操作,一是生成更"厚"的feature map,二是在RoI Pooling時選擇性地輸入feature map。
Faster R-CNN中,經過RPN得到RoI,轉化成分類任務,還加入了一定量的卷積操作(ResNet中的conv5部分),而這一部分卷積操作是不能共享的。R-FCN則著眼於全卷積結構,利用卷積操作在Channel這一維度上的自由性,賦予其位置敏感的意義。下面是具體的操作:
- 在全卷積網路的最後一層,生成 個Channel的Feature map,其中 為類別數, 代表 網格,用於分別檢測目標物體的 個部分。即是用不同channel的feature map代表物體的不同區域性(如左上部分,右下部分)。
- 將RPN網路得到的Proposal對映到上一步得到的feature map(厚度為 )後,相應的,將RoI等分為 個bin,對第 個bin,僅考慮對應 位置的 個feature map,進行如下計算:其中 是這個RoI的錨點,得到的即是 號bin對 類別的相應分數。
- 經過上一步,每個RoI得到的結果是 大小的分數張量, 編碼著物體的區域性分數資訊,進行vote(平均)後得到 維的分數向量,再接入softmax得到每一類的概率。
上面第二步操作中"僅選取第 號feature map"是位置資訊產生意義的關鍵。
這樣設計的網路結構,所有可學習的引數都分佈在可共享的卷積層,因而在訓練和測試效能上均有提升。
小結
R-FCN是對Faster R-CNN結構上的改進,部分地解決了位置不變性和位置敏感性的矛盾。通過最大化地共享卷積引數,使得在精度相當的情況下訓練和測試效率都有了很大的提升。
Deformable Convolution Networks
本篇文章則提出在卷積和RoI Pooling兩個層新增旁路顯式學習偏置,來建模物體形狀的可變性。這樣的設計使得在保持目標全域性上位置敏感的同時,對目標區域性的建模新增靈活性。
可變形卷積的旁支RoI Pooling的旁支如上兩圖所示,通過在卷積部分新增旁路,顯式地用一部分張量表示卷積核在圖片不同部分的偏移情況,再新增到原有的卷積操作上,使卷積具有靈活性的特徵,提取不同物體的特徵時,其形狀可變。而在RoI Pooling部分,旁路的新增則賦予取樣塊可活動的特性,更加靈活地匹配不同物體的形狀。
可變形卷積和RoIPooling的示例在MS COCO Chanllege 2017上,MSRA團隊的結果向我們展示了可變形卷積在提升檢測模型效能上的有效性:
可變形卷積帶來的增益總結
本篇中,我們概述了檢測領域基礎網路的演進和處理分類定位這一矛盾問題上的進展,基礎網路提供更具有語義級區分性的特徵,為影象提供更有意義的編碼,而分析分類和定位這一對矛盾,則提供給我們對這一任務另一種理解和分治的角度。在下一篇中,我們將關注基礎網路提取的特徵如何更有效地在檢測模型的頭部網路中得到利用,以及面向實時性檢測的一些進展。
-----------------------------------------------------------------------------------------------------------*-*----
更多詳細內容請關注公眾號:目標檢測和深度學習
---------------------------------------------------------------------------------------------------------------…^-^……---------