CVPR 2019 論文解讀 | 小樣本域適應的目標檢測
- 2019 年 10 月 3 日
- 筆記
引文
最近筆者也在尋找目標檢測的其他方向,一般可以繼續挖掘的方向是從目標檢測的數據入手,困難樣本的目標檢測,如檢測物體被遮擋,極小人臉檢測,亦或者數據樣本不足的算法。這裡筆者介紹一篇小樣本(few-shot)數據方向下的域適應(Domain Adaptation)的目標檢測算法,這篇新加坡國立大學&華為諾亞方舟實驗室的paper《Few-shot Adaptive Faster R-CNN》被收錄於CVPR2019,解決的具體問題場景是我們有在普通常見場景下的汽車目標檢測,我們只有少量霧天暴雨極劣天氣環境下的汽車樣本,那麼我們可以使用成對採樣(pairing-sampling)的方法,源域(source domain)即普通場景下的汽車樣本(Car_{s})和目標域(target domain)即惡劣天氣下的汽車樣本(Car_{t})成對((Car_s,Car_t))組成負樣本,另一方面源域下成對組成正樣本((Car_s,Car_s)),使用GAN的結構,判別器(discriminator)儘可能去分辨正負樣本的不同,也就是分辨出源域和目標域的樣本,生成器(generator)是嘗試去迷惑判別器。這就是這個算法的主要思想,主要是把域適應的思想應用到了目標檢測上。
論文源碼還沒完全開源,只找到了個官方的repo:https://github.com/twangnh/FAFRCNN
思考
在介紹文章具體網絡設計和損失函數的設計之前,我們可以帶着一個問題去思考。
- 用GAN的結構,數據樣本使用(Car_s)作為正樣本、(Car_t)作為負樣本也可以使判別器(discriminator)分辨出源域和目標域的樣本,為什麼這裡要組成對的去訓練?
算法設計
在目標檢測的任務中,論文作者把域適應問題分成兩個層次:
-
- 圖像級別的域適應
-
- 實例級別的域適應
具體可以看下面Fig2的第一行和第三行,圖像級別下的域遷移是整體圖像各個像素組成的域遷移,實例級別的域遷移是汽車樣本下的域遷移。
圖像級別的域適應
圖像級別的域適應(Image-level Adaptation) 是為了完成image-to-image的轉換,論文提出了split pooling(SP)的方法,作用是為了隨機放置grid,做法也是十分簡單,grid cell的寬為w,高為h,然後隨機生成sx和xy,grid根據sx和sy調整位置。
得到grid之後,論文把grid與Faster R-CNN中選取anchor boxes一樣,採取了三種scale和三種ratio,split pooling對應在提取的特徵(f(x))中也是有大(l)、中(m)、小(s)三種scale: (sp_l(f(x)),sp_m(f(x)),sp_s(f(x)))。
後面就可以用對抗訓練的方式訓練生成器和判別器了,但是因為目標域的樣本是小樣本數據,所以這裡提出了成對訓練的方式,即源域對(G_{s_1}={(g_s,g_s)})和源域-目標域對(G_{s_2}={(g_s,g_t)})。判別器判斷樣本來源,生成器是特徵提取器器目標是混淆判別器。
[ g_ssim sp_kf(X_s),g_tsim sp_k(f(X_T)),k={l,m,s} ]
[ L_{sp_{sd}}=-mathbb{E}_{xsim{G_{s1}}}[logD^{sp_s}(x)]-mathbb{E}_{xsim{G_{s2}}}[log(1-D^{sp_s}(x))] ]
[ L_{im_d}=L_{sp_{sd}}+L_{sp_{md}}+L_{sp_{ld}} ]
另外論文在圖像級別的域適應用了三個GAN,實用性不知道如何。
本文會在一周後重新編輯,欲覽全文可轉至推文: