首先从官网下载dlib,或者从gittub上:https://github.com/davisking/dlib
一、安装
安装dlib的时候遇到问题可能的原因:
1.conda环境不对,后面换为Anaconda3-5.2.0-Linux-x86_64.sh即py3.6版本。
2.dlib的版本不对,之前为19.17。后面换成了19.16.99。
3.之前折腾好久因为安装步骤不对,准确步骤如下:
cd dlib/tools/imglab
mkdir build
cd build
cmake ..
cmake --build . --config Release
然后 ../../,执行sudo pyrhon setup.py install
注意:注意看安装后的提示,比如:creating /home/ccy/anaconda3/lib/python3.6/site-packages/dlib-19.16.99-py3.6-linux-x86_64.egg(表示安装在了anaconda的python下,之前都是安装在ubantu自带的python下面,而terminal输入python又默认conda的python,一直不能导入dlib)
折腾好久就是因为默认不是使用的conda的python,而是ubantu自带的python,刚好第一次conda也是py3.5,ubantu自带的python3也是py3.5,一直查不出问题出在哪里。后来删除了ubantu自带的python2和python3:sudo rm /usr/bin/python3.5 /usr/bin/python3.5m /usr/lib/python2.7 /usr/lib/python3.5 /etc/python3.5 /usr/local/lib/python3.5 -r
当然最方便的方法是conda创建虚拟环境,或者制定conda的python为默认版本:sudo ln -s /home/wxl/anaconda3/bin/python /usr/bin/python(通过新建链接的方式制定,也可以以覆盖的方式ln -f)
二、使用
1.在build文件目录下新建图片文件夹比如picture1或者images,把需要标签的图片放入文件夹(可以先对每张图片先进行重命名)
2.在images文件夹下生成名字为mydataset.xml文件,用命令:
./imglab -c ./images/mydataset.xml images
3.打开标签窗口:
./imglab ./images/mydataset.xml打开标签窗口
4.打标注,打标签,保存,退出软件
5.再次打开imglab mydataset.xml
xml其实就是保存标注点的坐标信息了。注意:标注时应该所有标注框具有相似的长宽比,数据样本量不能过多,当前超过300张会报错!!
其中box是人脸框的坐标,part是特征点的坐标
备注:工具命令
shirt+左键 长方形的框
先选中长方形的框,再shirt+左键 特征点标注
ctrl+滚动轴 放大或者缩小
键盘的up和down 上/下一张图片
alt+d 删除当前图片
选中框+del 删除框
(选不中的时候记得双击)
当前疑问:怎样训练带特征点的检测器
dlib::shape_predictor , dlib::full_object_detection是dlib里面的两个两个类
经常的一个实例就是:
先用一个人脸检测模型得到bounding box, 比如rect;
然后用已经载入的shape模型pose_来得到full_object_detection对象
三、训练
训练的时候有多种方式:
1.dlib.train_simple_object_detector()表示训练一般的分类器
2.dlib.shape_predictor()表示训练带关键点的分类器
其调用方式也不同:
rects = dictor(gray, 1)
shape = predictor(image, d)
建议在dlib-master/python_examples文件夹中看源码修改
注意:训练之前应该先选好图片,中期不用alt+d对图片进行删除,更不能在文件夹中对图片进行直接删除,先跳过去不打标签,后期再根据错误排除