OpenFace安装教程及踩坑记录 (Ubuntu20.04—2024.10.24)
一、环境准备
1.安装gcc及g++ (version>=8)
#查看版本
gcc --version
g++ --version
#安装(官方教程安的是g++8,实测g++9是完全可以的,但是需要修改后面的安装指令)
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install g++-8
2.安装cmake (OpenFace 所需的 CMake 版本至少为 3.8)
sudo apt-get install cmake
3.安装OpenBLAS
sudo apt-get install libopenblas-dev
4.安装OpenCV
#4.1 安装依赖:
sudo apt-get install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
#4.2 下载OpenCV: https://github.com/opencv/opencv/archive/4.1.0.zip
wget https://github.com/opencv/opencv/archive/4.1.0.zip
#4.3 解压并准备构建
sudo unzip 4.1.0.zip
cd opencv-4.1.0
mkdir build
cd build
#4.4 构建及安装:
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TIFF=ON -D WITH_TBB=ON ..
sudo make -j2
sudo make install
5.安装dlib
#5.1下载dlib: http://dlib.net/files/dlib-19.13.tar.bz2
wget http://dlib.net/files/dlib-19.13.tar.bz2
#5.2解压并准备构建
tar xf dlib-19.13.tar.bz2
cd dlib-19.13
mkdir build
cd build
#5.3构建并安装
cmake ..
cmake --build . --config Release
sudo make install
sudo ldconfig
6.安装Boost
sudo apt-get install libboost-all-dev
二、OpenFace 安装
1.下载OpenFace:https://github.com/TadasBaltrusaitis/OpenFace.git
注意:官方代码是不全的,需要额外下载几个东西:(坑1)
1)CEN.zip:
#CEN.zip下载地址
https://www.dropbox.com/scl/fo/pq55xsw9eabf346vivmqn/AClMzt769mNe8ISrPjL9Bdo?rlkey=7qq9uk66x877ck4nny45qdzn2&e=1&dl=0
包含12个.mat文件和4个.dat文件:
将12个.mat文件放到../OpenFace/matlab_version/models/cen
下
将4个.dat文件放到../OpenFace/lib/local/LandmarkDetector/model/patch_experts
下
2)haarcascade_frontalface_alt.xml:
(解决Could not find the HAAR face detector location-没有找到 Haar 级联检测器的问题,坑2)
#haarcascade_frontalface_alt.xml下载地址
https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_alt.xml
将其放到../OpenFace/build/bin/model
下(build是构建OpenFace时【步骤二、2】创建的文件夹)
2.构建编译及安装 (注意将g++和gcc版本换为自己的版本,这里是g++9和gcc-8)
#创建构建文件夹
cd OpenFace
mkdir build
cd build
#编译及安装(注意将g++和gcc版本换为自己的版本,这里是g++-9和gcc-8)
cmake -D CMAKE_CXX_COMPILER=g++-9 -D CMAKE_C_COMPILER=gcc-9 -D CMAKE_BUILD_TYPE=RELEASE ..
make
3.测试(目前在../OpenFace/build
文件夹)
想要将结果输出到指定文件夹,可以在指令最后加上-out_dir
指令,如: -out_dir /root/autodl-tmp/OpenFace/test
#视频检测:
./bin/FaceLandmarkVid -f "../samples/changeLighting.wmv" -f "../samples/2015-10-15-15-14.avi"
#图片检测:
./bin/FaceLandmarkImg -fdir "../samples/" -wild
#多人脸视频检测:
./bin/FaceLandmarkVidMulti -f ../samples/multi_face.avi
#特征提取(facial landmarks, head pose, AUs, gaze and HOG and similarity aligned faces):
./bin/FeatureExtraction -verbose -f "../samples/default.wmv"
在无图形界面的测试及使用:
在无图形界面的运行环境下,OpenFace 会遇到一些问题,特别是涉及到 GTK 的显示问题 和 OpenCV 的异常(坑3)。
#遇到的问题
Could not find the HAAR face detector location
Reading the landmark detector/tracker from: ./bin/model/main_ceclm_general.txt
...
(sim_warp:72320): Gtk-WARNING **: 15:35:07.444: cannot open display:
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.1.0) /root/autodl-tmp/opencv-4.1.0/modules/core/src/system.cpp:1533: error: (-215:Assertion failed) key_ != -1 && "Can't fetch data from terminated TLS container." in function 'getData'
我们可以使用 xvfb 来创建虚拟显示,这样可以绕过没有 GUI 的问题。(实测有效)
#安装 xvfb
sudo apt-get install xvfb
#使用 xvfb-run 运行 OpenFace:
xvfb-run ./bin/FeatureExtraction -verbose -f "../samples/default.wmv" -out_dir /root/autodl-tmp/OpenFace/test -no_gui -fd 2
#-fd 2 参数是指定 DLIB 作为面部检测器(Haar 级联和 MTCNN 检测器在没有 GUI 支持的环境下可能会遇到一些问题)
#-no_gui是禁用GUI
注:本文实测环境为Ubuntu20.04,不代表其他系统版本效果,结果仅供参考。
本文所涉及的包及模型文件已打包,可在如下链接获取:百度网盘 提取码:pwsx
主要参考资料:
OpenFace官方安装教程
OpenFace安装问题—Could not find CEN patch experts
OpenFace在linux下的详细环境配置