综述

我们在进行人脸识别深度学习算法研究过程中除了使用开源带标签的数据以外,都会用到大量自收集的图像数据(开源/爬虫/自拍等),然这些数据大多数是没有人脸区域标注标签的。而我们在研究人脸各种检测算法时最终训练需要的基本只是人脸区域的图像数据,所以如何提取这些特定数据便是数据收集工作的重点。

如果只通过人工手动标注,不仅效率太低,而且准确率也无法保证。这时借助一些现有的人脸检测算法来自动化提取人脸区域数据便是一个不错的选择。这里主要介绍两套开源的算法及二次开发的提取工具,也是我日常工作中常用的,可以起到事半功倍的效果,在此做一个分享。

复杂网络模型的算法

复杂场景下的复杂网络算法实现人脸定位与提取,主要适合从一些复杂场景下(多遮挡/大姿态/非正常光照/模糊/小人脸)提取人脸,需要在带有一定性能的GPU设备的PC端使用。

该算法参考的是腾讯优图实验室开发的DSFD

Excel搭建人脸识别CNN 人脸识别数据采集工具_人工智能


检测精度在开源数据集widerface和fddb测试相比各种其他算法最优

Excel搭建人脸识别CNN 人脸识别数据采集工具_深度学习_02


Excel搭建人脸识别CNN 人脸识别数据采集工具_人工智能_03


Excel搭建人脸识别CNN 人脸识别数据采集工具_Excel搭建人脸识别CNN_04


Excel搭建人脸识别CNN 人脸识别数据采集工具_人脸检测_05


我根据DSFD中的开源代码,二次开发了一套可直接使用的人脸提取python工具FaceDetection_DSFD_Crop

使用方法如下:

1. 安装工程运行所需python库
2. 下载主模型文件:[WIDERFace_DSFD_RES152.pth](https://pan.baidu.com/s/11da8dPjfi930iEfLVvDrmQ)(提取码:acu8,下载后在工程目录下创建weights文件夹,将其拷贝到该目录下)
3. 下载辅助模型文件:[resnet152-b121ed2d.pth](https://pan.baidu.com/s/1D6ZrxyyiWbOftJ8HGkzfwg)(提取码:5yvb,第一次运行Demo时,系统会自动创建/home/username/.cache/torch/checkpoints/目录并将下载的模型文件下载到里面,为节省时间可直接将其拷贝到里面)
4. 拷贝需要提取人脸的图片文件夹到指定路径
5. 修改get_face_crop.py代码:根据需要设置以下四个参数:
  • input_img_root_path:待提取人脸原图根目录路径
  • output_img_root_path:提取人脸区域图像目标存储路径
  • max_resize_value:人脸原图缩放边长阈值(建议根据GPU性能设置,如GTX1060 6GB RAM设置为600,GTX1660Ti 6GM RAM设置为800)
  • faceSize_threshold:人脸区域提取边长阈值(过滤掉阈值以下的过小人脸)
6. 运行get_face_crop.py代码(建议在命令行下执行)

轻量网络模型的算法

复杂场景下的轻量网络算法实现人脸定位与提取,主要适合从一些复杂场景下(多遮挡/大姿态/非正常光照/模糊/小人脸)提取人脸,可以在没有GPU设备的PC端只通过CPU运行使用。
论文地址:FaceBoxes: A CPU Real-time Face Detector with High Accuracy 开源项目地址:FaceBoxes.PyTorch 我根据FaceBoxes.PyTorch中的开源代码,二次开发了一套可直接使用的人脸提取python工具FaceDetection_FaceBox_Crop 使用方法:

1. 安装工程运行所需python库
2. 拷贝需要提取人脸的图片文件夹到指定路径
3. 修改get_face_crop.py代码:根据需要设置以下四个参数:
  • wait_crop_img_root_path:待提取人脸原图根目录路径
  • target_crop_img_dir_path:提取人脸区域图像目标存储路径
  • face_vis_threshold:人脸检测阈值(建议设置为0.7)
  • faceSize_threshold:人脸区域提取边长阈值(过滤掉阈值以下的过小人脸)
4. 运行get_face_crop.py代码(建议在命令行下执行)

以上两种算法及工具就介绍完了,感兴趣的网友可以一起讨论,如有不足之处,还请各位大神指正。