深度学习500问——Chapter08:目标检测(8)

简介: 深度学习500问——Chapter08:目标检测(8)

8.4 人脸检测

在目标检测领域可以划分为了人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测、人脸识别、人脸和其他属性的识别等等),并且可以和通用目标检测(识别)有一定的差别,这主要来源于人脸的特性(有时候目标比较小、人脸之间特征不明显、遮挡问题等),下面将从人脸检测和通用目标检测两个方面来讲解目标检测。

8.4.1 目前主要的人脸检测方法分类

目前人脸检测方法主要包含两个区域:传统人脸检测算法和基于深度学习的人脸检测算法。传统人脸检测算法主要可以分为4类:

(1)基于知识的人脸检测方法;

(2)基于模型的人脸检测方法;

(3)基于特征的人脸检测方法;

(4)基于外观的人脸检测方法。

由于本书着重关注深度学习,下面会着重介绍基于深度学习的人脸检测方法。

2006年Hinton首次提出深度学习(Deep Learning)的概念,它是通过组合低层的特征形成更高层的抽象特征。随后研究者将深度学习应用在人脸检测领域,主要集中在基于卷积神经网络(CNN)的人脸检测研究,如基于级联卷积神经网络的人脸检测(cascade cnn)、基于多任务卷积神经网络的人脸检测(MTCNN)、Facebox等,很大程度上提高了人脸检测的鲁棒性。当然通用目标检测算法像Faster-rcnn、yolo、ssd等也有用在人脸检测领域,也可以实现比较不错的结果,但是和专门人脸检测算法比还是有差别。下面部分主要介绍基于深度学习的人脸检测算法,基于深度学习的通用目标检测算法将在第二大节介绍。

8.4.2 如何检测图片中不同大小的人脸

传统人脸检测算法中针对不同大小人脸主要有两个策略:

(1)缩放图片的大小(图像金字塔如图8.4.1所示);

(2)缩放滑动窗口的大小(如图8.4.2所示)。

图 8.4.1 图像金字塔

图8.4.2 缩放滑动窗口

基于深度学习的人脸检测算法中针对不同大小人脸主要也有两个策略,但和传统人脸检测算法有点区别,主要包括:

(1)缩放图片大小。(不过也可以通过缩放滑动窗的方式,基于深度学习的滑动窗人脸检测方式效率会很慢存在多次重复卷积,所以要采用全卷积神经网络(FCN),用FCN将不能用滑动窗的方法)。

(2)通过anchor box的方法(如图8.4.3所示,不要和图8.4.2混淆,这里是通过特征图预测原图的anchor box区域,具体在facebox中有描述)。

图 8.4.3 anchor box

8.4.3 如何设定算法检测最小人脸尺寸

主要看滑动窗口的最小窗口和anchor box的最小窗口。

(1)滑动窗口的方法

假设通过 12x12 的滑动窗,不对原图做缩放的话,就可以检测原图中 12x12 的最小人脸。但是往往通常给定最小人脸a=40或者a=80,以这么大的输入训练CNN进行人脸检测不太现实,速度会很慢,并且下一次需求最小人脸a=30*30又要去重新训练,通常还会是12x12的输入,为满足最小人脸框a,只需要在检测的时候对原图进行缩放即可:w = w x 12/a。

(2)anchor box的方法

原理类似,这里主要看anchor box的最小box,可以通过缩放输入图片实现最小人脸的设定。

8.4.4 如何定位人脸的位置

(1)滑动窗的方式

滑动窗的方式是基于分类器识别为人脸的框的位置确定最终的人脸。

8.4 滑动窗

(2)FCN的方式

FCN的方式通过特征图映射到原图的方式确定最终识别为人脸的位置,特征图映射到原图人脸框是要看特征图相比较于原图有多少次的缩放(缩放主要查看卷积的步长和卷积层),假设特征图上(2,3)的点,可粗略计算缩放比例为8倍,原图中的点应该是 (16, 24);如果训练的FCN为 12*12的输入,对于原图框位置应该是 (16, 24, 12, 12),当然这只是估计位置,具体的再构建网络时要加入回归框的预测,主要是相对于原图框的一个平移与缩放。

(3)通过anchor box的方式

通过特征图映射到图的窗口,通过特征图映射到原图到多个框的方式确定最终识别为人脸的位置。

8.4.5  如何通过一个人脸的多个框确定最终人脸框位置

8.5 通过NMS得到最终的人脸位置

NMS改进版本有很多,最原始的NMS就是判断两个框的交集,如果交集大于设定的阈值,将删除其中一个框,那么两个狂框应该怎么选择删除哪一个呢?因为模型输出有概率值,一般会优先选择概率小的框删除。

8.4.6 基于级联卷积神经网络的人脸检测(Cascade CNN)

1. cascade cnn的框架是什么

级联结构中有6个CNN,3个CNN用于人脸非人脸二分类,另外3个CNN用于人脸区域的边框校正。给定一幅图像。12-net密集扫描整幅图片,拒绝90%以上的窗口。剩余的窗口输入到12-calibration-net中调整大小和位置,以接近真实目标。接着输入到NMS中,消除高度重叠窗口。下面网络与上面类似。

