前言
文章性质:学习笔记 📖
学习资料:吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2
主要内容:根据学习资料撰写的学习笔记,该篇主要介绍了若干种典型的目标检测算法,并简单提及了语义分割的基本概念。
一、典型的目标检测算法
本节主要介绍几种典型的目标检测算法,包括 2021 年刚推出的目标检测算法。
1、R-CNN
R-CNN 算法架构如图 9-23 所示。

1. 首先通过选择性搜索算法,对待检测的图像搜索出 2000 个候选窗口。
2. 把这 2000 个候选框的图像都通过 crop 或 warped 缩放到 227×227 ,再分别输入 CNN ,为每个候选框提取出一个特征向量。
3. 针对上面每个候选框的对应特征向量,利用 SVM 算法进行分类识别,使用回归算法对边界进行预测。
2、Fast R-CNN
Fast R-CNN 算法架构如图 9-24 所示。Fast R-CNN 架构是端到端的多任务训练。

在图 9-24 中,一个输入图像和多个感兴趣区域 RoI 被输入一个完全卷积的系统中。每个 RoI 对应一个固定大小的特征图,然后通过全连接层映射到特征向量。网络中每个 RoI 有两个输出向量:softmax 概率以及每类边框回归偏移。
1. 在图像中确定约 1000~2000 个候选框( 使用选择性搜索,即 SS 方法 )。
2. 将整张图象输入至 CNN 中,得到特征图。
3. 找到每个候选框在特征图上的映射块 patch ,将此块作为每个候选框的卷积特征输入 RoI 池化层和之后的层。
4. 对于候选框中提取出的特征,使用分类器判别其是否属于一个特定类。
5. 对于属于某一特征的候选框,使用回归器进一步调整其位置。
3、Faster R-CNN
Faster R-CNN 算法可认为是使用 RPN 的 Fast R-CNN 算法,其架构如图 9-25 所示。

1. 将整张图像输入至 CNN 中,得到特征图。
2. 把特征图输入至 RPN 中,生成候选框,并把候选框投影到特征图上获得相应的特征矩阵。
3. 将每个特征矩阵通过 RoI 池化层缩放到相同大小的特征图。
4. 把特征图展平为长度相同的向量,使用分类器判别其是否属于一个特定类。
5. 对于属于某一特征的候选框,使用回归器进一步调整其位置。
4、Mask R-CNN
Mask R-CNN 算法是在 Faster R-CNN 算法的基础上进行了扩展,通过增加一个分支来并行进行像素级目标实例分割。这个分支是应用于 RoI 上的全卷积网络,对每个像素进行分割,整体代价很小。它使用类似于 Faster R-CNN 的架构进行目标候选框提取,不过增加了一个与分类、回归并行的 Mask 头。此外,Mask R-CNN 使用了 RoI 对齐层,而不是 RoI 池化层,以避免由于空间量化造成的像素级错误。为获得更好的准确性和更快的速度,该算法作者选择带有 特征金字塔网络(Feature Pyramid Network, FPN)的 ResNeXt-101 作为主干,其架构如图 9-26 所示。

5、YOLO
前面介绍的目标检测算法都是两阶段检测模型,这类算法将检测视为一个 分类问题 :需要一个模块枚举一些由网络分类为前景或背景的候选框。然而,YOLO 对检测问题进行了重构,视其为一个 回归问题 ,把预测图像像素作为目标及其边界框属性。
在 YOLO 中,输入图像被划分为 S×S 的网格,目标中心点所在的网格负责该目标的检测。
在 YOLO 中,一个网格预测多个边框,每个预测数组包括 5 个元素:边框的中心点 (x, y) 、边框的宽 W 和高 H 、置信度得分 。
YOLO 有很多版本:YOLO v1 、YOLO v2 = YOLO 9000 、YOLO v3 、YOLO v4 、YOLO v5 等。
为了提升检测小目标的性能,从 YOLO v3 开始 引入特征 FPN 架构 ,如图 9-27 所示。

