当前位置: 首页 > article >正文

OpenFace安装教程及踩坑记录 (Ubuntu20.04—2024.10.24)

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,不代表其他系统版本效果,结果仅供参考。
本文所涉及的包及模型文件已打包,可在如下链接获取:网盘

主要参考资料:
OpenFace官方安装教程
OpenFace安装问题—Could not find CEN patch experts
OpenFace在linux下的详细环境配置


http://www.kler.cn/news/364509.html

相关文章:

  • 家用wifi的ip地址固定吗?换wifi就是换ip地址吗
  • RabbitMQ常见问题持续汇总
  • Spring Cloud --- GateWay和Sentinel集成实现服务限流
  • Maven基础知识
  • 前端学习---(5)js基础--3
  • volatile 关键字的作用学习
  • ElasticSearch全文检索和倒排索引
  • 杂项笔记
  • 100种算法【Python版】第8篇——群体智能优化算法之人工蜂群算法
  • Docker容器的基础镜像:构建现代应用程序的基石
  • PYTHON实现麦克风实时传流语音听写
  • verilog函数和任务
  • 跳表:数据结构中的“快速通道”
  • 内容安全与系统构建加速,助力解决生成式AI时代的双重挑战
  • c# lambda表达式基础语法
  • java基础day04:方法(函数),练习
  • Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题
  • 一个vue3的待办列表组件
  • 【如何使用git将自己注释不上传到git服务器】
  • 博客搭建之路:hexo搜索引擎收录
  • pyflink 时序异常检测——PEWMA
  • 漏洞挖掘 | 记一次逻辑漏洞修改任意用户密码
  • 从0到1实现你自己的AI Chat应用
  • 密码学----RSA算法
  • Higress 云原生网关
  • JVM监控与调优工具