论文学习 AInnoFace:Accurate Face Detection for High Performance

论文地址
相关解读:
[论文笔记] 人脸检测方向系列论文
arxiv2019_AFD_HP

文章要点

  RetinaNet + focal loss
  UnitBox的IOU loss
  SRN的 2-step bbox cls/reg
  PyramidBox的data-anchor-sampling
  S3FD的max-out label
  multi-scale inference

模块简介

Focal Loss

  目标检测分为one-stage/two-stage,focal loss的论文提出one-stage检测性能不如two-stage的原因之一是训练过程中的正、负、难、易样本不均,因此通过施加权重因子来平衡:
L F L = { − α ∗ ( 1 − p ) γ ∗ l o g ( p ) , y = 1 − ( 1 − α ) ∗ p γ ∗ l o g ( 1 − p ) , y = 0 L_{FL}=\begin{cases} -\alpha*(1-p)^\gamma*log(p), & y=1 \\ -(1-\alpha)*p^\gamma*log(1-p), & y=0 \end{cases} LFL={α(1p)γlog(p),(1α)pγlog(1p),y=1y=0
  参考FocalLoss你真的懂吗?,式中 α \alpha α用来平衡样本的正负不均(通常正样本少于负样本,值设置为>0.5,提高对正样本的关注度), γ \gamma γ降低易分样本的损失贡献程度。最终形成对模型的关注度大小关系为: 正 难 > 负 难 > 正 易 > 负 易 正难>负难>正易>负易 >>>

  关于Focal Loss论文中提到的变种,可以见AmSoftmax作者的文章被忽略的Focal Loss变种

网络结构
  Focal Loss论文中提及了RetinaNet网络结构是为了测试新损失函数性能,在结构上面没有专门进行优化,但这种结构由于具有多尺度检测能力,在end2end模型中有很多应用。本文也是以RetinaNet作为Baseline,使用ResNet-152作为主干网络,使用FPN模块输出6个分支。

IOU loss

  人脸检测的结果包含人脸置信度(分类)、人脸位置(回归),前者使用交叉熵(改进后为Focal Loss),后者通常使用Smooth L1 Loss计算预测位置的数值误差。评估人脸检测框的指标一般使用IOU,这与Smooth L1并不等价,在训练时使损失值减小并不能保证预测框与GT往更重合的方向收敛。UnitBox论文中提出使用IOU Loss:
L I o U = − l n I n t e r s e c t i o n ( B p , B g t ) U n i o n ( B p , B g t ) L_{IoU}=-ln\frac{Intersection(B_p,B_{gt})}{Union(B_p,B_{gt})} LIoU=lnUnion(Bp,Bgt)Intersection(Bp,Bgt)
  但IOU Loss也存在无法优化两框不相交、相交时如何相交等问题,因此又出现了GIOU、DIOU、CIOU等方法。见
  目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
  GIOU、DIOU、CIOU

SRN

  RetinaNet中实现了多个尺度的输出,并用Focal Loss平衡的正负难易,但不同尺度中浅层较深层的检测更密集,因此对应的分支输出数量更多,携带信息更少,依然存在imbalance问题。
SRN
  参考Selective Refinement Network,SRN在主干网络上输出6个分支,并且采用two-step策略,前3个分支实现小人脸检测,后3个分支实现人脸位置定位。

  • classification的1st-step到2nd-step会通过阈值过滤部分目标,避免得到大量的fp;
  • regression则认为前3层的小人脸信息较少,难以实现准确的位置定位,同时浅层网络的主要任务是检测小人脸,不应该在该阶段就强化模型对位置信息的提取。
      最终输出可以划分为 Selective Two-step Classification(STC)、Selective Two-step Regression(STR),损失函数分别为:
    L S T C ( { p i } , { q i } ) = 1 N s 1 ∑ i ∈ Ω L F L ( p i , l i ∗ ) + 1 N s 2 ∑ i ∈ Φ L F L ( q i , l i ∗ ) L S T R ( { x i } , { t i } ) = 1 N s 1 ∑ i ∈ Ψ [ l i ∗ = 1 ] L r ( x i , g i ∗ ) + 1 N s 2 ∑ i ∈ Φ [ l i ∗ = 1 ] L r ( t i , g i ∗ ) L_{STC}(\lbrace p_i \rbrace,\lbrace q_i \rbrace)=\frac{1}{N_{s_1}}\sum_{i\in\Omega}L_{FL}(p_i,l_i^*)+\frac{1}{N_{s_2}}\sum_{i\in\Phi}L_{FL}(q_i,l_i^*) \\ L_{STR}(\lbrace x_i \rbrace,\lbrace t_i \rbrace)=\frac{1}{N_{s_1}}\sum_{i\in\Psi}[l_i^*=1]L_r(x_i,g_i^*)+\frac{1}{N_{s_2}}\sum_{i\in\Phi}[l_i^*=1]L_r(t_i,g_i^*) LSTC({pi},{qi})=Ns11iΩLFL(pi,li)+Ns21iΦLFL(qi,li)LSTR({xi},{ti})=Ns11iΨ[li=1]Lr(xi,gi)+Ns21iΦ[li=1]Lr(ti,gi)

data-anchor-sampling

  数据增广方面使用随机扩充/裁剪/翻转/颜色抖动,并且以0.5的概率使用PyramidBox中的data-anchor-sampling进行图像处理。

图像增广
  主要过程:

  • 从训练图像中选取一张人脸;
  • 根据人脸按 2 i 2^i 2i确定尺度最接近的 i i i值大小;
  • { 0 , . . . , m i n ( 5 , i + 1 ) } \lbrace0,...,min(5,i+1)\rbrace {0,...,min(5,i+1)}中随机选取一个作为目标缩放尺度 S t a r g e t S_{target} Starget
  • S t a r g e t S_{target} Starget为中心,从 ( S t a r g e t / 2 , S t a r g e t ∗ 2 ) (S_{target}/2,S_{target}*2) (Starget/2,Starget2)连续域中随机选取一个值作为真正的缩放尺度,并对整张图像进行缩放;
  • 以缩放后图像中目标人脸为中心,截取一个640*640(依据网络的输入大小)的图像,如果超出边界以黑色像素填充。

max-out label

  通过anchor密集采样可以召回小目标,但会存在大量误检。因此对每个anchor的每个类别输出多个置信度,再取最大值作为每个类别的置信度。相当于多增加一些分类器分析特征信息,增加分析的鲁棒性。

multi-scale inference

  多尺度目标检测推理过程中的处理策略,将待检测的图像resize成多个尺度分别送入模型进行推理,将结果通过投票机制融合输出。

训练参数

参数名设定值
参数初始化xavier
优化算法SGD
momentum0.9
weight decay0.0001
batch size32
end_epoch130
学习率初始化策略前5个epoch从0.0003125到0.01
学习率衰减策略100、120分别除以10

   Anchor Detail

IOU负样本丢弃正样本
STC0 ~ 0.30.3 ~ 0.7> 0.7
STR0 ~ 0.40.4 ~ 0.5> 0.5

  

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值