原文:

ASM(active shape models)算法介绍
http://www.thinkface.cn/thread-2-1-1.html

ASM是基于统计学习模型的特征点提取的一种方法。这个方法是95年就提出来的,不过至今仍是我认为比较好的人脸特征点提取的方案。方法的提出人Tim Cootes后来还提出了aam算法,也很有名,但如果简单是特征点的定位的话,我认为asm的效果可能更好一些。ASM跟大多数统计学习方法一样,也包括train和test(or fit)两部分,也就是形状建模build和形状匹配fit。这个算法其实很简单,可以用来做实时性的检测,但我还是看了很久,而且还有理解有问题的地方,肯定有很多不对的地方,希望大家多多指正。

一、模型的建立(build)1.选择合适的特征点

特征点的选取很重要啊,这点不用我多说啦。好的特征点大概应该或多或少满足如下几点:边缘点、曲率大的、T型连接点和以上这些点的连线上的等分点。(如下图)

记录好这些特征点的顺序,以便于后面确定图形的边界和连线等等。这也是asm方法的优点,得到的特征点是有序的。这样得到一组特征点集X

我们这里把它看做是一个2n维的向量

2.形状统计模型

刚刚得到的2n维向量维数很高(因为图像中我们选择的特征点往往很多),但这2n维彼此是有很强的相关性的,彼此的位置距离是大致不变的。这里作者使用最最常用的PCA来进行降维,提取出主成分,这里作者叫它modes。于是任意一组特征点集可以看做是主成分向量空间的一个坐标点,而这个坐标原点就认为是这些点集的平均,这样任意点就是坐标原点加上一个向量。即:

这里P是包含了前t个主成分的协方差矩阵,b是一个t维的向量,用来控制特征点形状的变化,当b为0时,x即坐标原点(平均形状),其实是很好理解哈。但这里b不要太大,如果太大,会导致整个形状变化超出人脸的变化范围,会使人变得异常狰狞,大家懂的。。。所以作者这里做了约束

这步还有个问题,就是PCA中主成分个数t的选取,有两种方法:1)选择前s个;2)选择前k%的分量,这里作者推荐使用第二种方法。

3.把模型和新点集进行匹配

这个过程是asm方法的核心所在了,贯穿始终。说来也简单,无非就是把刚得到的模型进行旋转,放缩,平移。

其中T为旋转放缩平移矩阵

我们的目的就是是模型X和图像特征点集Y最接近,这里目标函数选择是其各点欧氏距离和最小

具体的匹配过程就是,先初始化b向量为0,得到模型X,用其他方法找到变换矩阵T,这个很简单,可以用其他方法(haar人脸检测器,光流法,kalman滤波等等等等)大致找到目标的位置和大小以及方向。求的Y,再利用Y反求b,并且更新b,直到收敛。这里比较容易陷入局部最小,也是该方法的一个缺点。

二、模型在图像中的匹配(fit)

说白了,也就是在图像中找到模型的匹配点,前面已经说过了,可以利用其它方法大致找到模型的位置大小方向(不要小瞧这步,如果预处理的不好,是很容易陷入局部最小的),接下来就是如何改善参数得到好的匹配结果了。模型中可以调整的参数有b、Xt、Yt、s、theta这5个参数。这里作者提到了两种手段:

1)先验信息认为特征点主要是图像的强边缘点,并且图像灰度的梯度服从高斯分布,只要找到模型特征点附近梯度最大的值,即认为是特征点所在的位置

示意图如下:

这种方法很明显,对图像的噪声很敏感,我这里不太推荐

2)对模型特征点周围的纹理信息进行采样,对比图像和模型训练集的纹理,找到纹理最接近的点即认为是特征点。作者这里比较纹理的工具是马氏距离。为了提高搜索的效率,作者还提到了多分辨率搜索周围像素纹理,对于粗糙的尺度,搜索范围大,对于细致的尺度,进行细致的搜索,提高了匹配的效率。这个方法是我比较推荐的。

另外一篇:

http://blog.csdn.net/carson2005/article/details/8194317

ASM是一种基于点分布模型(Point Distribution Model, PDM)的算法。在PDM中,外形相似的物体,例如人脸、人手、心脏、肺部等的几何形状可以通过若干关键特征点(landmarks)的坐标依次串联形成一个形状向量来表示。本文就以人脸为例来介绍该算法的基本原理和方法。首先给出一个标定好68个关键特征点的人脸面部图片,如下所示:



