人脸对齐SDM
2016-07-16 11:34
295 查看
1 介绍
本文所述方法为SDM在人脸对齐上的应用(Supvised Descent Method)。SDM本是一种求函数逼近的方法,可以用于最小二乘求解。SDM并非一种人脸对齐方法,只是作者在提出新的人脸对齐方法中运用了自己的最小二乘方法。人脸对齐,又叫做人脸特征点定位,需要先人工指定点的具有规律的位置,然后在输入的人脸上按照特征点分布规律把点标记出来。
2 人脸对齐的应用
目前做机器视觉的公司都会进行人脸技术研发, 而人脸对齐则是一个非常火的研发方向,我们知道在人的脸上能做各种事,化妆,戴眼镜,带美瞳,贴纸。现在所有的美图软件,都会有贴纸,还有美肤,一些人脸识别也会基于人脸对齐后的结果提取特征或者是做活体检测。3 方法介绍
SDM 人脸对齐的核心内容很简单,就是特征到偏移量的映射:Ix = R
I 是特征,x是映射矩阵,R是偏移量。SDM人脸对齐方法训练的目的就是得到映射矩阵x,步骤如下:
1)归一化样本,使样本的尺度统一;
2)计算均值人脸;
3)将均值人脸,作为估计人脸放在样本上,使均值中心和原始人脸形状中心对齐;
4)计算基于每一个均值人脸的标记点的特征,sift,surf或者hog,切记不要基于灰度值的相互特征;
5)将所有点的特征串在一起,形成样本特征,所有样本特征形成矩阵I;
6)计算估计人脸和真实人脸之间的偏移量,并形成矩阵R;
7)解线性方程Ix=R, matlab中可用x = I \ R,lapack中可用函数dgelsd。
估计形状加上预测偏移量就是结果,在实际情况中,共需要训练多层,二层以后需要使用上一层对齐的结果作为估计形状。
实际在运用过程中可能会遇到各种问题,总结下来有以下几点:
1)速度太慢,尤其是使用sift,surf特征;
2)无效,基于灰度值类的特征由于在标记点周围的小窗口内,灰度值基本一致,变化不大,这也是人脸的一个显著特征;
3)效果有待提高,hog特征有效的解决上述问题,但是始终不理想,尤其是,水平大角度偏转。
4 结果介绍
对齐效果见下面的图片。训练数据是手工标记的4000张图片,经过随机仿射变换扩展至60000(此方法提升效果有限)。一张人脸的对齐速度在3.5GHz CPU上单核是1.8ms,可多核提速,模型大小2.4M左右,并成功运用到人脸标记点追踪上,追踪可以解决大角度偏转,大部分90度偏转也是有效的。androidapp:http://47.93.192.233/MyCamera101.apk , 支持三张人脸追踪,log中可以查看运行速度。演示视频:http://v.youku.com/v_show/id_XMjcwNjI0MzM3Mg==.html?spm=a2hzp.8244740.userfeed.5!2~5~5~5!2~A
5 说明
作者邮箱:huneng1991@163.com请不要来问我要代码和数据,不会免费给任何人的。
参考文献
[1] Supervised Descent Method andits Applications to Face Alignment
相关文章推荐
- opencv 仿射变换 根据眼睛坐标进行人脸对齐 计算变换后对应坐标
- 特征点对齐的方法
- 3000fps 实际操作总结
- SDM(Supervised Descent Method)用于人脸对齐的C++实现方法
- 开源人脸对齐
- 人脸检测 JDA
- 显性形状回归法人脸对齐Face Alignment by Explicit Shape Regression(improving)
- Joint Face Detection and Alignment Using Multi-task Cascade Convolutional Networks笔记
- python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图
- Win下 C++版SDM(Supervised Descent Method)算法实现
- 机器学习实践系列之4 - 人脸对齐(下)
- 机器学习实践系列之3 - 人脸对齐(上)
- 机器学习实践系列之1 - dlib
- 人脸对齐 3000fps
- 物体检测 real adaboost + 像素区块差
- 【dlib代码解读】人脸关键点检测器的训练
- 人脸3D重建:Cascaded Regressor
- 人脸特征点检测:VanillaCNN
- 修改jquery.validate.js计算中文字符长度的规则。
- 【web前端开发】浏览器兼容性处理大全