1. 程式人生 > >Domain Adaptive Faster R-CNN:經典域自適應目標檢測演算法,解決現實中痛點,程式碼開源 | CVPR2018

Domain Adaptive Faster R-CNN:經典域自適應目標檢測演算法,解決現實中痛點,程式碼開源 | CVPR2018

> 論文從理論的角度出發,對目標檢測的域自適應問題進行了深入的研究,基於H-divergence的對抗訓練提出了DA Faster R-CNN,從圖片級和例項級兩種角度進行域對齊,並且加入一致性正則化來學習域不變的RPN。從實驗來看,論文的方法十分有效,這是一個很符合實際需求的研究,能解決現實中場景多樣,訓練資料標註有限的情況。   來源:曉飛的演算法工程筆記 公眾號 **論文: Domain Adaptive Faster R-CNN for Object Detection in the Wild** ![](https://upload-images.jianshu.io/upload_images/20428708-9655ec44d7e716fb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * **論文地址:[https://arxiv.org/pdf/1803.03243.pdf](https://arxiv.org/pdf/1803.03243.pdf)** * **論文程式碼:[https://github.com/yuhuayc/da-faster-rcnn](https://github.com/yuhuayc/da-faster-rcnn)** # Introduction ***   目前,目標檢測演算法在公開資料上有很好的表現,但在現實世界環境中通常會有許多特殊的挑戰,比如視角、物體外觀、背景、光照以及圖片質量的不同,使得測試資料和訓練資料存在較大的跨偏移問題。 ![](https://upload-images.jianshu.io/upload_images/20428708-0973cbb062060ce2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   以自動駕駛為例,不同的公開資料集裡的圖片存在較大的差異,域偏移問題會導致明顯的檢測器效能下降。儘管收集更多的訓練圖片能解決域偏移的影響,但顯然這不是最好的方案。   為了解決上面的問題,論文提出Domain Adaptive Faster R-CNN,最小化圖片級別域偏移(圖片尺寸、圖片風格、光照等)以及例項級域偏移(目標外表、目標尺寸等),每個模組學習一個域分類器並且通過對抗訓練學習域不變的特徵,並且加入分類器的一致性正則化來保證RPN學習到域不變的proposal。   論文的主要貢獻如下: * 從概率角度對跨域目標檢測中的域偏移問題進行理論分析。 * 設計了兩個域自適應模組來消除圖片級別和例項級別的域差異。 * 提出一致性正則化來學習域不變RPN。 * 將提出的模組整合到Faster R-CNN中,進行端到端的訓練。 # Distribution Alignment with H-divergence ***   論文設計了H-divergence度量兩個不同分佈的樣本集,定義$x$為特徵向量,$x_{\mathcal{S}}$為源域樣本$x_{\mathcal{T}}$為目標域樣本,$h:x\to \{0,1\}$為域分類器,預測源域樣本$x_{\mathcal{S}}$為0,預測目標域樣本$x_{\mathcal{T}}$為1。假設$\mathcal{H}$為一組域分類器,則H-divergence的定義為: ![](https://upload-images.jianshu.io/upload_images/20428708-60f8ceb78270f6a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   $err_{\mathcal{S}}$和$err_{\mathcal{T}}$為$h(x)$在源域和目標域樣本的預測誤差,上述的公式意味著域距離$d_{\mathcal{H}}(\mathcal{S},\mathcal{T})$與域分類器的錯誤率成反比,若最好的域分類器的錯誤率越高,則源域和目標域的距離越近。   在神經網路中,定義網路$f$產生特徵向量$x$,為了進行域對齊,需要網路$f$產生能夠減小域距離$d_{\mathcal{H}}(\mathcal{S},\mathcal{T})$的特徵向量,即最小化公式: ![](https://upload-images.jianshu.io/upload_images/20428708-97e654f9feff4e35.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![](https://upload-images.jianshu.io/upload_images/20428708-9fd89d63f27130ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   上述的公式可以通過對抗訓練進行優化,論文采用gradient reverse layer(GRL)進行實現,訓練主幹特徵最大化域分類誤差並且訓練域分類器最小域分類誤差進行對抗訓練,最終得出魯棒的特徵。 # Domain Adaptation for Object Detection *** ### A Probabilistic Perspective   目標檢測問題可表示為後驗概率$P(C, B|I)$,$I$為圖片,$B$為目標的bbox,$C\in \{1,\cdots,K\}$為目標類別。定義目標檢測的樣本的聯合分佈為$P(C,B,I)$,其中源域和目標域的分佈是不一樣的$P_{\mathcal{S}}(C,B,I) \neq P_{\mathcal{T}}(C,B,I)$ * ##### Image-Level Adaptation   根據貝葉斯公式,目標檢測的聯合分佈可定義為 ![](https://upload-images.jianshu.io/upload_images/20428708-207b2f2deee9d97a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   定義目標檢測為covariate shift假設,設定域間的條件概率$P(C, B|I)$是一樣的,域分佈偏移主要來自於$P(I)$分佈的不同。在Faster R-CNN中,$P(I)$即從圖片提取的特徵,所以要解決域偏移問題,就要控制$P_{\mathcal{S}}(I)=P_{\mathcal{T}}(I)$,保證不同域的圖片提取的特徵一致。 * ##### Instance-Level Adaptation   另一方面,目標檢測的聯合分佈也可以定義為 ![](https://upload-images.jianshu.io/upload_images/20428708-6896eb4bdd5ef4e4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   基於covariate shift假設,設定域間的條件概率$P(C|B,I)$是一樣的,域分佈偏移主要來自於$P(B,I)$分佈的不同,而$P(B,I)$即影象中bbox區域特徵,所以為了解決域偏移問題,需要控制$P_{\mathcal{S}}(B,I)=P_{\mathcal{T}}(B,I)$,保證不同域的圖片提取的相同目標的bbox特徵不變。   需要注意的是,目標域是沒有標註資訊的,只能通過$P(B,I)=P(B|I)P(I)$獲取,$P(B|I)$為bbox預測器,這樣就需要RPN具備域不變性,為此,論文再添加了Joint Adaptation。 * ##### Joint Adaptation   考慮到$P(B,I)=P(B|I)P(I)$,而分佈$P(B|I)$是域不變且非零的,因此有 ![](https://upload-images.jianshu.io/upload_images/20428708-0dfdf303cc623a21.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   若域間的圖片級特徵的分佈是一樣的,例項級特徵的分佈也應該是一樣的。但實際中很難達到完美的$P(B|I)$,首先$P(I)$分佈很難完美地對齊,導致$P(B|I)$的輸入有偏,其次bbox是從源域學習而來的,會存在一定地偏差。   為此,論文使用一致性正則化來消除$P(B|I)$的偏置,使用域分類器$h(x)$來進行源域和目標域的判斷。定義域標籤為$D$,影象級分類器可看為預測$P(D|I)$,例項級的分類器可看為預測$P(D|B,I)$。根據貝葉斯理論,得到 ![](https://upload-images.jianshu.io/upload_images/20428708-86494a5cd4f13675.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   其中,$P(B|I)$是域不變的bbox預測器,而$P(B|D,I)$為域相關的bbox預測器。由於目標域沒有標註的bbox,所以實際僅學習到域相關的bbox預測器$P(B|D,I)$。但可以通過強制兩種分類器的一致性$P(D|B,I)=P(D|I)$,使得$P(B|D,I)$逼近$P(B|I)$。 ### Domain Adaptation Components ![](https://upload-images.jianshu.io/upload_images/20428708-17e7069dfab7285b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   DA Faster R-CNN的架構如圖2所示,包含兩個域自適應模組以及一致性正則化模組,自適應模組加入GRL(gradient reverse layer)進行對抗訓練,每個模組包含一個域分類器,最終的損失函式為 ![](https://upload-images.jianshu.io/upload_images/20428708-5c10bcb1ac7119a7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * ##### Image-Level Adaptation   為了消除圖片級域分佈不匹配,使用patch-based域分類器對特徵圖的每個特徵點進行分類,每個特徵點實際對應原圖的一片區域$I_i$,這樣特徵點域分類器就等同於預測了每個影象中每個patch的域標籤,這樣的好處在於: * 圖片級表達的對齊通常能有助於消除整圖帶來的偏移。 * 由於目標檢測演算法的batch size通常很小,path-based能夠提高域分類器的訓練樣本數。   定義$D_i$為第$i$個訓練圖片的域標籤,$\phi_{u,v}(I_i)$為特徵圖上的一個啟用值,$p^{(u,v)}_i$為域分類器的一個輸出,則圖片級自適應損失為 ![](https://upload-images.jianshu.io/upload_images/20428708-f208a1863baf3a86.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   為了對齊域分佈,需要同時優化域分類器最小化域分類損失以及優化主幹網路的引數最大化域分類損失進行對抗訓練,論文采用GRL進行實現,使用梯度下降來訓練域分類器,回傳梯度給主幹時將梯度置為反符號。 * ##### Instance-Level Adaptation   例項級特徵對齊有助於減少例項的區域性差異,比如外表,大小,視角等。跟圖片級特徵對齊類似,定義$p_{i,j}$為第$i$個圖片的第$j$個proposal,例項級的自適應損失為 ![](https://upload-images.jianshu.io/upload_images/20428708-a78e6d31df222167.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   同樣的,在域分類器前新增GRL模組進行對抗訓練。 * ##### Consistency Regularization   如前面的分析,強制域分類器的一致性有助於學習魯棒的跨域bbox預測器,加入一致性正則化。由於圖片級域分類器是對特徵值進行分類的,取平均輸出作為圖片級概率,一致性正則化為 ![](https://upload-images.jianshu.io/upload_images/20428708-1129f48bef13736b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   其中$|I|$為特徵圖的點數,$||\cdot||$為$\mathcal{l}_2$距離。 # Experiments *** ### Learning from Synthetic Data ![](https://upload-images.jianshu.io/upload_images/20428708-fe876e612513f910.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   SIM 10k是從GTAV中擷取畫面進行標註的資料集,Cityscapes為真實圖片,這裡對比從生成圖片到真實圖片的域轉移。 #### Driving in Adverse Weather ![](https://upload-images.jianshu.io/upload_images/20428708-7ea81b6e2ffb334e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   Foggy Cityscapes通過生成霧來模擬真實場景,這裡對比天氣帶來的域轉移。 ### Cross Camera Adaptation ![](https://upload-images.jianshu.io/upload_images/20428708-7d71553e959cb43b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   這裡對比兩個不同的訓練資料集的域對齊。 ### Error Analysis on Top Ranked Detections ![](https://upload-images.jianshu.io/upload_images/20428708-e65c201fe3aa9f02.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   每個模組都能提升一定的準確率,而圖片級對齊的背景錯誤率較高,這可能由於圖片級對齊對RPN的提升更直接。 ### Image-level v.s. Instance-level Alignment ![](https://upload-images.jianshu.io/upload_images/20428708-8fe780508282f1b6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### Consistency Regularization ![](https://upload-images.jianshu.io/upload_images/20428708-df1bca71526090c4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # CONCLUSION ***   論文從理論的角度出發,對目標檢測的域自適應問題進行了深入的研究,基於H-divergence的對抗訓練提出了DA Faster R-CNN,從圖片級和例項級兩種角度進行域對齊,並且加入一致性正則化來學習域不變的RPN。從實驗來看,論文的方法十分有效,這是一個很符合實際需求的研究,能解決現實中場景多樣,訓練資料標註有限的情況。       > 如果本文對你有幫助,麻煩點個贊或在看唄~ 更多內容請關注 微信公眾號【曉飛的演算法工程筆記】 ![work-life balance.](https://upload-images.jianshu.io/upload_images/20428708-7156c0e4a2f49bd6.png?imageMogr2/auto-orient/strip%7CimageView2/2