人脸对齐(二)--ASM算法相关推荐

  1. SDM人脸对齐算法研究

    人脸对齐的算法是我本科阶段的毕业设计课题,从最初的一脸迷茫到最后完成毕设,两个月的时光,恭喜自己顺利完成了毕业设计,在过程中,更是不能缺少指导老师以及学长们给予的帮助.衷心感谢! 人脸对齐的目的是对人 ...

  2. 3d人脸对齐代码matlab,重磅!清华商汤开源CVPR2018超高精度人脸对齐算法LAB

    清华&商汤开源超高精度人脸对齐算法LAB 同时发布含10000张人脸的多属性人脸关键点数据集 该算法来自CVPR2018论文<Look at Boundary: A Boundary-A ...

  3. 机器学习----人脸对齐的算法-ASM.AAM..CLM.SDM

    引自:http://blog.csdn.net/linolzhang/article/details/55271815 人脸检测 早已比较成熟,传统的基于HOG+线性分类器 的方案检测效果已经相当不错 ...

  4. 人脸对齐(五)--ESR算法

    原文:http://www.thinkface.cn/thread-2911-1-2.html 原文翻译我看的好蛋疼,完全机器翻译.甚至怀疑作者是否有通读过一次....这里再修改下. 现在回头看看 ...

  5. 二值人脸对齐--Binarized Convolutional Landmark Localizers for Human Pose Estimation and Face Alignment

    Binarized Convolutional Landmark Localizers for Human Pose Estimation and Face Alignment with Limite ...

  6. 人脸对齐(八)--LBF算法

    整体来看,其实 ,ESR是基础版本的形状回归,ERT将回归树修改为GBDT,由原始的直接回归形状,改进为回归形状残差,而LBF,是加速特征提取,由原来的像素差分特征池,改为随机选择点. 转自:http ...

  7. 机器学习--详解人脸对齐算法SDM-LBF

    https://www.cnblogs.com/Anita9002/p/7095380.html 引自:http://blog.csdn.net/taily_duan/article/details/ ...

  8. 人脸对齐算法调研(Face Alignment)

    人脸对齐算法调研(Face Alignment) 转载自 https://zhuanlan.zhihu.com/p/101250334 一.人脸对齐的定义与作用(引用): https://blog.c ...

  9. 人脸识别之人脸对齐(八)--LBF算法

    整体来看,其实 ,ESR是基础版本的形状回归,ERT将回归树修改为GBDT,由原始的直接回归形状,改进为回归形状残差,而LBF,是加速特征提取,由原来的像素差分特征池,改为随机选择点. 转自:http ...

  10. 人脸检测 和 人脸对齐算法-Dlib-Opencv-MTCNN

    人脸检测 和 人脸对齐算法算法-Dlib-Opencv-MTCNN 1.Dlib人脸检测 2.Opencv人脸检测 3.MTCNN人脸检测 1.Dlib人脸检测 2.Opencv人脸检测 3.MTCN ...

最新文章

  1. 企业网络高级技术第二章STP实验
  2. K8S集群tls证书管理
  3. Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源
  4. win10安装ipython_windows10下安装IPython notebook 用来查看.ipynb文档
  5. .NET Core跨平台的奥秘[下篇]:全新的布局
  6. win10商店下载位置_Win10删应用商店下载记录|Win10删Microsoft Store下载记录
  7. Bokeh 布局图像和工具
  8. Pandas 文本数据方法 count( )
  9. SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)
  10. 1056. 组合数的和(15)-PAT乙级真题
  11. 拓端tecdat|R语言用普通最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
  12. web消息推送-goesay
  13. 物联网终端安全系列(之二) -- 物联网终端安全需求分析
  14. IOS 5 自定义导航条背景图片
  15. RK3588 camera2 支持4K录像
  16. Cesium奇幻之旅(一)
  17. [转]触乐独家:揭秘愈演愈烈的苹果“做号退款”生态圈
  18. 论架构师的自我修养--8荣
  19. Ubuntu16.04下Qt交叉编译开发环境搭建
  20. HDOJnbsp;nbsp;2048nbsp;nbsp;nbsp;神、上帝以及老天爷

热门文章

  1. Fushsia:一次对操作系统的重构
  2. android7.0+关闭wifi连接CA验证
  3. windows之临时文件
  4. 雷电3和Type C区别
  5. int 最大值_十行代码说清楚:leetcode 队列的最大值
  6. python post 参数_python爬虫——requests库使用代理
  7. python培训周末线下班_现在学习Python2还是python3?老男孩Python线下班
  8. dataguard如何实现切换_ORACLE dataguard 切换
  9. 删除部分mysql日志_正确删除MYSQl日志方法
  10. iis7 下php 环境配置文件,IIS7.X配置PHP运行环境小结_php