Motivation

该论文的内容是行人实例检测,针对的问题是数据集只有部分数据有标注,其他大部分数据没有标注,即半监督(semi-supervised)学习研究的内容。该论文使用GAN来生成行人实例样本,训练一个行人类别分类器,用该分类器对未标注的图片进行扫描分类,得到未标注图片的伪标注,最后使用有标注的数据和伪标注的数据训练重新训练检测器。

  • Semi-supervised.
    • 适用情景:部分数据有label,大部分数据没有label。
    • 收集和人工标注大量数据需要耗费大量的时间和精力。
  • 用GAN生成行人实例。
  • 行人实例检测。

Method

论文的方法如下图所示
《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》笔记

方法分为几个部分

  • 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)作用是使得生成的样本越真实越好。

《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》笔记

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预测出来的结果分数高的越高,分数低的越低,提高分类器对未标注数据的分类信心。

《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》笔记

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}

《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》笔记

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生成行人实例的效果
《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》笔记
可以看到生成的行人实例已经很接近真实样本了。

接着看看行人检测的效果,指标是log-average miss rate,值越小越好。
《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》笔记

《Semi-Supervised Pedestrian Instance Synthesis and Detection with Mutual Reinforcement》笔记

相关文章:

  • 2021-10-07
  • 2021-09-07
  • 2022-02-25
  • 2022-01-10
  • 2021-06-18
  • 2021-07-10
  • 2022-12-23
  • 2021-09-25
猜你喜欢
  • 2021-04-24
  • 2021-06-08
  • 2021-11-18
  • 2021-07-11
  • 2022-12-23
  • 2021-07-30
  • 2021-09-24
相关资源
相似解决方案