《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》筆記

Motivation

該論文的內容是行人實例檢測,針對的問題是數據集只有部分數據有標註,其他大部分數據沒有標註,即半監督(semi-supervised)學習研究的內容。該論文使用GAN來生成行人實例樣本,訓練一個行人類別分類器,用該分類器對未標註的圖片進行掃描分類,得到未標註圖片的僞標註,最後使用有標註的數據和僞標註的數據訓練重新訓練檢測器。

  • Semi-supervised.
    • 適用情景:部分數據有label,大部分數據沒有label。
    • 收集和人工標註大量數據需要耗費大量的時間和精力。
  • 用GAN生成行人實例。
  • 行人實例檢測。

Method

論文的方法如下圖所示
method

方法分爲幾個部分

  • Base Detector:使用有標註的數據訓練的檢測器,是2階段的檢測器,有RPN。RPN網絡提取region proposals,映射到原圖,裁剪出來,作爲其他網絡的輸入。
  • Generator G: 生成器。給定類別y和隨機變量z,生成類別爲y的樣本。
  • Class-conditional discriminator DconD_{\text{con}}: 用來判讀生成的樣本和類別y是否匹配。
  • Class- specific discriminator DspeD_{\text{spe}}: 用來判讀樣本是真實樣本還是生成樣本。
  • Post-refinement classifier (PRC): 行人分類器,訓練的目的是對未標註的數據進行分類,爲未標註的數據賦予僞標註。

Instance synthesis

說明符號的含義

  • (x,y)pl(x, y) \sim p_l: 已標註數據的分佈,x表示裁剪出來的小圖
  • xpux \sim p_u: 未標註數據的分佈
  • (z,y)ps(z, y) \sim p_s: 輸入到G的先驗分佈

與G對應的訓練公式
minθGladvG+μlfeaMat(1) \min_{\theta_G} \mathcal{l}_{\text{adv}}^G + \mu \mathcal{l}_{\text{feaMat}} \tag{1}
其中
ladvG=E(z,y)ps[log(1Dcon(G(z,y),y))]+E(z,y)psy=y+[log(1Dspe(G(z,y)))](2) \begin{aligned} l_{\text{adv}}^G = & \Bbb{E}_{(z,y) \sim p_s} \left[ \log \left( 1-D_{\text{con}}(G(z,y), y) \right) \right ] \\ & + \Bbb{E}_{\underset{y=y^+}{(z,y) \sim p_s}}\left [ \log \left( 1 - D_{\text{spe}}(G(z, y)) \right ) \right ] \end{aligned} \tag{2}
公式2第1項(2-1)作用是使得生成的樣本和類別y越匹配越好。公式2第2項(2-2)作用是使得生成的樣本越真實越好。

G 公式

lfeaMat\mathcal{l}_{\text{feaMat}}表示平均特徵匹配項
lfeaMat=E(x,y)pl[1{y=y+}fC(x)]E(z,y)ps[1{y=y+}fC(G(z,y))]22(3) \begin{aligned} \mathcal{l}_{\text{feaMat}} = & \Big \lVert \Bbb{E}_{(x,y) \sim p_l} \left [ 1^{\{y=y^+\}} f_C(x) \right] \\ & - \Bbb{E}_{(z,y) \sim p_s} \left [ 1^{\{y=y^+\}} f_C(G(z,y)) \right] \Big \rVert_2^2 \end{aligned} \tag{3}
公式3第1項(3-1)表示真實樣本特徵的平均值,特徵是指PRC最後一層隱藏層的特徵,公式3第2項(3-2)表示生成樣本特徵的平均值。公式3的目的是使得生成的行人實例匹配徵是樣本特徵的統計值,使得生成樣本更加真實,同時有助於PRC的訓練。

Optimizing the PRC

PRC分類網絡的訓練公式如下
minθCladvC+λflfeaMat+λclclaEva(4) \min_{\theta_C} \mathcal{l}_{\text{adv}}^C + \lambda_f \mathcal{l}_{\text{feaMat}} + \lambda_c \mathcal{l}_{\text{claEva}} \tag{4}

