收集一些人脸对齐相关的开源代码,并做简单的比较
1. 基于MTCNN的方法
[code],是matlab实现的,在sphereface等里面用于数据预处理,速度快,论文时间为2016年
2. cmu的openpose:
相关的姿态pose、手势为2017年论文;人脸的检测是使用手势的同一套网络,但是数据集是人脸的数据集,比如微软的coco
安装
a). 需要安装cmake-gui;如需要指定caffe路径的话,参考b)中的路径设置
b).如果不安装的话,需要指定opencv和caffe的路径,方法(提供了两种方法,二选一);
mkdir build
cd build
cmake -DOpenCV_INCLUDE_DIRS=/usr/local/include/ -DOpenCV_LIBS_DIR=/usr/local/lib/ -DCaffe_INCLUDE_DIRS=/home/X/work/caffe_master/build/src -DCaffe_LIBS=/home/X/work/caffe_master/build/lib/libcaffe.so -DBUILD_CAFFE=OFF ..
make -j8
# make -j`nproc`
在make的时候,非常麻烦的错误是,还需要引用hpp头文件。Ubuntu下编译的结果不会再build下面再包含头文件,所以解决办法就是将caffe_root/include/caffe整个的复制的build/src/caffe下,爱用哪个头文件就用哪个头文件吧。
c). 调用,比如这样
./build/examples/openpose/openpose.bin --image_dir ~/work/face-alignment/test/assets/ --face --num_gpu 1 --write_keypoint ~/work/face-alignment/test/assets/
但是效果比较差,不如1adrianb的效果,当然是选择了比较难的样本。
3. 1adrianb/face-alignment
人脸检测是基于dlib中的人脸检测方法,该方法是dlib_face_recognition_resnet_model_v1 模型,在2017年的LFW上精度为99.38%,目标是3D人脸的对齐。
安装
- 安装dlib; 该模式生成关键点,但也可以指定检测模型。
- 需要下载tar,2D的路径是这个,所下载的文件保存到了~/.face_alignment中。在Ubuntu中可以直接下载,有时候在window下打开需要翻墙,所以也一并将他们贴到CSDN资源池里面了,下载文件一,文件二,以及3D时需要的depth网络模型(链接:https://pan.baidu.com/s/1Y10qL3Lcp6nPZb-uSlbAVg 密码:9vqx)
- pytorch需要较新的版本,因为里面用到了比如with no_grad(),在0.2中不存在。pytorch需要更新,更新的时候可能遇到pip不能安装的问题,还挺普遍存在,可以下载下来,升级wheel到3,再次安装。
- 调用:使用官网给的范例就够了,输出的是关键点的二维数组。
4. 1adrianb/binary-human-pose-estimation
是2017Binarized Convolutional Landmark Localizers for Human Pose Estimation and Face Alignment with Limited Resources论文的实现,该论文作为ICCV 2017 Oral口头报告呈现。人脸和姿态都有,代码是分开的。
5. MarekKowalski/DeepAlignmentNetwork
是2017的论文,作者称DAN为 been accepted to the First Faces in-the-wild Workshop-Challenge at CVPR 2017
同样的,需要下载一些网络参数模型,也需要翻墙,上传到CSDN链接中,共三个(DAN,DAN-Menpo-tracking,DAN-Menpo)
6. kayamin/DR-GAN
该论文Disentangled Representation Learning GAN for Pose-Invariant Face Recognition,论文名称是《Representation Learning by Rotating Your Faces》,还有其他的实现,可以参考一下Github。
7. Deep Face Feature for Face Alignment (没有代码)
此论文2018称优于3DDFA、jourabloo&liu、ERT。
8. tpys/face-everthing
是一些以往的代码的集成,但不全是alignment,没什么用。