原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375

作为计算机视觉研究员,我们很早就开始研究人脸。人脸分析领域最广为人知的就是人脸识别(face recognition).但是为了识别一幅图像中的人脸,我们首先必须要找到图像中人脸的位置。因此人脸检测(face detection)-定位一幅图像中的人脸并且返回一个包围人脸的矩形或者正方形(bounding rectangle/square)是一个热门的研究领域。2001年,Paul Viola 和Michael Jones 发表了史诗级论文<< “Rapid Object Detection using a Boosted Cascade of Simple Features.>>.在OpenCV早期甚至某种程度下在现在,OpenCV的致命武器就是对 
Viola and Jones face detector的一个比较好的实现。

一旦你找到了人脸附近的包围盒,最显然的研究当然是准确识别人脸不同特征的位置(比如,眼角、瞳孔、嘴巴、鼻子等)。人脸特征检测(face feature detection)也称为 “facial landmark detection”, “facial keypoint detection” and “face alignment”,你可以在Google找到类似的文献。

Facial Keypoint Detection

人脸关键点检测有很多应用。如下做了一些列举:

Facial feature detection improves face recognition

人脸特征点可以被用来将人脸对齐到平均人脸(mean face shape),这样在对齐之后所有图像中的人脸特征点的位置几乎是相同的。直观上来看,用对齐后的图像训练的人脸识别算法更加有效,这个直觉已经被很多论文验证。

Head pose estimation

一旦你知道了一些特征点的位置,你也可以估计头部的姿势。换句话说,你可以解决头部在空间中的定向问题,或者通俗的讲就是人朝那里看的问题。

Face Morphing (人脸变形)

人脸特征点可以对齐人脸,这样可以生成两张人脸的中间图像。如下图: 

Virtual Makeover(虚拟化妆)

在我的公司 
我们已经写了自己的人脸特征点检测器。检测出的特征点被用来计算嘴的轮廓,眼睛等用来渲染虚拟化妆。Figure2z展示了这一效果: 

Face Replacement

如何两张人脸的特征点已经估计出来了,你可以将一张人脸对齐到另一张人脸,并且可以无缝换脸。你也可以做像下面一样傻瓜的事。 
https://auduno.github.io/clmtrackr/examples/facesubstitution.html

先前的报告中,我们展示了如何使用人脸特征点去预测人脸的吸引力。

很明显,在图片和视频上进行人脸特征点检测为许多有趣的应用提供了很多的可能性。下面我们就将介绍一些有用的特征点检测工具。

Facial Feature Detection & Tracking Libraries

过去五年来,这个领域很火,部分原因是大量可以用来训练的数据如LFPW、Helen被提供。我在下一节列了很多论文。但是我不建议胡乱实现这些论文,因为已经有开源的实现。

下面的视频中,你可以看到两个库Dlib和CLM-framework. 
http://7xrqgw.com1.z0.glb.clouddn.com/dlib_clm.mp4

Dlib(C++/Python)

Dlib是机器学习,计算机视觉,图像处理,线性代数中众多算法的集合。库中大多数是头文件,你可以直接直接包含在C++应用中。或者你更喜欢Python?没问题,他也有一个Python接口.

我个人更喜欢Dlib因为代码是简洁的,有大量的注释,也可以被用来商用。他们选择实现的算法是非常快的,并且是准确的,你可以很容易集成这个库到你的C++工程中,而你需要做的仅仅是包含头文件.

如何编译Dlib?

  1. 从Github上下载:
git clone https://github.com/davisking/dlib.git
  • 1
  1. 建立Examples(OSX\Linux)
cd dlib/examples
mkdir build
cd build
cmake ..
cmake --build . --config Release
  • 1
  • 2
  • 3
  • 4
  • 5

这些例子是一个开始使用Dlib的非常好的方法。拷贝一个例子的cpp文件,修改它,修改examples/CMakeLists.txt 并且像上面一样再一次编译它。很容易吧! 
3. 编译dlib python 模块

cd dlib/python_examples
./compile_dlib_python_module.bat
  • 1
  • 2
  1. 设置 PYTHONPATH 环境变量
# Put the following line in .bashrc or .profile
export PYTHONPATH=/path/to/dlib/python_examples:$PYTHONPATH
  • 1
  • 2
  • 3
  1. 测试python模块
python -c "import dlib"
  • 1

如果以上都没有问题的话,你就设置好了。

How to run Dlib’s facial landmark detector ?

