DenseBox: Unifying Landmark Localization with End to End Object Detection

在Cver上看到一篇推文,总结了多篇类似anchor-free论文:
1.DenseBox: Unifying Landmark Localization with End to End Object Detection
2.You Only Look Once: Unified, Real-Time Object Detection
3.CornerNet: Detecting Objects as Paired Keypoints
4.Bottom-up Object Detection by Grouping Extreme and Center Points
5.Feature Selective Anchor-Free Module for Single-Shot Object Detection
6.FCOS: Fully Convolutional One-Stage Object Detection
7.An Anchor-Free Region Proposal Network for Faster R-CNN based Text Detection Approaches
8.FoveaBox: Beyond Anchor-based Object Detector

DenseBox, 这是一篇百度2016年挂出来的论文,距离现在比较早的文章了,现在又被拿出来重提了,因为其中anchor-free的特点,我把它找出来了。发现这是一篇百度的神作,有很多极其超前的思路。出现了特征融合,多任务训练,多尺度,通过添加任务分支进行关键点检测(直到2017年mask-rcnn才公布通过添加掩码在Faster-rcnn进行上进行分割任务)。

DenseBox结构

  1. DenseBox是针对face检测的一个算法,给定一张图片输出face的区域, 同时检测模型是一个全卷积模型,所以图片大小无影响。网络整体结构是VGG19,网络的Conv3_4和Conv4_4之间发生了一次特征融合,融合的方式是Conv4_4层的双线性插值上采样,因此得到的Feature Map和Conv3_4是相同的。上采样之后网络有两个分支Conv5_2_det 和Conv5_2_loc ,分别用于计算检测损失和Bounding Box的回归损失,分支由 卷积核Dropout组成。
image.png

DenseBox设置

  1. DenseBox没有使用一整张图片,而是对图片进行剪裁,从训练图片中裁剪出包含人脸的patch,这些patch包含的背景区域足够完成模型的训练

  2. 根据Ground Truth从训练数据集中裁剪出大小是人脸的区域的高的4.8倍的正方形作为一个patch,且人脸在这个patch的中心,将这个patch resize到 240 x 240大小, 给网络进行输入。

  3. 网络进行训练时候的标签是60x60x5的热图,60表示热图的尺寸,5表示热图的通道数.

image.png
  1. 上图左边就是原始图片,右边就是标签。算法没有使用右图矩形区域,而是使用半径0.3为Ground Truth的高的0.3倍的圆作为标签值,而圆形的中心就是热图的中心,即有图中的白色圆形部分,后面的四通道个热图表示像圆心到最近的Ground Truth的四个边界的距离点。
  2. 一个patch中可能出现多个人脸,如果某个人脸和中心点处的人脸的高的比例在[0.8,1.25]之间,则认为该样本为正样本。

DenseBox多任务损失

  1. 分类损失

对于分类{0,1},这个模型使用L2损失,并没使用hinge loss or cross-entropy loss,按照作者说法这个简单的L2损失也能工作的很好。

image.png
  1. bounding box回归损失

坐标也是l2损失

image.png
  1. 设置mask
  • 对在黑白边缘的灰度区域进行忽略,f(ign)=1.
  • 使用负样本难挖掘策略,计算整个patch的3600个所有样本点,并根据loss进行排序;取其中的1%,也就是36个作为hard-negative样本;随机采样36个负样本和hard-negative构成72个负样本;随机采样72个正样本。参与训练的样本f(set)=1.
image.png
  1. 联合训练
    使用联合训练方式,因为不对负样本进行bounding box回归回归,所以采用λ(loc) =3进行平衡两种任务的损失。


    image.png

DenseBox添加关键点任务变成Refine Network

网络添加Conv5_2_landmark和Conv6_3_det输出,对于检测N个关键点的任务,Conv5_2_landmark有N个热图,热图中的每个像素点表示改点为对应位置关键点的置信度。对于标签集中的第i个关键点(x,y) ,在第i个feature map在(x,y) 处的值是1,其它位置为0.Conv6_3_det就是关键点的分数热力图。

image.png
  1. 多任务联合训练
  • Landmark使用了灰色区域和Hard Negative Mining方法进行采样,损失函数则是使用了采样样本之间的l2损失函数L(lm).
  • L(det) 是前面的检测任务
  • L(rf)也是使用了相同的l2损失函数,是Landmark的分数判别损失。
    通过超参λ det =1 and λ lm =0.5控制损失平衡。
image.png

参考:
目标检测:Anchor-Free时代
那些酷炫的深度学习网络图怎么画出来的?
CVPR2019-Code
人脸检测之DenseBox

你可能感兴趣的:(DenseBox: Unifying Landmark Localization with End to End Object Detection)