今天来介绍一个在CPU上可以实时运行的人脸检测器FaceBoxes,FaceBoxes仍然是以SSD为基础进行了改进,在速度和精度上都取得了较好的Trade-Off,所以就一起来看看这篇论文吧。
我们先看一下FaceBoxes的整体结构图:
FaceBoxes的整体结构图和Anchor设计的细节
RDCL即Rapidly Digested Convolutional Layers
,主要包含下面几个要点:
MSCL即Multiple Scale Convolutional Layers
,主要包含下面几个要点:
CReLU的论文如下:
https://arxiv.org/abs/1603.05201
整个文章的出发点来自于下图中的统计现象:
pair filter定义
即从所有卷积核中选择一个cos相似度最小的卷积核,然后我们再看看Figure2,意思就是对于所有的卷积核都寻找它的pair filter,并计算cos相似度得到蓝色的统计直方图,而红色的曲线则代表假设随机高斯分布生成的卷积核得到的相似度统计。
网络越前面的卷积核,参数的分布具有更强的负相关性。随着网络加深,这种负相关性逐步减弱。
网络的前部,网络更倾向于捕获正负相位信息而ReLU会抹掉负响应,这就造成了卷积核的冗余。
输出维度自动加倍,例如
。
好了,回到FaceBoxes中来,论文RDCL中将最后一层的通道数置为64,而不是128,然后接上一个CReLU,即加快了速度也不会对精度有太大影响。
CReLU和Inception模块的示意图如下所示:
CReLU和Inception模块的示意图
对32x32的Anchor分别进行2,3,4倍稠密化的效果
除了SSD中经典的Hard negative mining
解决正负样本严重不平衡的Trick外,在数据增强方面也有一些特殊设置,具体如下:
这几个策略的具体细节就留给大家看源码了,另外我写的《从零开始学SSD》的PDF其实也介绍了一大半了,所以就不再赘述了。
在FDDB上的消融实验结果
其中实验一表示去掉Anchor稠密化策略,实验二表示使用三个卷积层来代替MSCL,也即是使用单一的感受野,实验三表示使用ReLU来代替CReLU。可以看到本文的几个创新点是非常给力的。下面的Figure6展示了其在FDDB上的ROC曲线:
FDDB上的ROC曲线对比
总的来说FaceBoxes在对人脸并不hard的情况下识别率是很好了,并且速度也相对较快,虽然在今天看来应用的价值不大了,但是里面提出的Trick和做的实验还是有参考意义的。有问题欢迎留言交流。
本文分享自 GiantPandaCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!