当你编译好examples后,为了在网络摄像头上运行人脸特征点检测器,可以这样做:

cd examples/build/
#Download the face landmark model
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
tar xvjf shape_predictor_68_face_landmarks.dat.bz2
./webcam_face_pose_ex
  • 1
  • 2
  • 3
  • 4
  • 5

如果你想要在单个图像上运行,你可以这样试试:

./face_landmark_detection_ex shape_predictor_68_face_landmarks.dat faces/*.jpg
  • 1
  • 2

CLM-Framework (C++)

CLM-framework,也被称为剑桥人脸跟踪器,是一个用来进行人脸特征点检测和头部姿势估计的C++库。你可以看看他在包含的video文件里工作的多么好啊!在OSX上编译这个库有点儿挑战但是也不太难。库依赖于OpenCV3和X11.

有两个重要的事说明Dlib可以挑战CLM-Framework。首先,Dlib比CLM-Framework更快。其次,Dlib的license允许你商用。如果要挑一个的,我会使用Dlib.有趣的是,CLM-Framework依赖于Dlib.

如何编译CLM-Framework?

编译CLM-Framework在OSX上有点儿复杂。对于Windows和linux,这里有一份详细的说明.为了在OSX上编译version 1.3.0,我使用了linux的指示,但是发生了很多改变。

许多依赖项可以使用brew安装.

在文件CMakeLists.txt(如下划掉的被后面的取代)

find_package( OpenCV 3.0 REQUIRED )

find_package( OpenCV 3.0 REQUIRED HINTS /path/to/opencv )

INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})

INCLUDE_DIRECTORIES(/opt/X11/include)

在文件exe/SimpleCLM/SimpleCLM.cpp中

writerFace = VideoWriter(tracked_videos_output[f_n], CV_FOURCC(‘D’,’I’,’V’,’X’), 30, captured_image.size(), true);

writerFace = VideoWriter(tracked_videos_output[f_n], CV_FOURCC(‘M’,’P’,’4′,’V’), 15, captured_image.size(), true);

如何运行CLM-Framework人脸检测器?

编译后,可执行文件在bin路径中.对于视频中展现的网络摄像头Demo,你可以这样使用:

bin/SimpleCLM
  • 1

Face++ ( FacePlusPlus ) : Web API

人脸特征点检测最好的实现之一就是Face++.他们在300 Faces in-the-Wild 
Landmark Detection Challenge,2013取得了冠军。他们提供了一个易用的API。问题是你需要上传一张图片到他们的服务器,这个将带来很多隐私上的担忧。但是如果隐私不是问题的话,Face++是一个好的选择。你可以在 
http://www.faceplusplus.com/demo-landmark/ 
看到一个Demo.

Facial Feature Detection Research

许多不同的方法都可以用来解决这个问题。很难再博客中对其归类。我简单地列出了一些重要论文。 
1. Active Appearance Model (AAM) by T. Cootes, G. Edwards and C. J. Taylor. [1998] 
2. Face Alignment through Subspace Constrained Mean-Shifts by Jason M. Saragih, Simon Lucey and Jeffrey F. Cohn. [2009] 
3. Localizing Parts of Faces Using a Consensus of Exemplars by Peter N. Belhumeur, David W. Jacobs, David J. Kriegman, Neeraj Kumar [ 2011 ] 
4. Face Alignment by Explicit Shape Regression by Xudong Cao Yichen Wei Fang Wen Jian Sun [2012] 
5. Supervised Descent Method and Its Applications to Face Alignment by Xuehan Xiong and Fernando De la Torre [2013] 
6. Constrained Local Neural Fields for robust facial landmark detection in the wild by Tadas Baltrusaitis, Peter Robinson, and Louis-Philippe Morency. [2013] 
7. Extensive Facial Landmark Localization with Coarse-to-fine Convolutional Network Cascade by Erjin Zhou, Haoqiang Fan, Zhimin Cao, Yuning Jiang and Qi Yin. [2013] 
8. Face alignment at 3000 fps via regressing local binary features by S Ren, X Cao, Y Wei, J Sun. [2014] 
9. Facial Landmark Detection by Deep Multi-task Learning by Zhanpeng Zhang, Ping Luo, Chen Change Loy, and Xiaoou Tang. [2014] 
10.One Millisecond Face Alignment with an Ensemble of Regression Trees by Vahid Kazemi and Josephine Sullivan. [2014]

Facial Landmark Detection(人脸特征点检测)相关推荐

  1. [人脸对齐--综述] Facial Landmark Detection: a Literature Survey(2018)

    转载请注明作者和出处: http://blog.csdn.net/john_bh/ 论文链接:Facial Landmark Detection: a Literature Survey 作者及团队: ...

  2. learnOpenCv】Facial Landmark Detection:人脸特征点检测的一些应用

    目前在计算机视觉领域,人脸方向的研究非常之多.人脸分析最常见的应用是人脸识别,但是如果我们想要验证图像中一个人的身份,需要先知道这个图像中人脸的位置.因此,人脸检测(在图像中定位人脸,并返回一个包含人 ...

  3. [人脸对齐] SAN:Style Aggregated Network for Facial Landmark Detection 论文阅读

    转载请注明作者和出处: http://blog.csdn.net/john_bh/ 论文链接: Style Aggregated Network for Facial Landmark Detecti ...

  4. 【人脸对齐】Attention-Driven Cropping for Very High Resolution Facial Landmark Detection 翻译

    转载请注明出处:https://blog.csdn.net/qq_39912997 注意力驱动裁剪技术在超高分辨率人脸关键点检测中的应用 论文链接: Attention-Driven Cropping ...

  5. [人脸对齐] Attention-Driven Cropping for Very High Resolution Facial Landmark Detection

    转载请注明作者和出处: http://blog.csdn.net/john_bh/ 论文链接: Attention-Driven Cropping for Very High Resolution F ...

  6. ShapeNet:超实时人脸特征点检测与形状拟合开源库

    点击我爱计算机视觉标星,更快获取CVML新技术 近日,来自德国亚琛工业大学的研究人员开源了形状拟合库ShapeNet,其可以实现超实时的人脸特征点检测,也可以用在其他任何需要形状拟合的应用场景. 开源 ...

  7. 第二篇:基于深度学习的人脸特征点检测 - 数据与方法(转载)

    https://yinguobing.com/facial-landmark-localization-by-deep-learning-data-and-algorithm/ 在上一篇博文中,我们了 ...

  8. 人脸特征点检测:VanillaCNN

    <Facial Landmark Detection with Tweaked Convolutional Neural Networks>论文解读 论文地址: http://www.op ...

  9. 人脸特征点检测(一)

    人脸特征点检测(Facial landmark detection),即人脸特征点定位.人脸对齐(Face Alignment),是在人脸检测的基础上进行的,对人脸上的特征点例如嘴角.眼角等进行定位. ...

最新文章

  1. MAC上安装iTerm2+oh my zsh+设置Dracula主题
  2. [BZOJ4698][SDOI2008]Sandy的卡片(后缀自动机)
  3. Adobe After Effects CS6 操作记录
  4. php 类文件加载 Autoloader
  5. 开课吧课堂:数据可视化的制作方法与准则有哪些?
  6. Windows安装zookeeper和kafka
  7. fh 幅频特性曲线怎么画fl_只要有上、下限截止频率fH、fL、中频电压增益和(),就可绘出基本共射放大电路的幅频特性曲线...
  8. css的after右箭头,偷师成功,纯CSS绘制右箭头及其他——灵动外卖开发笔记
  9. 查看linux磁盘信息,linux下查看硬盘型号等信息
  10. 微信个人号API开发
  11. 基于51单片机WIFI遥控防盗电子密码锁APP控制方案原理图设计
  12. ldc java_java – LDC指令代码的负值是什么意思?
  13. 不会产生ICMP差错报文的情况
  14. 一篇搞定 SpringBoot+Mybatis+Shiro 实现多角色权限管理
  15. pion最简单webrtc例子
  16. 【iOS】高德地图SDK的详细使用
  17. DM 数据库体系结构
  18. 乐字节最全面向对象深入1
  19. sap客户信贷_SAP SD 信贷控制范围-特别总账控制的信贷更新
  20. Onvif再学习---MiniXml-介绍

热门文章

  1. 将字符数组中的字符按从小到大的顺序排序
  2. 【c语言】蓝桥杯算法提高 约数个数
  3. java 设置宽度和高度,如何通过设置高度和宽度来使宽度和高度反映ScaleTransform以及如何进行ScaleTransform?...
  4. win7设置java环境变量_win7下JAVA环境变量配置方法
  5. Atitit r2017 r6 doc list on home ntpc.docx
  6. 《R语言数据挖掘》----1.12 数据集成
  7. Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
  8. linux包之procps之sysctl命令
  9. Oracle 系统表大全
  10. CCNA模拟器《Packet Tracer 4.11》