ICCV2017的paper 作者是自动化所的直博生,一直都在做这一块,这两年各种paper,可以follow一下。感叹一下,人与人之间的差距,有时候比人与狗之间还要大。嘤嘤嘤
这篇文章是对ssd在人脸检测上的改进,写的蛮好的,通俗易懂,逻辑很清晰。是一篇实验性很强的paper吧。
现有问题:基于anchor的检测在目标变小的时候效果下降的很厉害。
原因作者觉得有如下三点(图片截取于http://www.cbsr.ia.ac.cn/users/sfzhang/Shifeng%20Zhang's%20Homepage_files/iccv2017_poster.pdf)
对应这三个问题,作者提出如下解决方案:
1.scale-equtable framework
检测层中的stride意味着anchor之前的间隔,这里的stride设置为anchor大小的四分之一,这是为了保证不同尺度的anchor有相同的强度,这样不同尺度的人脸可以match到数量相同的anchor.
这里还讨论了theoritically receptive field 和 effective receptive field 的关系。实际上work的感受野是在原始感受野的中间。因此设定了anchor 与rf之间的大小的关系,肯定要比rf小。
2.scale compensation anchor matching strategy
在训练时,需要确认的是哪一个anchor可以匹配ground truth(这里特指人脸)的 bounding box 。现有的策略是计算交并比 首先对每个gt交并比的最大值的anchor进行匹配(该步骤是为了保证每个gt都有匹配的anchor) 其次,将所有交并比大于阈值(0.5)的anchor 进行匹配 现有的方法存在一个问题,就是anchor的尺度是离散的,但是人脸的尺度是连续的,这会导致有些尺度的人脸匹配到的anchor很少 recall降低。 通过观察,匹配的anchor为3 并不足以让recall变高 匹配的anchor数量和anchor尺度正相关。 未解决上述问题,本文提出scale compensation anchor matching strategy 1. 将阈值从0.5降到0.35,提高匹配anchor数量 2.如果gt匹配的anchor数量还不够,那么就对这些gt做如下处理,在所有阈值大于0.1的anchor中选取top n个anchor ,n的值是第一步中的匹配anchor的平均值。
max-out backgound label
针对的是样本不均衡的问题 根据统计 预设的anchor中近99%都是负样本。这是因为检测小的人脸样本问题,设置了很多小的anchor。如图所示 一张640*640的图里有34125个anchor,其中百分之75来至于conv3_3,小anchor 所在的层。这些小anchor大部分都是负样本。因此,对conv3_3的detection层进行操作,
实验结果:
作者:涂山容容
链接:https://www.jianshu.com/p/81aae947289e