目標檢測入門(三):基礎網路演進、分類與定位的權衡

關於作者: @李家丞 同濟大學數學系本科在讀,現為格靈深瞳演算法部實習生

作者個人主頁:李家丞|個人主頁|關於我

本章是《乾貨 | 目標檢測入門,看這篇就夠了》的第三篇連載。搭乘電梯可直達第一篇、第二篇、第四篇和最終篇:

格靈深瞳DeepGlint:乾貨 | 目標檢測入門,看這篇就夠了?

zhuanlan.zhihu.com圖標格靈深瞳DeepGlint:目標檢測入門(二):模型的評測與訓練技巧?

zhuanlan.zhihu.com圖標格靈深瞳DeepGlint:目標檢測入門(四):特徵復用、實時性?

zhuanlan.zhihu.com圖標格靈深瞳DeepGlint:目標檢測入門最終篇:拾遺及總結?

zhuanlan.zhihu.com圖標

(三)目標檢測新趨勢之基礎網路結構演進、分類與定位的權衡

從此篇開始,我們對近幾年檢測領域的工作提供一個概覽,並試圖從中歸納出一些趨勢。由於篇幅和視野所限,文章不會求全,相對注重思路的演進,淡化實驗結果的報告。事實上,我們並沒有看到這一任務上的"The Best Paper"和"The Final Paper",現階段的工作遠遠沒有到解決這一問題的程度,深度學習模型也仍然是非常年輕的研究領域。

實驗結果方面,筆者維護了一個檢測模型進展追蹤項目:Obj_Det_Progress_Tracker,收集了論文匯報的在VOC和COCO上的精度進展,可供參考。

文章結構

本篇關注基礎網路架構的演進和處理分類、定位這一矛盾問題上的進展。

基礎網路結構的演進

基礎網路(Backbone network)作為特徵提取器,對檢測模型的性能有著至關重要的影響。在分類任務的權威評測集ImageNet上,基於卷積網路的方法已經取得超越人類水平的進步,並也促使ImageNet完成了她的歷史使命。這也是機器視覺領域的整體進步,優秀的特徵、深刻的解釋都為其他任務的應用提供了良好的基礎。在本節中,我們選取了幾個在檢測任務上成功應用的基礎網路做一些介紹。

卷積網路結構演進的趨勢

筆者認為,卷積網路已經有如下幾個經典的設計範式:

  • Repeat. 由AlexNet和VGG等開拓,被之後幾乎所有的網路採用。即堆疊相同的拓撲結構,整個網路成為模塊化的結構。
  • Multi-path. 由Inception系列發揚,將前一層的輸入分割到不同的路徑上進行變換,最後拼接結果。
  • Skip-connection. 最初出現於Highway Network,由ResNet發揚並成為標配。即建立淺層信息與深層信息的傳遞通道,改變原有的單一線性結構。

以這些範式為脈絡整理卷積網路的演進歷程,可以歸納出下面的圖景:

CNN的經典設計範式

需要說明的是,上圖並不能概括完全近年來卷積網路的進步,各分支之間也有很多相互借鑒和共通的特徵,而致力於精簡網路結構的工作如SqueezeNet等則沒有出現。除了上面歸納的三個範式,卷積網路結構方面另一個重要的潮流是深度可分離卷積(Depth-wise seperable convolution)的應用。下面我們選擇幾個在檢測任務上成功應用的基礎網路結構進行介紹。

ResNet: 殘差學習

Deep Residual Learning for Image Recognition

殘差單元將原函數分解為殘差

作者將網路的訓練解釋為對某一複雜函數的擬合,通過添加跳躍連接,變對這一函數的擬合為每層對某一殘差的擬合(有點Boosting的意思),引入的恆等項也讓BP得到的梯度更為穩定。

殘差網路以skip-connection的設計較為成功地緩解了深層網路難以收斂的問題,將網路的深度提高了一個數量級,也帶動了一系列對殘差網路的解釋研究和衍生網路的提出。

在檢測領域,VGG作為特徵提取器的地位也逐漸被ResNet系列網路替代,文章中以ResNet作為基礎網路的Faster R-CNN也常作為後續工作的基線進行比較。

Xception:可分離卷積的大面積應用

Xception: Deep Learning with Depthwise Separable Convolutions

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:新的維度

Aggregated Residual Transformations for Deep Neural Networks

本文提出了深度網路的新維度,除了深度、寬度(Channel數)外,作者將在某一層並行transform的路徑數提取為第三維度,稱為"cardinality"。跟Inception單元不同的是,這些並行路徑均共享同一拓撲結構,而非精心設計的卷積核並聯。除了並行相同的路徑外,也添加了層與層間的shortcut connection。

相比Inception-ResNet,ResNeXt相當於將其Inception Module的每條路徑規範化了,並將規範後的路徑數目作為新的超參數。

ResNeXt的基本單元

