使用决策树和NN自动编码器进行实时面部标记。
下面是小编整理好的一套C/C++资料,加小编C/C++学习群825414254获取系统性学习C/C++的学习资料
image该软件(主要)是用C ++编写的(其中一些ML部分用Python编写)。对于视频捕获和处理,它使用OpenCV(OpenCV也用于初始面部检测)。
在该项目中,面部标记是一个迭代过程,它使用简单的过滤器和决策树更新每个帧的关键面部点的位置。同时NN自动编码器确保面部的整体形状保持正确。
这只是我的一个宠物项目,所以它仍然需要一些工作。特别是我没有那么多时间(也不会:D)进行扩展实验。大多数参数(如滤波器的形状和数量,NN的大小等)都是受过矿山教育的猜测。
此repo包含从数据集中提取要素,生成ML模型和使用面部标记所需的所有代码。缺少的是:依赖(如必须单独安装的OpenCV)和学习数据。
第一:在克隆回购的主目录下创建一个Data具有以下子目录目录:annotation,images,haar,mask,autoencoder,features和regressors。
必须将所有注释文件(1.txtto 2330.txt)提取到annotation目录中,并将所有图像(232194_1.jpgto 3266693323_1.jpg)提取到imagesdir中。
要从数据集中提取要素,必须使用-type features标志运行已编译的程序。此过程将在两个目录中创建包含学习示例的文件:autoencoder和features。maks/avg-face.mask还将生成包含基于整个数据集计算的平均面部形状的文件。
确保在执行此步骤(或以下任何其他步骤)./../Data时,程序可以看到目录。这是VS项目的默认配置。
这个过程可能需要一些时间。
要生成决策树和NN自动编码器,必须运行dir autoencoder.py和regressor.py脚本中的脚本FaceLandmarking.LearningProcess。
这个过程填充了regressorsdir。
如果前面的所有步骤都已成功完成,则该软件应该可以使用了。
测试它的最好方法是使用-type example标志运行程序。它将从数据集中加载示例(逐个)并显示它们。在每个空格键上点击程序将执行掩码调整的一个步骤。任何其他键击都会将图像更改为下一个。
最后,-type video可以使用标志加载文件的视频(带有-video [path]标志)。不幸的是,我没有时间玩视频设置,因此程序不会读取有关视频方向的信息。它(以及视频的大小)可能必须手动调节(使用-transform,-transform-rotate,-transform-width和-transform-height标志-看到main.cpp他们的默认值)。要初始化面部标记过程只需命中空间 - 它将在给定帧上运行haar过滤器以检测面部的初始位置。
image image image
网友评论