Face Detection

项目名称:人脸检测
编程语言:Tensorflow/Python

电脑配置:
name: GeForce GTX 1060 major: 6 minor: 1 memoryClockRate(GHz): 1.6705
pciBusID: 0000:01:00.0
totalMemory: 5.94GiB freeMemory: 5.86GiB


Introduction:

        该项目是本人申请的研究生创新项目中的一部分,上接行人和车辆检测,当物体检测模型检测出行人和车辆以后,会把检测到的物体切割出来,然后把这些物体中的行人图片输送到人脸检测模型中去,让人脸检测模型去检测出人脸,如果有人脸识别功能的话,还可以实现人脸信息的识别。


Model:

PyramidBox Model

PyramidBox的优点

1.本文提出了一种基于 anchor 的环境辅助方法,即 PyramidAnchors,从而引入有监督的信息来为较小的、模糊的和部分遮挡的人脸学习环境特征。
2.我们设计了低层级特征金字塔网络 (LFPN) 来更好地融合环境特征和面部特征。同时,该方法可以在单步中较好地处理不同尺度的人脸。
3.我们提出了一种环境敏感的预测模型,该模型由混合网络结构和 max-in-out 层组成,从融合的特征中学习准确的定位和分类。
4.我们提出了一种关注尺度的 data-anchor-sampling 策略,改变训练样本的分布,重点关注较小的人脸。
5.在通用人脸检测基准 FDDB 和 WIDER FACE 上,我们达到了当前最佳水平。


Train:

模型训练使用的是WIDER FACE数据集,基础模型用的是VGG 16,训练时可以使用预训练的VGG 16模型,具体训练过程不在详细叙述,参考代码


Test:

原始图片
预测结果

上述bounding box的得分情况如下:

1. 0.997
2. 0.748
3. 0.769
4. 0.932
5. 0.989
6. 0.989
7. 0.915


使用切割图进行检测:

第三个预测结果并不好,因为是切割的图像,分辨率非常低,导致预测精度比较低,容易出现误判的情况,可以对比完整图像和切割图像的准确度。


Question:

1. E [tensorflow/stream_executor/cuda/cuda_driver.cc:466] failed call to cuInit: CUDA_ERROR_NO_DEVICE
I [tensorflow/stream_executor/cuda/cuda_diagnostics.cc:86] kernel driver does not appear to be running on this host (ubuntu-G2): /proc/driver/nvidia/version does not exist
执行nvidia-smi显示: NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
解决办法:这是linux kernel 4.4.0-116-generic的一个小bug,降级到linux kernel 4.4.0-112-generic,再重装一下driver(不用重装cuda)问题就解决了,参考安装


参考链接:

1. PyramidBox
2. Paper 翻译
3. Codes
4. FPN
5. SSH
6. S³FD
7. DataSets  提取码: 6crf

本文总结于网络文章,加入了个人理解,仅用于个人学习研究,不得用于其他用途,如涉及版权问题,请联系邮箱513403849@qq.com