上圖中,路徑被擴展為多條,而每條路徑的寬度(channel數)也變窄了(64->4)。

在近期Facebook開源的Detectron框架中,ResNeXt作為Mask R-CNN的基礎網路也取得了非常高的精度。

SENet:卷積網路的Attention組件

Squeeze and Excitation Network

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:網路結構搜索

Learning Transferable Architectures for Scalable Image Recognition

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

R-FCN: Object Detection via Region-based Fully Convolutinal Networks

文章指出了檢測任務之前的框架存在不自然的設計,即全卷積的特徵提取部分+全連接的分類器,而表現最好的圖像分類器都是全卷積的結構(ResNet等)。這篇文章提出採用"位置敏感分數圖(Position Sensitive Score Map)"的方法來使檢測網路保持全卷積結構的同時又擁有位置感知能力。

R-FCN中位置敏感分數圖

位置敏感分數圖的生成有兩個重要操作,一是生成更"厚"的feature map,二是在RoI Pooling時選擇性地輸入feature map。

Faster R-CNN中,經過RPN得到RoI,轉化成分類任務,還加入了一定量的卷積操作(ResNet中的conv5部分),而這一部分卷積操作是不能共享的。R-FCN則著眼於全卷積結構,利用卷積操作在Channel這一維度上的自由性,賦予其位置敏感的意義。下面是具體的操作:

  • 在全卷積網路的最後一層,生成 k^{2}(C+1) 個Channel的Feature map,其中 C 為類別數, k^{2} 代表 k 	imes k 網格,用於分別檢測目標物體的 k 	imes k個部分。即是用不同channel的feature map代表物體的不同局部(如左上部分,右下部分)。
  • 將RPN網路得到的Proposal映射到上一步得到的feature map(厚度為 k^{2}(C+1) )後,相應的,將RoI等分為 k 	imes k個bin,對第 (i, j) 個bin,僅考慮對應 (i, j) 位置的 (C+1) 個feature map,進行如下計算:其中 (x_{0},y_{0}) 是這個RoI的錨點,得到的即是 (i, j) 號bin對 C 類別的相應分數。

  • 經過上一步,每個RoI得到的結果是 k^{2}(C+1) 大小的分數張量, k 	imes k編碼著物體的局部分數信息,進行vote(平均)後得到 (C+1) 維的分數向量,再接入softmax得到每一類的概率。

上面第二步操作中"僅選取第 (i, j) 號feature map"是位置信息產生意義的關鍵。

這樣設計的網路結構,所有可學習的參數都分布在可共享的卷積層,因而在訓練和測試性能上均有提升。

小結

R-FCN是對Faster R-CNN結構上的改進,部分地解決了位置不變性和位置敏感性的矛盾。通過最大化地共享卷積參數,使得在精度相當的情況下訓練和測試效率都有了很大的提升。

Deformable Convolution Networks

Deformable Convolution Networks

本篇文章則提出在卷積和RoI Pooling兩個層添加旁路顯式學習偏置,來建模物體形狀的可變性。這樣的設計使得在保持目標全局上位置敏感的同時,對目標局部的建模添加靈活性。

可變形卷積的旁支

RoI Pooling的旁支

如上兩圖所示,通過在卷積部分添加旁路,顯式地用一部分張量表示卷積核在圖片不同部分的偏移情況,再添加到原有的卷積操作上,使卷積具有靈活性的特徵,提取不同物體的特徵時,其形狀可變。而在RoI Pooling部分,旁路的添加則賦予採樣塊可活動的特性,更加靈活地匹配不同物體的形狀。

可變形卷積和RoIPooling的示例

在MS COCO Chanllege 2017上,MSRA團隊的結果向我們展示了可變形卷積在提升檢測模型性能上的有效性:

可變形卷積帶來的增益

總結

本篇中,我們概述了檢測領域基礎網路的演進和處理分類定位這一矛盾問題上的進展,基礎網路提供更具有語義級區分性的特徵,為圖像提供更有意義的編碼,而分析分類和定位這一對矛盾,則提供給我們對這一任務另一種理解和分治的角度。在下一篇中,我們將關注基礎網路提取的特徵如何更有效地在檢測模型的頭部網路中得到利用,以及面向實時性檢測的一些進展。

注意:《乾貨 | 目標檢測入門,看這篇就夠了》共包含五章節,還剩最後兩章節我們將在近期po出,請家大家持續關注。歡迎大家評論交流。

同時,我司校招也即將開始,歡迎各位關注我司公眾號,第一時間獲取資訊。

weixin.qq.com/r/u0McBE7 (二維碼自動識別)

推薦閱讀:

【目標檢測簡史】Mask-RCNN
PASCAL VOC數據集的標註格式
目標檢測入門(二):模型的評測與訓練技巧
基於深度學習的「目標檢測」演算法綜述

TAG:目標檢測 | 計算機視覺 | 格靈深瞳 |