Face alignment in 3000 FPS

环境:Win64 Matlab2021

代码地址:jwyang/face-alignment: Face alignment in 3000 FPS (github.com)

  1. 数据集下载:https://blog.51cto.com/transfer?http://ibug.doc.ic.ac.uk/resources/facial-point-annotations

我下载的是Helen,在项目目录下新建文件夹‘datasets',将数据集转入该文件夹下:

  1. 配置训练样本函数依赖库liblinear

从网址​ ​http://www.csie.ntu.edu.tw/~cjlin/liblinear/​​可以直接下载liblinear库文件.

如果系统是windows64可以直接将里边windows文件夹中的文件全部拷贝到创建的matlab工程目录下;

Face alignment in 3000 FPS_第1张图片
  1. 准备训练数据:

将所有jpg格式的文件名都输入到Path_Images.txt文件中,cmd切换目录到datasets文件夹中的一个数据库中,比如.\helen,然后输入命令dir /b/s/p/w *.jpg>Path_Images.txt

Face alignment in 3000 FPS_第2张图片

Path_Images.txt:

Face alignment in 3000 FPS_第3张图片
  1. 训练:

1)在matlab工程目录下创建一个m文件,将其置入src目录下,命名为train_3000fps.m;

filepath_ranf = './ranf.mat';
filepath_ws = './ws.mat';
lbfmodel = train_model_func({ 'afw' });
ranf = lbfmodel.ranf;
ws = lbfmodel.Ws;
save(filepath_ranf, 'ranf');
save(filepath_ws, 'ws');

2)基于train_model.m重新生成train_model_func.m的函数形式;

二者的主体内容完全一样,train_model_func.m只需要在函数开始部分添加一行函数头即可;

function LBFRegModel = train_model_func( dbnames )

然后执行train_3000fps.m文件开始进行训练,训练时间可能会比较长,训练完成之后会得到ranf.mat和ws.mat两个文件.

如果出现类似找不到文件错误,参考:(49条消息) MATLAB“在当前文件夹或MATLAB路径中未找到文件“的小“坑”_Wanderer.GG的博客-CSDN博客_在当前文件夹或matlab路径中未找到

开始训练:

Face alignment in 3000 FPS_第4张图片

5.测试集:

1)生成要进行测试的数据库的Path_Image.txt文件,然后在matlab工程目录下的src文件夹下创建test_3000fps.m文件

filepath_ranf='./ranf.mat';
filepath_ws='./ws.mat';

r=load(filepath_ranf);
w=load(filepath_ws);
ranf=r.ranf;
ws=w.ws;
t.ranf=ranf;
t.Ws=ws;

test_model_func({'ibug'},t);

2)基于test_model.m重新生成test_model_func.m的函数形式;

二者的主体内容完全一样,test_model_func.m只需要在函数开始部分添加一行函数头即可;

function [predshapes, Data] = test_model_func( dbnames, LBFRegModel )
Face alignment in 3000 FPS_第5张图片

如果出现未找到文件错误,直接在代码中相应位置修改为绝对路径:

6.开始测试:

filepath_ranf='./ranf.mat';
filepath_ws='./ws.mat'; 

r=load(filepath_ranf);
w=load(filepath_ws); 
ranf=r.ranf;
ws=w.ws; 
t.ranf=ranf;
t.Ws=ws;

% test_model_func({'ibug'},t);
% %查看结果
[predshapes, Data] = test_model_func({'ibug'}, t);
[X, Y, N] = size( predshapes );
for i=1:N
   shapes=predshapes(:,:,i);
   img=Data{i}.img_gray;
   %drawshapes(img, [shapes,Data{i}.shape_gt]);
   drawshapes(img, Data{i}.shape_gt);
   rectangle('Position',  Data{i}.bbox_facedet, 'EdgeColor', 'b');
   name = ['.\ibug\', int2str(i),'_1'];
   print(gcf, '-dpng', name);
   hold off;
%    pause;
end
Face alignment in 3000 FPS_第6张图片
Face alignment in 3000 FPS_第7张图片

7.补充:

  1. test_model_func.m文件中调用globalprediction函数部分的输出格式作出一些修改

[Data, predshapes] = globalprediction(binfeatures, Ws{min(s,  params.max_numstage)}, Data, Param, min(s,  params.max_numstage));
  1. 修改globalprediction.m文件的函数头;

%function Te_Data = globalprediction(binaryfeatures, W, Te_Data, params, stage)
function [Te_Data, predshapes] = globalprediction(binaryfeatures, W, Te_Data, params, stage)

3.工作区:

Face alignment in 3000 FPS_第8张图片

4.尝试配置该项目对应的C++代码,环境一直未搭建成功,如果有大佬已编译成功,可否求一份(可怜)同时欢迎交流:[email protected]

你可能感兴趣的:(机器学习,matlab,c++)