2. cascade cnn人脸校验模块原理是什么

该网络用于窗口校正,使用三个偏移变量:Xn:水平平移变量,Yn:垂直平移量,Sn:宽高比缩放。候选框口(x,y,w,h)中,(x,y)表示左上点坐标,(w,h)表示宽和高。

我们要将窗口的控制坐标调整为:

这项工作中,我们有 种模式。偏移:

同时对偏移量三个参数进行校正。

3. 训练样本应该如何准备

人脸样本

非人脸样本

4. 级联的好处

级联的工作原理和好处:

最初阶段的网络可以比较简单,判别阈值可以设得宽松一点,这样就可以在保持较高召回率的同时排除掉大量的非人脸窗口;

最后阶段网络为了保证足够的性能,因此一般设计的比较复杂,但由于只需要处理前面剩下的窗口,因此可以保持足够的效率;

级联的思想可以帮助我们去组合利用性能较差的分类器,同时又可以获得一定的效率保证。

8.4.7 基于多任务卷积神经网络的人脸检测(MTCNN)

为了检测不同大小的人脸,开始需要构建图像金字塔,先经过pNet模型,输出人脸类别和边界框(边界框的预测为了对特征图映射到原图的框平移和缩放得到更准确的框),将识别为人脸的框映射到原图框位置可以获取patch,之后每一个patch通过resize的方式输入到rNet,识别为人脸的框并且预测更准确的人脸框,最后rNet识别为人脸的的每一个patch通过resize的方式输入到oNet,跟rNet类似,关键点是为了在训练集有限情况下使模型更鲁棒。

还要注意一点构建图像金字塔的的缩放比例要保留,为了将边界框映射到最开始原图上的

还要注意一点:如何从featureMap映射回原图。

8.4.8 Facebox

(1)Rapidly Digested Convolutional Layers(RDCL)

在网络前期,使用RDCL快速的缩小feature map的大小。 主要设计原则如下:

  • Conv1, Pool1, Conv2 和 Pool2 的stride分别是4, 2, 2 和 2。这样整个RDCL的stride就是32,可以很快把feature map的尺寸变小。
  • 卷积(或pooling)核太大速度就慢,太小覆盖信息又不足。文章权衡之后,将Conv1, Pool1, Conv2 和 Pool2 的核大小分别设为7x7,3x3,5x5,3x3
  • 使用CReLU来保证输出维度不变的情况下,减少卷积核数量。

(2)Multiple Scale Convolutional Layers(MSCL)

在网络后期,使用MSCL更好地检测不同尺度的人脸。 主要设计原则有:

  • 类似于SSD,在网络的不同层进行检测;
  • 采用Inception模块。由于Inception包含多个不同的卷积分支,因此可以进一步使得感受野多样化。

(3)Anchor densification strategy

为了anchor密度均衡,可以对密度不足的anchor以中心进行偏移加倍,如下图所示:

目录
相关文章
|
2月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
67 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
3月前
|
机器学习/深度学习 监控 自动驾驶
深度学习中的2D目标检测
2D目标检测是深度学习中的一个关键任务,旨在识别图像中的目标对象,并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。
72 5
|
2月前
|
机器学习/深度学习 算法 安全
基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)
基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)
31 0
|
2月前
|
机器学习/深度学习 传感器 编解码
深度学习之地球观测中的目标检测
基于深度学习的地球观测中的目标检测是将深度学习技术应用于遥感数据中以自动识别和定位目标物体的过程。这一技术迅速成为遥感领域的研究热点,主要原因在于地球观测(Earth Observation, EO)平台和遥感技术的进步带来了海量的高分辨率数据,而深度学习技术在目标检测、图像识别等任务上的显著成功为其提供了强有力的支持。
37 0
|
3月前
|
机器学习/深度学习 传感器 监控
红外小目标检测:基于深度学习
本文介绍了红外小目标检测技术的优势、基本原理及常用方法,包括背景抑制、滤波、模型和深度学习等,并探讨了多传感器融合的应用。通过一个基于深度学习的实战案例,展示了从数据准备到模型训练的全过程。最后,文章展望了该技术在军事、安防、交通等领域的广泛应用及未来发展趋势。
|
4月前
|
机器学习/深度学习 编解码 自动驾驶
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
73 0
|
6月前
|
机器学习/深度学习 监控 自动驾驶
深度学习之2D目标检测
2D目标检测是深度学习中的一个关键任务,旨在识别图像中的目标对象,并在每个目标对象周围生成一个边界框。该任务在自动驾驶、视频监控、机器人视觉等领域具有广泛应用。以下是对深度学习中2D目标检测的详细介绍,包括其基本概念、主要方法、常见模型、应用场景、优势和挑战。
121 4
|
6月前
|
机器学习/深度学习 存储 算法
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪
|
6月前
|
机器学习/深度学习 存储 计算机视觉
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的PCB板缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
|
6月前
|
机器学习/深度学习 存储 安全
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测
基于YOLOv8深度学习的行人跌倒检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测