論文及代碼
論文地址:https://arxiv.org/abs/1904.04402
代碼:http://www.svcl.ucsd.edu/projects/universal-detection/
概述
文章提出了一個通用的目標檢測系統,適用於不同的圖像領域而不需要該領域的先驗知識。通過引入一個新的適應層系列(基於SE和新的領域-關注機制)。在所提出的通用檢測器中,所有參數和計算都在領域之間共享,並且單個網絡始終處理所有領域。作者在新的數據集上做實驗(11個不同的目標檢測數據集組成),檢測效果比一組單領域檢測器、一個多領域檢測器和通用檢測器的baseline都好。
介紹
目標檢測任務是多種多樣的,有種類差異(人臉、馬、醫學損傷等等),也有相機視角差異(從飛機、自動駕駛汽車上拍攝的圖像等),還有圖像風格(比如漫畫、剪貼畫、水彩畫、醫學圖像等)等。現有的檢測器大多是針對某一明確領域的(在單一數據集上進行訓練和測試),部分原因是目標檢測數據集是多樣的且它們之間存在非平凡的領域轉換。
眾所周知,為不同領域的任務各自設置專門的檢測器能達到很好的檢測效果。但是實際應用中,系統可能需要處理多個領域的圖像。簡單粗暴一點的方法,我們要處理D個領域的圖像,那么就訓練D個檢測器分別處理每個領域。但是,系統不一定明確某個時間點出現的是哪個領域的圖像,而且模型會很大。所以研究人員提出了兩種方案(圖像分類),一種是在一個通用模型上解決多任務,另一種是在多個領域解決同一任務。目標檢測比分類任務復雜得多。
文中建立了一個新的通用目標檢測benckmark(包括11個不同的目標檢測數據集),如圖1所示:
並提出了一系列系統結構用於通用/多領域的目標檢測問題(如圖2):
其中D表示不同的領域,O表示輸出,A表示領域專用的adapter,DA表示文中提出的領域注意模塊,藍色部分是領域通用,其他顏色表示各領域專用。圖2的(a)和(b)是多領域檢測器,顯然它們都需要領域的先驗知識。(a)是一系列領域專用檢測器,不共享參數和計算;在(a)的基礎上進行卷積層共享以及實現輕量級的領域專用的適應層,即(b)。圖2的(c)和(d)是通用檢測器,(c)所有領域間參數和計算(除了輸出層),很難覆蓋所有非平凡轉換的領域,所以檢測效果比(b)差;(d)是文中提出的方法,加入了DA(domain attention)模塊,首先加入一系列通用SE adapter,然后引入基於特征的關注機制以實現對領域的敏感。該模塊通過通用SE適配器庫學習將網絡激活分配給不同的域,並通過領域-注意機制來確定它們的響應,所以adapter可以專注於各自的領域。由於該過程是數據驅動的,所以域的數量不必與數據集的數量相匹配,數據集可以跨越多個域。網絡可以利用跨領域的共享知識。
Multi-domain Object Detection
通用目標檢測benchmark(UODB):Pascal VOC,WiderFace,KITTI,LISA,DOTA、COCO、Watercolor、Clipart、Comic、Kitchen和DeepLesions。
Single-domain Detector Bank
將Faster R-CNN作為Baseline,在每個數據集上分別訓練檢測器,得到11個檢測器。各個檢測器對應的卷積激活的均值和方差如下圖:
VOC和COCO的激活分布是相似的,而DOTA、DeepLesion和CrossDomain的分布相對差別較大。此外,不同層的統計結果不同。前面的層對校正領域偏移貢獻更大,所以比后面的層差異性更明顯,RPN層差異也很明顯(雖然它們是類別無關的)。而且很多層在不同的數據集上有相似的統計數據,特別是中間層,這表明至少在一些領域它們是可以數據共享的。
Adaptive Multi-domain Detector
該模型中輸出層和RPN層是領域專用的,網絡區域部分是共享的(如所有的卷積層)。為了適應新的領域,文中提出了一些額外的領域專用層(補償領域轉移、輕量化)。
使用SE模塊構建所有的領域適應檢測器,原因如下:領域適應與基於特征的注意力機制相關,而SE模塊根據各channel的依賴關系來調節channel的響應,這可以看做是一種基於特征的注意力機制;而且基於SE模塊的SENet在ImageNet上具有很好的分類效果,而且是一個輕量化模型。
SE Adapters
SE adapter包括如下操作:首先使用一個全局池化層進行Squeeze,然后通過兩個全連接層組成的bottleneck結構來建模通道之間的相關性(先將特征維度降低到輸入的1/r,然后經過ReLU激活后再通過一個全連接層升回原來的維度),這樣可以具有更多的非線性、極大減少參數量和計算量。
文中r取16。FSE是指FC+ReLU+FC 。
將其用於多領域的目標檢測(稱為SE adapter bank),如圖4b所示,給每個領域添加一個SE adapter分支和一個領域開關,可以選擇領域關聯的SE adapter。實現了圖2b的結構,模型大小是圖2a的1/5.
Universal Object Detection
在上述方法中,需要有領域的先驗信息,而在自動系統中這是不可取的,比如自動駕駛或機器人系統。作者設計了通用檢測器來解決這一問題。
Universal Detector
最簡單的實現如上圖所示,也就是所有task共享同一檢測器,而輸出層是task-specific的。這種方法簡單粗暴,沒有特定領域的參數,在所有領域上強制使用相同的參數/表示,檢測效果較差。
Domain-attentive Universal Detector
理想情況下,通用檢測器應該具有一定的領域敏感性,並且能夠適應不同的領域。與多領域檢測的區別在於:第一,必須自動推斷領域;第二,不需要綁定領域和任務。
而一個常用的領域往往會有很多子領域,以交通場景為例,包含天氣條件(晴天、雨天等)、環境(城市、鄉村)等子領域。實際上,領域可能沒有明確的語義,即它們可以是數據驅動的。在這種情況下,不需要要求每個檢測器在單個域中工作,而軟域分配更有意義。文章提出DA(domain adaptation)模塊來突破網絡單獨處理單一領域的局限性。如下圖所示。
Universal SE Adapter Bank
沒有領域switch,通過連接各個域適配器的輸出來實現的,以形成一個通用的表示空間。
其中N是adapter的數目。
每個分支(非線性)沿着與特定域的統計信息相匹配的子空間映射輸入。然后,注意力組件產生一組域敏感的權重,用於以數據驅動的方式組合這些映射。在這種情況下,不需要事先知道操作域,因為輸入映像可以激發多個SE適配器分支。
Domain Attention生成一個領域敏感的權重集,用於組合SE bank映射。DA組件首先對輸入特征進行全局池化,然后應用Softmax層(線性層加Softmax函數),即
然后將得到的向量SDA給USE的輸出XUSE加權,得到領域適應的響應向量:
最后逐通道進行激活的rescale,即:
其中Fscale是逐通道乘法。
Experiments
實驗backbone:Faster R-CNN + SE-ResNet-50(pretrained on ImageNet)
數據集、超參數設置以及單領域檢測器的mAP:
mAP比較如下:
只使用了五個數據集。
多領域目標檢測器(adaptive)的平均精度相比baseline提升了0.7%,且明顯優於BN Adapter和residual adapter(RA)。通用目標檢測器只增加了0.5M參數,但平均精度較差(只有72.5%)。領域注意機制的通用檢測器效果最好,每個領域參數增加了大約7%,平均精度相對baseline提升了1.6%。如果領域注意機制的參數固定(也就是直接取SE adapter 響應的平均),平均精度則會下降0.5%(相對baseline提升1.1%)。
SE adapter數目的影響
5個adapter左右是最合適的。
實驗結果:
domain attention module學到了什么?下圖顯示了第四和第五個殘差塊第一階段殘差和最后一階段殘差學到的權重。
official evaluation
上表顯示了universal+DA模型在各個官方測試集上的結果,增加了領域自適應后,在多個數據集上的mAP都有不同程度的提升。