主要贡献:
①Rapidly Digested Convolutional Layers(RDCL)快速缩小输入图片的尺寸
②Multiple Scale Convolutional Layers(MSCL) 使用Inception模块增加感受野,离散化anchors(就是在不同层都有输入)
③anchor densification strategy 锚点致密化策略(就是增加anchors,均衡不同维度的anchors)
网络结构:
RDCL:
两个卷积两个pooling,快速缩小输入图片的尺寸,stride分别是4,2,2,2;其中激活函数使用了CRelu(级联整流线性单元,参考:https://blog.csdn.net/stu_shanghui/article/details/94492281);使用CRelu可以减少卷积操作,而保持输出维度不变
CRelu如下图:
MSCL:4层inception和4层卷积,inception结构如下
在Inception3, Conv3_2 and Conv4_2 三层feature map上添加anchors,
Anchor densification strategy
anchor density = anchor大小 / interval of anchor.
interval of anchor就是每个anchor间隔多少像素点,文中默认间隔像素点为:32,32,32,64,128
图片来自:https://blog.csdn.net/shuzfan/article/details/77881918
上图中可以看到,大尺寸(128,256,512)和小尺寸(32,64)anchors不平衡,因此文中对32和64的anchors进行了4times 和 2times的操作。
训练:
①使用12880 images of the WIDER FACE数据
②数据增强: 颜色失真,随机裁剪,比例变换,水平翻转,face box filter(滤除宽高小于20个像素点的face box)
③匹配规则: 在训练期间,我们需要确定哪些锚对应于面部边界框。 使用并交比匹配最佳的anchor和face,然后使用并交比大于阈值的anchors(如:0.35)
④损失函数: softmax分类,smoothL1 loss用于回归anchors,
⑤hard negative mining: SSD中首次提出,解决正负样本差别太大的问题,就是对负样本抽样,抽样时按照置信度误差(预测背景的置信度越大,误差越大)进行降序排列,选取误差较大的top-k作为训练的负样本,保证正负样本比例接近1:3.
⑥所有参数使用Xavier初始化,使用SGD优化器,0.9的momentum,0.0005的weight decay, batch size=32;迭代120k轮,前80k轮使用1e-3的学习率,然后分别是1e-4学习率20k,1e-5,20k轮
结果