OpenFace2.2.0的使用
OpenFace系列文章
前言
本文旨在记录和分享OpenFace支持的命令行操作,多为翻译自原项目作者提供的wiki。
提示:以下是本篇文章正文内容
一、OpenFace功能模块
1. FeatureExtraction 用于包含单个人脸的序列分析 2. FaceLandmarkVidMulti 用于包含多个人脸的序列分析 3. FaceLandmarkImg 用于单个图像的分析(可包含多个人脸)二、使用示例
1.提取C:\my videos\video.avi中的人脸信息(只包含一个人)
代码如下:
FeatureExtraction.exe -f "C:\my videos\video.avi"
2.如果上述文件中包含多个人脸
代码如下(示例):
FaceLandmarkVidMulti.exe -f "C:\my videos\video.avi"
ps:执行上述两条命令后,会在工作目录下生成一个名为“processed”的文件夹,存储有特征信息
3.如果你想一次处理多个视频文件
代码如下:
FeatureExtraction.exe -f "C:\my videos\video1.avi" -f "C:\my videos\video2.avi" -f "C:\my videos\video3.avi"
或者:
FaceLandmarkVidMulti.exe -f "C:\my videos\video1.avi" -f "C:\my videos\video2.avi" -f "C:\my videos\video3.avi"
4.如果你只是想提取头部姿态信息(而非全部信息)
代码如下:
FeatureExtraction.exe -f "C:\my videos\video1.avi" -pose
5.如果你想提取一个文件夹(C:\my videos\sequence1)下所有图片的信息
代码如下:
FeatureExtraction.exe -fdir "C:\my videos\sequence1"
或者:
FaceLandmarkVidMulti.exe -fdir "C:\my videos\sequence1"
ps:同以上两个功能模块,执行这条命令同样也会产生“processed”文件夹
6.如果你想提取某一张图片的信息
代码如下:
FaceLandmarkImg.exe -f "C:\my images\img.jpg"
7.多张图片
代码如下:
FaceLandmarkImg.exe -f "C:\my images\img1.jpg" -f "C:\my images\img2.jpg" -f "C:\my images\img3.jpg"
8.文件夹下的所有图片
代码如下:
FaceLandmarkImg.exe -fdir "C:\my images"
ps:FeatureExtraction和FaceLandmarkVidMulti应用于图像序列,图像序列前后来自于视频文件的各个帧,相似性大,而FaceLandmarkImg应用于无需的图像集合,图像序列没有前后关系。
三、完全文档
1.FaceLandmarkImg
a.单个图像分析
- -f (filename> filename为输入的图片,可以有多个-f标志
- -out_dir (directory> 用于设定输出文件“processed”的存储位置
- -root (dir> 用于设置运行根目录,设置后-f即可使用相对路径(节约时间)
- -inroot (dir>用于设置输入根目录,设置后-f即可使用相对路径(节约时间)
b.批量图像分析
- -fdir (directory> 输入一个包含多个图像的文件夹,可检测文件夹下的所有图像(jpg、jpeg、png、bmp)
- -bboxdir 导入人脸探测器以代替原有的人脸探测器(.txt)
- -out_dir (directory> 用于设定输出文件“processed”的存储位置
2.FeatureExtraction and FaceLandmarkVidMulti
a.与输入相关的参数
- -f (filename> filename为输入的视频文件,可以有多个-f标志
- -fdir (directory> 检测文件夹下的所有图像(默认为帧序列,存储同视频文件存为一个数据文件)
- -device (device id> 网络摄像头实时监测时须提供网络摄像头设备ID
- -cam_width 网络摄像头的宽度像素值(默认640只在有摄像头输入时参数有效)
- -cam_height 网络摄像头的高度像素值(默认480只在有摄像头输入时参数有效)
- -root (dir> 运行根目录
- -inroot (dir> 用于设置输入根目录,设置后-f即可使用相对路径(节约时间)
- -au_static OpenFace支持静态和动态两种动作单元预测模型。一般而言,在图像检测中默认使用静态模型,在图像序列和视频的检测中使用动态模型。但是对于一些特定的视频序列或者图像序列,并不具备很好的动态追踪特性,在这种情况下仍旧使用动态模型不利于检测的准确性,调用此参数可手动切换为静态模型。
b.与输出相关的参数
- -out_dir (dir> 为输出文件设定一个根目录,如不设置本参数,则默认在工作目录下创建processed文件夹
- -of (filename> 设置输出文件的文件名
- -oc <FOURCC_CODE> 输出视频文件的FOURCC编码,可能是表示文件后缀名?
c.其他与输出相关的参数
- -verbose 实时可视化处理过程,包含所有功能模块的可视化
- -vis-track 实时可视化面部追踪
- -vis-hog 实时可视化HOG特征(梯度方向直方图)
- -vis-align 实时可视化抠出来的面部区域
- -vis-aus 实时可视化面部动作单元
- -simscale (float> 面部相似性均衡的尺度(默认为0.7)
- -simsize (int> 面部相似性均衡中的图像宽高尺寸(像素)
- -format_aligned (format> 面部相似性对齐输出图像的后缀名(png、jpg等OpenCV支持的格式)
- -format_vis_image (format>可视化图像的输出格式(仅应用于FaceLandmarkImg)
- -nomask 面部相似性的图片不再用黑色遮罩无关部分
- -g 输出图像设置为灰度模式
与输出特征选取相关的: - -2Dfp 只输出2D关键点坐标(像素)
- -3Dfp 输出3D关键点坐标(mm)
- -pdmparams 输出刚性和非刚性形状参数
- -pose 输出头部姿态
- -aus 输出面部动作单元
- -gaze 输出眼部注视估计结果以及与它相关的特征(眼部关键点2D、3D坐标)
- -hogalign 输出HOG特征文件
- -simalign 输出追踪的人脸的相似性对齐图片
- -nobadaligned 如果输出人脸相似性对齐的图片,则不应该存储那些检测失败或无法识别的帧,以节省硬盘空间
- -tracked 输出关键点标记后的视屏文件
3.FaceLandmarkVid
- -f 输入的视频文件,多个视频文件可用多个-f标志来指定
- -device <device_num> 读取图像的摄像头编号(默认为0)
- -cam_width 输入摄像头宽度分辨率(默认640)
- cam_height 输入摄像头高度分辨率(默认480)
- -inroot (directory> 设定输入文件根路径,则-f指定的路径可用相对路径表示
4.适用于所有功能的一般参数
a.确定使用模型的参数
- -mloc (the location of landmark detection models>
可选项:
- “model/main_ceclm_general.txt” 默认选项,最准确最慢内存开销最大
- “model/main_clnf_general.txt” 在大多数情况下表现良好,不适用于侧脸和很夸张的表情
- "model/main_clnf_wild.txt 用部分数据集训练出来的,2的低配版
- “model/main_clnf_multi_pie.txt” 在光线充足的环境下表现很好
- “model/main_clm_general.txt” 最不准确但最快的模型
b.模型参数
- -wild 当图像难以检测时扩大搜索范围
- -multi_view <0/1> 使用多视图初始化(慢但是鲁棒性强),默认关闭
c.可选相机参数(用于适当的头部姿态和眼部注视计算)
- -fx (focal length in x>
- -fy <(ocal length in y>
- -cx (optical centre in x>
- -cy (optical centre in y>