CNN人脸关键点检测

参考文献《Deep Convolutional Network Cascade for Facial Point Detection》\

摘要

 提出一种利用精心设计的三级/三层(three-level)卷积网络估计面部关键点位置的新方法。

At each level,多网络(multiple networks)的输出是鲁棒性和精确估计的保证。

卷积网络的深层结构助于定位高精度的关键点,全局高层次的特征基于整个人脸面部在初始化阶段提取。

优势一,整个人脸的纹理上下文信息用来定位每个关键点。

优势二、因为网络被训练来用于同时预测所有的关键点,关键点间的几何约束被隐式的编码。

所以,该方法可以避免由歧义和数据损坏引起的局部极小(in difficult image samples due to occlusions, large pose variations, and extreme lightings)。The networks at the following two levels are trained to locally refine initial predictions and their inputs are limited to small regions around the initial predictions. Several network structures critical for accurate and robust facial point detection are investigated. Extensive experiments show that our approach outperforms state-of-the-art methods in both detection accuracy and reliability.

1 关键点示例

2 Cascaded convolutional networks

对 CNN facial point detection[CVPR2013]一文的实现

在Deep convolutional network cascade for facial point detection一文中,作者实现了基于CNN的人脸标注算法。而后续发表在CVPR2014上的关于人脸识别的文章,很大程度上都依赖于前端人脸标注算法的准确性。本人尝试在ConvNet上对该网络进行了实现。收获有以下几点:

1.     结构与权重初始化对训练过程的影响。

在研究中发现:深度卷积网的可优化性严重依赖于结构和初始权重。卷积层后的sigmiod或tanh函数会将输出值映射到归一化区间,如果初始权重设置不好,会将输出值归一化到相近值,如:0.981, 0.982, 0.9812等。由于计算机精度有限,经过多次非线性映射后,所有样本最终的输出将完全相同,从而导致调优困难。比较合理的训练方法是:选择好网络结构并随机初始化权值后,逐层观察非线性映射后的输出结果,根据输出结果重新调节权重大小,使不同样本的输出结果相互存在明显差异。

2.     训练样本对训练精度的影响。

在研究中发现:不同的训练样本集对卷积网的精度有很大影响,样本放入的顺序也会影响卷积网的精度。我共产生了3个训练样本集:尺度、位移随机化样本集,尺度随机化样本集,和与测试条件一致的样本集。通过训练发现:先利用差异较大尺度、位移都存在变化的样本集对网络进行训练,待收敛后再利用只存在尺度变化的样本集进行训练,最后使用与测试条件一直的样本集进行训练,会使得最终预测精度较好。个人的理解是:变化较大的样本集可以更好地训练底层卷积核的特征表达能力,变化较小的样本集可以更好地训练中层和高层网络的特征提取能力。前面采用的训练顺序可以保证网络由底层到高层都获得较为良好地训练。

3.     慎用ReLU函数。

ReLU会将所有负值输出全部置零。本实验中相当多的卷积核产生的响应都为负数,采用ReLU后网络无法收敛。

4.     学习率对网络精度的影响。

目前主流的训练算法主要采用学习率单调递减的方法进行,训练过程中学习率一旦下降后绝不会再次变大。本人在实验中发现:当学习率下降到一定程度后,再次适当增大学习率可以加速误差的减小速度,使得模型更容易被优化。

部分标注结果如下:

总体来讲,基本实现了文章的功能。目前只实现了第一层网络,没有按照原文那样用第二三层网络进行误差回归,因此精度稍逊与原文方法。

可执行代码(matlab生成的exe)下载地址:http://download.csdn.net/detail/kklots/8618505

