Coursera 笔记

Module 03 · Object Detection

Landmark Detection关键点检测

Coursera ↗

在上一期视频中,我们介绍了如何让神经网络输出四个数值 b_x, b_y, b_h, b_w,以指定一个物体的边界框,进而实现物体的定位。今天,我们将讨论如何通过神经网络输出图像中关键点(通常称为“地标”)的坐标。这些地标可以是图像中的一些重要点,网络的任务是识别它们并输出坐标。


地标检测应用示例

1. 面部识别中的地标检测

假设你正在开发一个面部识别应用,目的是定位图像中眼睛的角落。对于这个任务,神经网络的输出将不仅仅是一个类别标签,而是包含该眼角的坐标。你可以让神经网络的输出层增加两个输出单位,分别表示X坐标和Y坐标。

扩展到更多的面部地标

假如你想定位两只眼睛的四个角,那么你可以修改神经网络,使其输出四个点的坐标:

  • 第一个点 l_1x, l_1y
  • 第二个点 l_2x, l_2y
  • 第三个点 l_3x, l_3y
  • 第四个点 l_4x, l_4y

这样,网络就可以估计图像中眼睛四个角的位置。

2. 面部更多地标的检测

如果你不仅仅需要这四个点,还需要定位更多的面部关键点(比如嘴巴、鼻子等部位),你可以选择在面部不同区域定义多个关键点。比如,你可以定义64个点来表示面部的关键位置。这样,你就能够提取面部轮廓,甚至判断一个人是微笑还是皱眉。

例如:

  • 在嘴巴上提取几个关键点来判断表情;
  • 在鼻子的边缘定义关键点来识别鼻子的形状;
  • 甚至可以选择一些点来定义脸的轮廓,帮助绘制下巴线条。

这些关键点的选择和定义会帮助你构建出一个完整的面部表征模型。通过这样的地标检测,你不仅可以识别出面部的位置,还能捕捉到面部表情等信息。

3. 人体姿势检测

除了面部识别,地标检测也可以用于人体姿势检测。在这种情况下,你可以定义一些关键位置来表示人体的不同部位,例如:

  • 胸部的中心点(Midpoint of Chest)
  • 左肩、左肘、左腕等

通过让神经网络输出这些关键点的坐标,你不仅可以准确标出人体的各个部位,还可以推断出人的姿势。

例如,使用32个坐标点来标记一个人从胸部到四肢的各个关键位置,网络就可以估计出一个人的整体姿势。


神经网络的输出设计

网络输出的设置

在进行地标检测时,神经网络的输出通常包括:

  • 二分类输出:表示是否检测到目标(如:是否为人脸)。
  • 地标坐标输出:如果检测到目标,则进一步输出各个关键点的坐标。

例如,如果你要检测一个人的面部,并且定义64个关键点,那么网络的输出将包括:

  • 1个二分类输出:判断是否为人脸(0或1)。
  • 128个地标坐标输出:每个关键点的X和Y坐标(64个地标,每个地标有2个坐标)。

这样,网络将输出总计129个输出单元,其中128个输出单位表示64个地标的坐标,另外1个输出表示是否为人脸。


地标检测的实际应用

面部表情识别

通过检测人脸的关键点(如眼角、嘴角等),可以推测出一个人的情绪和表情。例如,Snapchat和其他增强现实(AR)滤镜应用就是利用这些关键点来给用户的脸上添加各种特效,如加上皇冠、添加眼镜等。

计算机图形学效果

通过准确检测面部地标,计算机图形学也能够应用这一信息进行面部特效的生成。例如,可以根据检测到的面部地标,在用户的头部添加帽子、面具,甚至进行面部形状变换等特效。


地标检测的训练数据与标签

为了训练这样一个神经网络,你需要一个标注过的训练集。每张图片需要包含对应的标签 Y,这些标签记录了每个地标的准确位置。这意味着,你可能需要人工标注大量的数据,特别是对于复杂的任务,如面部表情分析或姿势识别。


总结与前瞻

  • 地标检测:通过神经网络输出图像中各个关键点的坐标,帮助识别物体的位置和姿势。
  • 应用:面部表情识别、人体姿势检测、增强现实特效等。
  • 数据要求:需要大量标注过的训练数据,每个图像都需要标注关键点的位置。

地标检测不仅是计算机视觉中的一个重要任务,它也为面部识别、姿势分析、情绪识别以及各种娱乐和商业应用提供了基础。在下一期视频中,我们将继续从这些基础模块出发,逐步构建目标检测模型。🎥