01 基本环境
win10 git cmake boost-1_65_1 python3.6.1
编译dlib库,dlib_samples,dlib_python接口(dlib.pyd)。
02 获取代码,切换到最新稳定版本
cd d:\git
git clone --recursive https://github.com/davisking/dlib.git
cd dlib
git tag # 查看最新tag,2017-09-09最新tag v19.6
git checkout -b b19.6 v19.6
03 编译dlib库
03.01 配置cmake-gui
源码路径:d:/git/dlib
编译路径:d:/git/dlib/build/x64_19.6_C_Only
注意:如果系统已经配置了CUDA环境,cmake-gui会自动选中,这里不编译对cuda的支持,所以如果默认选中,需要取消勾选。(DLIB_USE_CUDA=0)
配置CMAKE_INSTALL_PREFIX=d:/git/dlib/build/x64_19.6_C_Only/install
03.02 编译、安装
用vs2015打开`D:\git\dlib\build\x64_19.6_C_Only\Project.sln
编译ALL_BUILD项目后,再单独生产INSTALL项目。即完整生产dlib库。
04 编译dlib python接口(dlib.pyd)
04.01 配置boost
编译vs2015 boost支持库,目前最新版本boost是boost_1_65_1。
# 参考
b2 install --toolset=msvc-14.0 --build-type=complete address-model=64 --stagedir="D:\git\boost\bin\boost_1_65_1\msvc14" --build-dir="D:\git\boost\tmp\boost_1_61_1\msvc14" threading=multi
最后把编译好的内容配置到c:\boost
C:\Boost\include\boost
C:\Boost\lib
配置环境变量
BOOST_ROOT=C:\Boost
BOOST_LIBRARYDIR=C:\Boost\lib
04.02 安装配置python3.6.1
主要注意需要安装对Debug的支持
04.03 配置cmake-gui
源码路径:d:/git/dlib/tools/python
编译路径:d:/git/dlib/build/x64_19.6_python
点击[Configure],出现如下效果。
勾选PYTHON3选项(PYTHON3默认未勾选)。
勾选Advanced 选项,设置Python3项和boost库项后,点击[Configure]。
# 设置安装路径
CMAKE_INSTALL_PREFIX=D:/git/dlib/build/x64_19.6_python/install
Boost_INCLUDE_DIR=C:/Boost/include
Boost_PYTHON_LIBRARY_DEBUG=C:/Boost/lib/libboost_python3-vc140-mt-sgd-1_65_1.lib
Boost_PYTHON_LIBRARY_RELEASE=C:/Boost/lib/libboost_python3-vc140-mt-s-1_65_1.lib
PYTHON3=1
PYTHON_DEBUG_LIBRARY=C:/Python36/libs/python3_d.lib
PYTHON_EXECUTABLE=C:/Python36/python.exe
PYTHON_INCLUDE_DIR=C:/Python36/include
PYTHON_LIBRARY=C:/Python36/libs/python3.lib
PYTHON_LIBRARY_DEBUG=C:/Python36/libs/python3_d.lib
# 勾选 USE_SSE4_INSTRUCTIONS
USE_SSE4_INSTRUCTIONS=1
点击[Configure]按钮后,CMake会多出来一些选项,重新设置多出的部分选项
Boost_LIBRARY_DIR_DEBUG=C:/Boost/lib
Boost_LIBRARY_DIR_RELEASE=C:/Boost/lib
Boost_PYTHON3_LIBRARY_DEBUG=C:/Boost/lib/libboost_python3-vc140-mt-sgd-1_65_1.lib
Boost_PYTHON3_LIBRARY_RELEASE=C:/Boost/lib/libboost_python3-vc140-mt-s-1_65_1.lib
# 不勾选DLIB_ENABLE_ASSERTS,默认
DLIB_ENABLE_ASSERTS=0
# 勾选DLIB_JPEG_SUPPORT,默认
DLIB_JPEG_SUPPORT=1
# 勾选DLIB_PNG_SUPPORT,默认
DLIB_PNG_SUPPORT=1
# 系统有CUDA环境,被自动识别,DLIB_USE_CUDA默认被勾选。改为不勾选
DLIB_USE_CUDA=0
# 清空一下5项内容
JPEG_INCLUDE_DIR
JPEG_LIBRARY
PNG_LIBRARY_DEBUG
PNG_LIBRARY_RELEASE
PNG_PNG_INCLUDE_DIR
# 勾选USE_AVX_INSTRUCTIONS和USE_SSE2_INSTRUCTIONS
USE_AVX_INSTRUCTIONS=1
USE_SSE2_INSTRUCTIONS=1
设置以上内容后,点击[Configure]、[Generate]。
04.04 编译dlib.pyd
用vs2015打开D:\git\dlib\build\x64_19.6_python\Project.sln
编译。
编译,出现如下错误:LINK : fatal error LNK1104: 无法打开文件“python36.lib”
修改dlib_项目的配置属性。添加python36的libs目录。
dlib_的Debug和Release的配置属性中添加C:/Python36/libs;
配置属性==>链接器==>常规==>附加目录==>添加C:/Python36/libs;
再次编译ALL_BUILD,成功。然后,生成INSTALL项目。会把dlib.pyd拷贝到dlib\python_examples\dlib.pyd
Debug版本的dlib.pyd在import dlib
时,会出现如下错误:
import dlib
ImportError: DLL load failed: 找不到指定的程序。
编译Release版本,并且INSTALL。
04.05 测试Release版本dlib.pyd
dlib的python用例程序在dlib\python_examples
。安装Release版本dlib.pyd后。用PyCharm打开D:\git\dlib\python_examples\max_cost_assignment.py
运行。效果如下。
05 编译dlib samples
05.01 配置opencv
dlib用例需要opencv的支持。opencv3.3.0实现了对dnn的支持,这里使用3.3.0版本opencv。下载地址:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.3.0/opencv-3.3.0-vc14.exe/download。
自解压到:D:\git\DeepLearning\tensorflow_package\opencv3.3.0
05.02 配置cmake-gui
注意:尽量直接采用D:/git/dlib/examples的CMakeLists.txt。不要采用04中的方式。
源码位置:D:/git/dlib/examples
编译位置:D:/git/dlib/build/x64_19.6_examples
CMAKE_INSTALL_PREFIX=D:/git/dlib/build/x64_19.6_examples/install
DLIB_ENABLE_ASSERTS=0
DLIB_JPEG_SUPPORT=1
DLIB_PNG_SUPPORT=1
DLIB_USE_CUDA=0
OpenCV_DIR=D:\git\DeepLearning\tensorflow_package\opencv3.3.0\build
USE_AVX_INSTRUCTIONS=1
USE_SSE2_INSTRUCTIONS=1
USE_SSE4_INSTRUCTIONS=1
05.03 编译dlib samples
用vs2015打开D:\git\dlib\build\x64_19.6_examples\examples.sln
编译,成功。
05.04 测试
官网例子:http://dlib.net/face_landmark_detection_ex.cpp.html。
下载http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2,并解压到Debug的输出目录(
(OutDir))。保存图片lena.jpg到Debug的输出目录(
(OutDir))。
vs2015 设置face_landmark_detection_ex为启动项。配置face_landmark_detection_ex项目属性:
配置属性==>调试==>工作目录==>$(OutDir)
配置属性==>调试==>命令参数==>shape_predictor_68_face_landmarks.dat lena.jpg
运行效果:
processing image lena.jpg
Number of faces detected: 1
number of parts: 68
pixel position of first part: (166, 250)
pixel position of second part: (164, 268)
Hit enter to process the next image...