CNN人脸关键点检测相关推荐

  1. PFLD:简单高效的实用人脸关键点检测算法

    作者丨杜敏 学校丨华中科技大学硕士 研究方向丨模式识别与智能系统 研究背景 人脸关键点检测,在很多人脸相关的任务中,属于基础模块,很关键.比如人脸识别.人脸验证.人脸编辑等等.想做人脸相关的更深层次的 ...

  2. 【face-landmarks】人脸关键点检测汇总

    2019.01.06 2018比较新的人脸关键点 https://blog.csdn.net/daniaokuye/article/details/82748599#commentBox FAN:时间 ...

  3. 级联MobileNet-V2实现CelebA人脸关键点检测(附训练源码)

    文章目录 一 .引言 1.1为什么是级联? 1.2为什么是MobileNet-V2? 二. 级联MobileNet-V2之人脸关键点检测 2.0 修改caffe 2.1 整体框架及思路 2.2 原始数 ...

  4. MTCNN——基于级联模型的人脸关键点检测网络

    目录 1 致谢 2 前言 3 MTCNN--基于级联模型的人脸关键点检测网络 3.1 P-Net 3.1.1 训练数据是12x12,那么检测时也是要把所有的图像都放缩到12x12吗? 3.1.2 图像 ...

  5. 人脸关键点检测综述(含论文、数据集、方法等)

    人脸关键点 人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别.表情分析.三维人脸重建及三维动画等其它人脸相关问题的前提和突破口.近些年来,深度学习(http://www.rainc ...

  6. 基于人脸关键点检测的驾驶员睡意检测系统

    摘要 驾驶员注意力不集中或者分心是道路交通事故的主要原因. 为了减少道路交通事故,设计开发驾驶员疲劳检测系统至关重要. 本研究利用人脸关键点检测方法提出了驾驶员睡意检测系统,目的是使驾驶更安全. 一. ...

  7. caffe 人脸关键点检测_人脸关键点对齐

    摘要: 从传统方法到深度学习方法,对人脸关键点定位/人脸对齐的发展进行梳理,对该领域中经典的方法,最新成果进行汇总,并给出相应的paper原文,项目主页及代码链接.重点介绍深度学习的几种最新方法. 1 ...

  8. 【技术综述】人脸关键点检测的数据集与核心算法

    人脸关键点检测是诸如人脸识别.表情分析.三维人脸重建等其它人脸相关任务的基础.近些年来,深度学习方法已被成功应用到了人脸的关键点检测,本章将介绍深度学习方法在人脸关键点检测方向的研究.包括人脸关键点任 ...

  9. paddle2.0高层API实现人脸关键点检测(人脸关键点检测综述_自定义网络_paddleHub_趣味ps)

    paddle2.0高层API实现人脸关键点检测(人脸关键点检测综述_自定义网络_paddleHub_趣味ps) 本文包含了: - 人脸关键点检测综述 - 人脸关键点检测数据集介绍以及数据处理实现 - ...

最新文章

  1. 语言 山东专升本 真题_专升本英语真题
  2. Java项目经验——程序员成长的关键
  3. 微软社区精英计划 - 你会如何回答【6月26日】北京.Net学习活动QA时提出的问题...
  4. AIX 7.1 使用installp安装python的方法
  5. ISCC2014-reverse
  6. 【Python】pyinstaller安装失败的解决办法
  7. nfa确定化 dfa最小化_深度学习中的不确定性
  8. matlab分段函数怎么画图_关于MATLAB中分段函数的画法
  9. 在ubuntu20.04上安装最新版的qq
  10. git tracked branch
  11. 地球同步、地球静止、半同步、太阳同步、极地、莫尼亚轨道阐释
  12. PVE下的黑群晖的其他后续设置
  13. mysql最细粒度的权限是什么_粗粒度与细粒度权限控制
  14. vs community 2019安装失败问题解决
  15. 获奖喜讯 | 中恒科技连获第十一届“龙图杯”全国BIM大赛三项大奖
  16. PHPYUN人才招聘系统 V5.0商业授权vip版和授权版及旗舰版有什么区别
  17. 看雪3万课程笔记-Frida 辅助分析ollvm字符串加密(一)
  18. 关于Zion真实性问题的图文分析及其他 V1.06
  19. 美国优秀教师对中国家长的建议
  20. php json_encode后乱码,PHP中json_encode后中文乱码的解决方案

热门文章

  1. 使用OpenCV计算图像的轮廓矩的代码
  2. python变量区分大小写吗_Python变量名是不是区分大小写的
  3. OVS DPDK--虚拟设备配置(六)
  4. leetcode算法题--目标和
  5. python github登陆_用Python模拟登陆GitHub并获取信息
  6. python线性回归实例_python 线性回归示例
  7. IT兄弟连 JavaWeb教程 jQuery中其他AJAX支持的函数
  8. centos7通过yum安装php方法
  9. 你不一定真正理解的NAT术语
  10. 在夕阳下第一次写文章的菜鸟