[论文理解] LFFD: A Light and Fast Face Detector for Edge Devices
LFFD: A Light and Fast Face Detector for Edge Devices
摘要
从微信推文中得知此人脸识别算法可以在跑2K图片90fps,仔细一看是在RTX2070下使用tensorrt下才能达到。最近刚好有个目标检测的任务,检测的目的其实差不多,我们篮球组比赛中需要检测篮球和排球,传统方法的鲁棒性不好,因此拟打算用自己写个神经网络结构在nuc x86 cpu下能够取得不错的推理速度和准确率。所以准备参考这篇论文复现并修改实现篮球、排球的实时目标检测任务。
本文提出了轻量级的人脸检测算法,可以达到2K图片90FPS(广告),本文的大体框架是借鉴SSD目标检测框架的,但是却是一个anchor free的人脸检测框架,因为作者认为感受野本身就是天然的anchor,所以作者通过精细设计感受野完成了本篇的人脸检测任务。认为浅层layer的有效感受野应该与小目标size比值较大,这样可以充分利用周围特征对人脸检测的贡献;深层layer由于其感受野比较大,检测大目标,大目标人脸本身有足够的鼻子、眼镜等信息可以帮助判别人脸,所以不需要太大的有效感受野与人脸比例。根据这些想法,作者设计了本文的人脸检测网络结构。
感受野和有效感受野
感受野通俗讲就是feature map上一个点对应原图的一片pixel区域,计算方法也比较简单,我自己简单写了一下。

总结起来公式就是
\[
RF_{i} = RF_{i-1} + (k-1)S\\
其中k为i-1层到i层的kernel size,S为全局stride
\]
其实对于感受野而言,并不是感受野内的所有点都对后面结果起到决定性作用,而是以感受野中心呈高斯分布的区域内的点对后面结果起到关键作用,这区域称为有效感受野ERF。
据此作者得出下面三个对人脸识别很有帮助的结论:
- 对于人脸小目标来说,ERF最好能尽可能覆盖context information
- 对于中等人脸,ERF只需要覆盖一部分context information
- 对于大人脸目标,ERF甚至不需要覆盖其他额外的context information
网络结构

作者认为RF就是天然的anchor,由于人脸目标一般是方的,所以不需要考虑各种比例的box。在box匹配的时候,作者认为rf中心落在gt内的box为正样本,同时落在多个gt中的box为负样本、其他没有落在任何gt中的box也为负样本。此外,作者定义的gray scale,后面再提。
对于这样的网络设计,作者是这么想的:
100 pixels的RF的有效感受野为20-40pixels,所以作者就分了四个part,tiny part的c8 RF SIZE为55,去检测10-15pixels的人脸,c10检测15-20,以此类推。其中rf与avg face scale的比值随着层数加深而减少,高层大感受野预测大目标就不需要太多的context information,前面讲了。

网络实现中全用的3*3和1*1的卷积核,实现起来很简单。data augmentation用了 color distort、Random sampling for each scale和Randomly horizontal flip。
loss是regression loss和classification loss加权和。
regression loss直接简单粗暴L2loss,预测相对值:

classification loss是crossentropy loss。
box匹配的时候定义了gray scale,认为处于gray scale的box也应该为负样本。
对c13出的box而言,其检测的人脸像素为20-40pixels,认为[18,20]以及[40,44]像素的人脸不被c13预测,这是因为这些人脸属于hard目标,网络往往只能看到局部特征,很难判别,所以c13这个brach不预测他,让别的branch预测,对训练有好处。
此外还用了负样本挖掘(sort负样本的loss,选择loss比较大的一部分训练,其他不参与梯度反传,加速收敛)。
训练参数:
xavier初始化、图像标准化x-127.5/127.5、sgd 0.9 momentum,0weight decay,init lr0.1.
1080ti训练了5天。
后续
复现并修改后的BasketNet:https://github.com/aoru45/BasketNet
论文:https://arxiv.org/pdf/1904.10633.pdf
[论文理解] LFFD: A Light and Fast Face Detector for Edge Devices的更多相关文章
- 论文阅读(XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network)
XiangBai——[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
- [论文理解]关于ResNet的进一步理解
[论文理解]关于ResNet的理解 这两天回忆起resnet,感觉残差结构还是不怎么理解(可能当时理解了,时间长了忘了吧),重新梳理一下两点,关于resnet结构的思考. 要解决什么问题 论文的一大贡 ...
- [论文理解] CornerNet: Detecting Objects as Paired Keypoints
[论文理解] CornerNet: Detecting Objects as Paired Keypoints 简介 首先这是一篇anchor free的文章,看了之后觉得方法挺好的,预测左上角和右下 ...
- XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network
XiangBai--[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...
- [论文理解] Receptive Field Block Net for Accurate and Fast Object Detection
Receptive Field Block Net for Accurate and Fast Object Detection 简介 本文在SSD基础上提出了RFB Module,利用神经科学的先验 ...
- Fast R-CNN论文理解
论文地址:https://arxiv.org/pdf/1504.08083.pdf 翻译请移步:https://blog.csdn.net/ghw15221836342/article/details ...
- [论文理解] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 简介 Faster R-CNN是很经典的t ...
- [论文理解]Selective Search for Object Recognition
Selective Search for Object Recognition 简介 Selective Search是现在目标检测里面非常常用的方法,rcnn.frcnn等就是通过selective ...
- R-FCN论文理解
一.R-FCN初探 1. R-FCN贡献 提出Position-sensitive score maps来解决目标检测的位置敏感性问题: 区域为基础的,全卷积网络的二阶段目标检测框架: 比Faster ...
随机推荐
- C++ bool、三目运算符、引用
bool变量: C++相对于C语言加入了bool变量,其值为true(1) 和 false(0).true表示不为零的数 false表示为零的数,占用一个字节的空间. 代码: /* 编译环境 gc ...
- 运维ipvsadm配置负载均衡2
一.什么是lvs1.lvs的定义LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.是由章文嵩博士开发的一款开源软件,1998年5月发布,是中 ...
- vue组件之间通信的8种方式
对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的常用方式的总结. props和$emit(常用) $attrs和$listeners 中央事件总线(非父子组件间通信) v- ...
- mybatis捕获sql工具
今天给大家分享一款好用的软件 https://ssrss.space/register?aff=982689 日志级别必须是debug
- Delphi 数据类型
- OpenCV笔记(I)
这里记一下开始入手OpenCV碰到的一些问题以及解决办法.学习参考书是<OpenCV 4 计算机视觉项目实战(原书第2版)>,ISBN:978-7-111-63164-4. Ubuntu ...
- U-boot工作流程分析
bootloader的作用 bootloader就好比是航天飞机升天轨道上的助推器 程序入口:在_start这里 第一阶段程序分析: 1.设置中断向量表 2.设置处理器位SVC模式 3.0.刷新I/D ...
- SQL函数 Convert,dateadd
1.SQL中CONVERT转化函数的用法 格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字 ...
- Codeforces1238E. Keyboard Purchase(状压dp + 计算贡献)
题目链接:传送门 思路: 题目中的m为20,而不是26,显然在疯狂暗示要用状压来做. 考虑状压字母集合.如果想要保存字母集合中的各字母的顺序,那就和经典的n!的状态的状压没什么区别了,时间复杂度为O( ...
- 解决在linux下安装centos自带的mysql后,出现navicat远程连接失败的问题
最近在学习关于数据库相关的东西,所以下午尝试在linux下自己搭建了myql,我的mysql是直接安装centos系统自带的,安装过程不再赘述 安装完成后,从linux后台登录也显示成功,但是就是从n ...