由图 9-27 可知,FPN 的块结构分为两个部分:自顶向下通路(Top-Down Pathway),侧边通路(Lateral Pathway)。
1)自顶向下通路 是指对上一个小尺寸的特征图(语义更高层)做 2 倍上采样,并连接到下一层。
2)侧边通路 是指下面的特征图(高分辨率低语义)先用 1×1 的卷积核进行通道压缩,再与上面下来的采样后结果进行合并,合并方式为逐元素相加(Element-Wise Addition),然后通过 3×3 的卷积核对合并后的结果进行处理,得到对应的特征图。
FPN 高分辨率、强语义的特征,有利于小目标的检测。
FPN 并不是一个目标检测框架,但它可以融入其他目标检测框架中,提升检测器的性能。
根据特征的融合方法,可将 FPN 分为自上而下的融合、自下而上的融合、混合融合、递归融合等。
6、各种算法的性能比较
Transformer 架构在自然语言领域中取得了很好的成绩,在应用到视觉领域后也取得了很好的成绩。
图 9-28 中的 Swin-T 就是基于 Transformer 架构的一种目标检测、语义分割算法,目前该算法位于最优位置。

二、语义分割
语义分割(Semantic Segmentation)是一种像素级别的图像处理方式,比目标检测更加精确。语义分割是对图像中每一个像素点进行分类,确定每个点的类别(如属于背景、人或飞机等),进而进行区域划分,如图 9-29 所示,左图是真实的图像,右图是分割后的结果。目前,语义分割已经被广泛应用于自动驾驶、机器人技术和无人机落点判定等领域。

在图像处理领域,CNN 已经在图像分类方面取得了巨大的成功,但是由于 CNN 在卷积和池化的过程中会丢失图像细节,如特征图逐渐变小,所以不能很好地指出物体的具体轮廓,识别每个像素具体属于哪个物体,无法做到精确分割。
为了解决这个问题,Jonathan Long 等人提出了 全卷积网络(Fully Convolutional Network, FCN)架构。
利用卷积神经网络进行图像分类或回归任务时,通常在卷积层之后会接上若干个全连接层,将卷积层产生的特征图映射成一个固定长度的特征向量。因为它们最后都期望得到整个输入图像属于某类对象的概率值,如图 9-30 所示,AlexNet 的 ImageNet 模型输出一个 1000 维的向量表示输入图像属于每一类的概率(经过 softmax 归一化)。

与通常用于分类或回归任务的卷积神经网络不同,全卷积网络可以接收任意尺寸的输入图像。把图 9-31 中的 3 个全连接层改为卷积核尺寸为 1×1 ,通道数为向量长度的卷积层,然后采用转置卷积层对最后一个卷积层的特征图进行上采样,使它恢复到与输入图像相同的尺寸,从而可以对每个像素都进行一次预测,同时保留了原始输入图像中的空间信息,接着在上采样的特征图上进行逐像素分类,最后逐个元素计算分类的损失,相当于每一个像素对应一个训练样本。这样整个网络都使用卷积层,而没有使用全连接层,这或许就是全卷积网络名称的由来。该网络的输出类别预测与输入图像在像素级别上具有一一对应关系,其通道维度的输出为该位置对应像素的类别预测,如图 9-31 所示。

FCN 的卷积网络部分可以采用 VGG 、GoogleNet 、AlexNet 、ResNet 等作为预训练模型,为了得到更加准确的像素级别分割,可以在这些预训练模型的基础上进行微调,对反卷积的结果与对应的正向特征图进行叠加输出。
第九章の小结
目标检测和语义分割是视觉处理领域的重要分支,随着自动驾驶在企业的广泛应用,目标检测也呈现快速发展的趋势。本章首先介绍了目标检测、语义分割的基本概念,以及如何确定候选框等,然后在此基础上介绍了各种优化算法。
&spm=1001.2101.3001.5002&articleId=138824394&d=1&t=3&u=c073cfb8e9a84f049d0ab7b40cfd95fc)
1万+

被折叠的 条评论
为什么被折叠?



