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

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 updatesudo apt-get install build-essentialsudo 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-devsudo 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.zipwget https://github.com/opencv/opencv/archive/4.1.0.zip#4.3 解压并准备构建sudo unzip 4.1.0.zipcd opencv-4.1.0mkdir buildcd 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 -j2sudo make install

5.安装dlib

#5.1下载dlib: http://dlib.net/files/dlib-19.13.tar.bz2wget http://dlib.net/files/dlib-19.13.tar.bz2#5.2解压并准备构建tar xf dlib-19.13.tar.bz2cd dlib-19.13mkdir buildcd build#5.3构建并安装cmake ..cmake --build . --config Releasesudo make installsudo 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下的详细环境配置


http://www.mrgr.cn/news/58380.html

相关文章:

  • 鸿蒙ArkTS中的资源管理详解
  • 【STM32编码器】【STM32】
  • [Linux网络编程]04-多进程/多线程并发服务器思路分析及实现(进程,信号,socket,线程...)
  • 基于Python和OpenCV的疲劳检测系统设计与实现
  • 域渗透相关内网 或 域AD环境搭建 域环境收集方式方法命令 查看 检测域控主机或者域内主机是否安装杀软方式
  • 策略模式是一种行为设计模式
  • 私域小程序怎么运营,如何引流?(三)
  • 基于神经网络的农业病虫害损失预测
  • 双十一好用的家居好物有哪些?这五款产品绝对值得入手!
  • ue5实现数字滚动增长
  • 【K8S系列】Kubernetes Service 基础知识 详细介绍
  • 数据结构概述
  • 全位解读:“数据要素”的那些事!
  • 只想简单跑个 AI 大模型,却发现并不简单
  • Lua语法基础全面剖析(上篇)
  • 【算法】超快理解冒泡排序(含c#、c++、java、python代码)
  • BLIP2部署教程
  • Python突破浏览器TLS/JA3 指纹
  • BestMan:具有统一仿真硬件 API 的模块化移动机械手平台,用于具身 AI
  • 深入解析Java中的锁
  • 【漏洞复现】金和OA_jc6_ntko-upload任意文件上传漏洞.md
  • 制作视频费时费力?在这里只要简单几步就够了
  • 深入拆解TomcatJetty——Tomcat生命周期与多层容器
  • 【设备状态与人员动态的监测和呈现-会议签到的补充】
  • 智慧商城项目4-购物车功能
  • Django配置路由后,为什么输入http://127.0.0.1:8000/ 网址后报错了?