mtcnn是人脸检测的经典方法,项目地址如下:https://github.com/kpzhang93/MTCNN_face_detection_alignmentgithub.com
然而,要跑起来,还是花了不少时间。
我建的目录结构如下:
mtcnn |
|-------caffe
|-------MTCNN_face_detection_alignment
|-------toolbox
其中,MTCNN_face_detection_alignment是本项目的主目录。
一 caffe基础版本编译,保证能够通过runtest;
二 安装matlab
三 安装matcaffe
安装matcaffe表面看很简单,就是编译完caffe后:
1、在Makefile.config中添加matlab的目录
2、make matcaffe
3、make mattest
很简单吧。
然而,这三个地方都有大坑!
matlab我先安装的R2017b,然而在作mattest的时候先通过了第一步Net测试,然后弹出一个提示问说matlab要重启,选y还是n,但是不管选哪个,都会崩!
按网上的说法,可能是matlab版本太高了。我就从2017降到了2016,结果还是崩,降到了2015,通过!可网上也有人用2016通过了,高不清楚怎么回事。
所以,选matlab版本,直接选2014或2015。
make的时候还会提示编译器版本过高,要求使用4.9的,不用理会,我用5.5版本直接编译,最后会一边告警一边提示MEX已经生成,表示编译成功。
编译遇到的其他问题,见这里:配置matcaffe 遇到的两个坑www.cnblogs.com
mattest的问题解决了,然后mtcnn也是坑多多
首先,mtcnn的项目地址里没有明确写出运行过程,还要自己去网上找到具体的过程。
我选择先运行项目中的MTCNNv2
具体路径在:
MTCNN_face_detection_alignment/code/codes/MTCNNv2,先打开文件夹。
首先,在matlab的命令行中输入:
addpath('/home/xxxx/mtcnn/caffe/matlab')
savepath
这里,括号中的路径就是matcaffe路径。在 运行了make matcaffe后就能在caffe路径下找到matlab目录。
运行时先后遇到了这些错误,见:https://blog.csdn.net/applefl/article/details/89407419blog.csdn.nethttps://blog.csdn.net/Jee_King/article/details/77765594blog.csdn.net
错误:
libcudnn.so.6: cannot open shared object file: No such file or directory.
解决:
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.6 /usr/local/lib/libcudnn.so.6 && sudo ldconfig
除了libcudnn,还先后报过其他一些库,也可以用类似的方法解决。
还遇到一个问题,一直提示libgdal.so库中所依赖的 libtiff.so.5中缺乏一个符号LIBTIFF_4。我检查/usr/lib中,发现没有libtiff.so.5库,就添加了一个对应的软链接进去,但是没用!!
后来通过搜索,找到了一大堆的libtiff.so.5,因此我估计是没有找到正确的libtiff.so.5 .在/usr/local/MATLAB/R2015b/bin/glnxa64下找到了一个libtiff.so.5,我猜测libgdal.so可能找的是这个库,就先将其改名看看是否会报missing一类的错误,结果改名后就直接通过了。
后来在网上查到,matlab后系统中有大量同名库,存在冲突和先后顺序的问题。这个问题估计就是顺序原因,matlab先在自家库房找.so文件,没有找到才去外面找。自家的型号老旧报错,删掉后就在外面找到最新能匹配的版本了。