首先,第一項(4-1)是指把僞標註的樣本和對應的僞標註輸入到DconD_{con}中,由DconD_{con}來判斷未標註樣本和僞標註是否匹配,目的是使得僞標註儘可能準確。
ladvC=Expu[p(xθC)log(1Dcon(x,y^)] \mathcal{l}_{\text{adv}}^C = \Bbb{E}_{x \sim p_u} \left[ p(x|\theta_C) \log (1 - D_{\text{con}}(x, \hat{y}) \right]
其中p(xθC)p(x|\theta_C)表示PRC預測出來的置信度,y^\hat{y}是僞標註,由p(xθC)p(x|\theta_C)決定具體的值。

第三項(4-3)是分類損失(分類網絡當然要有分類損失),包括3中數據的3個損失項
lclaEva=E(x,y)pl[ylogp(xθC)]Expu[p(xθC)logp(xθC)]E(z,y)puy=y+[ylogp(G(z,y)θC)](6) \begin{aligned} \mathcal{l}_{\text{claEva}} = & \Bbb{E}_{(x,y) \sim p_l} \left [ -y \log p(x|\theta_C) \right ] \\ & \Bbb{E}_{x \sim p_u} \left [ -p(x|\theta_C) \log p(x|\theta_C) \right ] \\ & \Bbb{E}_{\underset{y=y^+}{(z,y) \sim p_u}} \left [ -y \log p(G(z,y)|\theta_C) \right ] \\ \end{aligned} \tag{6}
公式6第二項(6-2)有些奇怪,用p(xθC)p(x|\theta_C)代替真實樣本y的位置,這樣做的目的是使得PRC預測出來的結果分數高的越高,分數低的越低,提高分類器對未標註數據的分類信心。

PRC 公式

Adversarial training

GAN的訓練過程還包括最大化的過程。

首先看DconD_{\text{con}}
maxθDconE(x,y)pl[logDcon(x,y)]+12E(z,y)ps[log(1Dcon(G(z,y),y))]+12Expu[log(1Dcon(x,y^))](7) \begin{aligned} \max{\theta_{D_{\text{con}}}} & \Bbb{E}_{(x, y) \sim p_l} \left[ \log D_{\text{con}}(x,y) \right] \\ & + \frac{1}{2} \Bbb{E}_{(z,y) \sim p_s} \left[ \log (1 - D_{\text{con}}(G(z, y), y)) \right] \\ & + \frac{1}{2} \Bbb{E}_{x \sim p_u} \left[ \log (1 - D_{\text{con}}(x, \hat{y})) \right] \end{aligned} \tag{7}
因爲有3中數據,所以公式7有3項。

對於另外一個DspeD_{\text{spe}},它的作用是判斷樣本是真的還是假的
maxθDspcE(x,y)ply=y+[logDspc(x)]+E(z,y)psy=y+[1Dspc(G(z,y))](8) \begin{aligned} \max_{\theta_{D_{\text{spc}}}} & \Bbb{E}_{\underset{y=y^+}{(x,y) \sim p_l}} \left[ \log D_{\text{spc}}(x) \right] \\ & + \Bbb{E}_{\underset{y=y^+}{(z,y) \sim p_s}} \left[ 1 - D_{\text{spc}}(G(z,y)) \right] \end{aligned} \tag{8}

adversarial 公式

Enhancement of the base detector

使用預訓練的檢測器和PRC去掃描未標註的圖片,生成僞標註,然後使用已標註數據和僞標註數據重新訓練檢測器。

檢測器訓練時正樣本的選擇:IoU>0.5,其他的爲負樣本。

檢測器訓練單個樣本的損失函數
ldet(x,y)=ylogp(xθR)+vr1{y=y+}llocReg(b,b~)(9) \mathcal{l}_\text{det}(x,y) = -y \log p(x|\theta_R) + v_r 1^{\{y=y^+\}} \mathcal{l}_{\text{locReg}}(b, \tilde{b}) \tag{9}
分別是分類損失和bbox的迴歸損失。

總損失函數
minθRE(x,y)pl[ldet(x,y)]+vE(x,y)ply=y+[ldet(x,y)]+vcExN(x)(x,y)pl,y=y+or(x,y)pl,y=y+[p(xθR)p(xθR)22](11) \begin{aligned} \min_{\theta_R} & \Bbb{E}_{(x,y) \sim p_l} \left[ \mathcal{l}_{\text{det}}(x, y) \right] + v_* \Bbb{E}_{\underset{y* = y^+}{(x, y^*) \sim p_{l^*}}} \left[ \mathcal{l}_{\text{det}} (x, y^*) \right] \\ & + v_c \Bbb{E}_{\underset{\underset{(x, y^*) \sim p_{l^*}, y*=y^+}{(x,y)\sim p_l, y=y^+ \text{or}}}{x' \in \mathcal{N}(x)}} \left[ \lVert p(x|\theta_R) - p(x'|\theta_R) \rVert_2^2 \right] \end{aligned} \tag{11}
其中yy^*表示僞標籤,plp_{l^*}表示對應的分佈。公式11前兩項分佈代表已標註數據和僞標註數據的損失。

僞標註數據有一個缺點,僞標註的bbox可能不準確,可能只包括gt bbox的一部分。論文提出了公式11第3項。選擇一個樣本x,在x的領域N(x)\mathcal{N}(x)內隨機選擇一個樣本xx',對xx'的預測結果要和xx的預測結果一樣,這是(11-3)項的意思。這樣做可以保證檢測器的分類效果,減少網絡受到僞標註數據的壞影響。

Experiments

論文在3個行人檢測數據集上進行實驗。論文只使用數據集上5%的圖片的標註,剩餘的95%的圖片都當作沒有標註的數據。這個數據劃分就很誇張了,但是論文的實驗效果很好,說明了該方法確實可行。

論文首先看看GAN生成行人實例的效果
GAN生成的行人實例
可以看到生成的行人實例已經很接近真實樣本了。

接着看看行人檢測的效果,指標是log-average miss rate,值越小越好。
行人檢測效果

行人檢測效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章