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

思考

在介紹文章具體網絡設計和損失函數的設計之前,我們可以帶着一個問題去思考。

  1. 用GAN的結構,數據樣本使用(Car_s)作為正樣本、(Car_t)作為負樣本也可以使判別器(discriminator)分辨出源域和目標域的樣本,為什麼這裡要組成對的去訓練?

算法設計

1568550456835

Fig 1. Few-shot Adaptive Faster R-CNN (FAFRCNN)的整體網絡結構(其中的SMFR模塊後面會介紹到)

在目標檢測的任務中,論文作者把域適應問題分成兩個層次

    1. 圖像級別的域適應
    1. 實例級別的域適應

具體可以看下面Fig2的第一行和第三行,圖像級別下的域遷移是整體圖像各個像素組成的域遷移,實例級別的域遷移是汽車樣本下的域遷移。

1568551078207

Fig 2. 中間為兩張來自Cityspaces和Foggy Cityspaces的圖片。第一行為圖像級別的域遷移,第三行為實例級別的域遷移。

圖像級別的域適應

​ 圖像級別的域適應(Image-level Adaptation) 是為了完成image-to-image的轉換,論文提出了split pooling(SP)的方法,作用是為了隨機放置grid,做法也是十分簡單,grid cell的寬為w,高為h,然後隨機生成sx和xy,grid根據sx和sy調整位置。

1568730320548

Fig 3. grid的選擇

​ 得到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,實用性不知道如何。
本文會在一周後重新編輯,欲覽全文可轉至推文:

CVPR 2019 | 小樣本域適應的目標檢測