首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CPU上的实时人脸检测算法FaceBoxes

CPU上的实时人脸检测算法FaceBoxes

作者头像
BBuf
发布2020-06-10 11:08:26
1.1K0
发布2020-06-10 11:08:26
举报
文章被收录于专栏:GiantPandaCVGiantPandaCV

1. 前言

今天来介绍一个在CPU上可以实时运行的人脸检测器FaceBoxes,FaceBoxes仍然是以SSD为基础进行了改进,在速度和精度上都取得了较好的Trade-Off,所以就一起来看看这篇论文吧。

2. 算法总览

我们先看一下FaceBoxes的整体结构图:

FaceBoxes的整体结构图和Anchor设计的细节

3. RDCL

RDCL即Rapidly Digested Convolutional Layers,主要包含下面几个要点:

4. MSCL

MSCL即Multiple Scale Convolutional Layers,主要包含下面几个要点:

  • 丰富感受野:使用了Inception模块来丰富感受野,感受野的知识可以看我们的这篇推文:目标检测和感受野的总结和想法
  • 多尺度检测:和SSD一样在多个尺度上进行检测。

5. CReLU减少卷积核数量

CReLU的论文如下:

https://arxiv.org/abs/1603.05201

整个文章的出发点来自于下图中的统计现象:

pair filter定义

即从所有卷积核中选择一个cos相似度最小的卷积核,然后我们再看看Figure2,意思就是对于所有的卷积核都寻找它的pair filter,并计算cos相似度得到蓝色的统计直方图,而红色的曲线则代表假设随机高斯分布生成的卷积核得到的相似度统计。

  • 现象

网络越前面的卷积核,参数的分布具有更强的负相关性。随着网络加深,这种负相关性逐步减弱。

  • 结论:

网络的前部,网络更倾向于捕获正负相位信息而ReLU会抹掉负响应,这就造成了卷积核的冗余。

  • CReLU定义:
CReLU(x)=[ReLU(x),ReLU(-x)]

输出维度自动加倍,例如

-3->[0,3]

好了,回到FaceBoxes中来,论文RDCL中将最后一层的通道数置为64,而不是128,然后接上一个CReLU,即加快了速度也不会对精度有太大影响。

CReLU和Inception模块的示意图如下所示:

CReLU和Inception模块的示意图

6. Anchor稠密化

对32x32的Anchor分别进行2,3,4倍稠密化的效果

7. 网络训练

除了SSD中经典的Hard negative mining解决正负样本严重不平衡的Trick外,在数据增强方面也有一些特殊设置,具体如下:

  • Color distorition:颜色抖动
  • Random cropping:从原图中随机裁剪5个方块patch,包含一个大方块,其它的分别在范围[0.3,1]倍原图的尺寸。
  • Scale transformation:将随机裁剪后的方块Resize到1024x1024。
  • Horizontal flipping:随机翻转。
  • Face-box filter:如果人脸BBox的中心在处理后的图片上,则保持其位置,并且将高或宽小于20像素的face box过滤出来(删除)。

这几个策略的具体细节就留给大家看源码了,另外我写的《从零开始学SSD》的PDF其实也介绍了一大半了,所以就不再赘述了。

8. 结果展示

在FDDB上的消融实验结果

其中实验一表示去掉Anchor稠密化策略,实验二表示使用三个卷积层来代替MSCL,也即是使用单一的感受野,实验三表示使用ReLU来代替CReLU。可以看到本文的几个创新点是非常给力的。下面的Figure6展示了其在FDDB上的ROC曲线:

FDDB上的ROC曲线对比

9. 结论

总的来说FaceBoxes在对人脸并不hard的情况下识别率是很好了,并且速度也相对较快,虽然在今天看来应用的价值不大了,但是里面提出的Trick和做的实验还是有参考意义的。有问题欢迎留言交流。

10. 参考

  • https://zhuanlan.zhihu.com/p/56931573
  • https://blog.csdn.net/shuzfan/article/details/77807550
  • CReLU:https://arxiv.org/pdf/1708.05234.pdf
  • 论文原文:https://arxiv.org/pdf/1603.05201.pdf
  • Pytorch代码:https://github.com/zisianw/FaceBoxes.PyTorch
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GiantPandaCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 算法总览
  • 3. RDCL
  • 4. MSCL
  • 5. CReLU减少卷积核数量
  • 6. Anchor稠密化
  • 7. 网络训练
  • 8. 结果展示
  • 9. 结论
  • 10. 参考
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档