深度学习笔记(33) 特征点检测

深度学习笔记(33) 特征点检测

  • 1. 特征点
  • 2. 设定特征点
  • 3. 关键特征点


1. 特征点

利用神经网络进行对象定位,即通过输出四个参数值bx、by、bh和bw给出图片中对象的边界框
概括地说,神经网络可以通过输出图片上特征点的(x,y)坐标来实现对目标特征的识别

假设正在构建一个人脸识别应用,出于某种原因,希望算法可以给出眼角的具体位置
眼角坐标为(x,y),可以让神经网络的最后一层多输出两个数字 l l lx l l ly,作为眼角的坐标值

深度学习笔记(33) 特征点检测_第1张图片
如果想知道两只眼睛的四个眼角的具体位置,那么从左到右,依次用四个特征点来表示这四个眼角
对神经网络稍做些修改,输出第一个特征点( l l l1x l l l1y),第二个特征点( l l l2x l l l2y
依此类推,这四个脸部特征点的位置就可以通过神经网络输出了


2. 设定特征点

也许除了这四个特征点,还想得到更多的特征点输出值
还可以根据嘴部的关键点输出值来确定嘴的形状,从而判断人物是在微笑还是皱眉
也可以提取鼻子周围的关键特征点
为了便于说明,可以设定特征点的个数
假设脸部有64个特征点,有些点甚至可以帮助定义脸部轮廓或下颌轮廓
选定特征点个数,并生成包含这些特征点的标签训练集
然后利用神经网络输出脸部关键特征点的位置

深度学习笔记(33) 特征点检测_第2张图片
具体做法是,准备一个卷积网络和一些特征集
将人脸图片输入卷积网络
输出1或0,1表示有人脸,0表示没有人脸,然后输出( l l l1x l l l1y)……直到( l l l64x l l l64y
这里用 l l l代表一个特征,有129个输出单元
其中1表示图片中有人脸,因为有64个特征,64×2=128
这只是一个识别脸部表情的基本构造模块

如果玩过Snapchat或其它娱乐类应用
应该对AR(增强现实)过滤器多少有些了解,Snapchat过滤器实现了在脸上画皇冠和其他一些特殊效果
检测脸部特征也是计算机图形效果的一个关键构造模块,比如实现脸部扭曲,头戴皇冠等等
当然为了构建这样的网络,需要准备一个标签训练集
也就是图片x和标签y的集合,这些点都是人为辛苦标注的


3. 关键特征点

如果对人体姿态检测感兴趣,还可以定义一些关键特征点
如胸部的中点,左肩,左肘,腰等等

然后通过神经网络标注人物姿态的关键特征点
再输出这些标注过的特征点,就相当于输出了人物的姿态动作
深度学习笔记(33) 特征点检测_第3张图片
当然,要实现这个功能,需要设定这些关键特征点
从胸部中心点( l l l1x l l l1y)一直往下,直到( l l l32x l l l32y)

一旦了解如何用二维坐标系定义人物姿态,操作起来就相当简单了
批量添加输出单元,用以输出要识别的各个特征点的(x,y)坐标值

要明确一点,特征点1的特性在所有图片中必须保持一致
就好比,特征点1始终是右眼的外眼角,特征点2是右眼的内眼角,特征点3是左眼内眼角,特征点4是左眼外眼角等等
所以标签在所有图片中必须保持一致
假如标记了一个足够大的数据集,那么神经网络便可以输出上述所有特征点
可以利用它们实现其他有趣的效果,比如判断人物的动作姿态,识别图片中的人物表情等等


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(32) 目标定位
深度学习笔记(31) 迁移与增强
深度学习笔记(30) Inception网络
深度学习笔记(29) 1×1 卷积
深度学习笔记(28) 残差网络


谢谢!

你可能感兴趣的:(深度学习笔记)