常见数据集:
VOC-->COCO
模型发展:
RCNN-->Fast RCNN-->Faster RCNN-->Mask RCNN
这一系列的模型(RCNN、Fast RCNN、Faster RCNN、Mask RCNN)代表了计算机视觉特别是在物体检测和分割领域的一系列重大进展。下面,我会概述每个模型的特点、网络结构、优缺点,以及它们的发展历史。
1. RCNN(Regions with CNN features)
- 特点与网络结构:RCNN(Regions with Convolutional Neural Networks)通过结合区域提取(Region Proposal)技术和卷积神经网络(CNN)来检测图片中的物体。首先,使用选择性搜索(Selective Search)算法从图片中提取约2000个候选区域,然后将这些区域调整到固定大小,并用CNN提取特征,最后通过SVM(支持向量机)分类器对每个区域进行分类。
- 优点:提出了使用深度学习进行物体检测的新范式,大幅提升了检测精度。
- 缺点:速度慢,因为对每个候选区域独立运行CNN是非常耗时的;训练过程繁琐,包括预训练CNN、训练SVM分类器和边界框回归器。
RCNN(Regions with CNN features)算法是一种结合了区域提案(Region Proposal)和卷积神经网络(CNN)的物体检测方法。其核心步骤可以总结如下:
-
区域提案:首先,使用选择性搜索(Selective Search)算法在输入图像上生成大约2000个候选区域(也称为区域提案)。这些区域是图像中可能包含物体的部分。
-
特征提取:对于每个区域提案,将其缩放到固定大小(通常是227x227像素),然后通过预训练的卷积神经网络(如AlexNet、VGG等)运行,以提取该区域的特征。这一步骤是独立对每个区域进行的,因此是计算密集型的。
-
分类:提取的特征被送入一系列的支持向量机(SVM)分类器中,每个SVM分类器负责判断区域是否属于某个特定的类别(例如人、车等)。因此,对于每个类别,都有一个单独的SVM模型。
-
边界框回归:对于被分类器认为含有物体的区域,使用线性回归模型对其边界框(bounding box)的位置进行微调,以更精确地定位物体。这一步骤有助于改进最终的检测精度。
-
非极大值抑制(NMS):对于每个类别,可能有多个区域提案被识别为包含该类别的物体,这些区域之间可能高度重叠。非极大值抑制是一种技术,用于在每个类别中只保留最佳的区域提案,即抑制(删除)所有与最高得分的区域提案重叠度较高的其他区域提案,从而减少重复检测。
RCNN通过这些步骤实现了当时领先的检测性能,但也因为需要对每个区域提案独立运行CNN,导致其处理速度较慢,不适合实时应用。此外,其训练过程相对复杂,需要分别训练CNN、SVM和边界框回归模型。
2. Fast RCNN
- 特点与网络结构:为了解决RCNN速度慢的问题,Fast RCNN在整张图片上运行CNN,一次性提取特征图,然后对于每个候选区域从这个共享的特征图上裁剪出特征(使用ROI池化层),之后再通过一系列的全连接层进行分类和边界框回归。
- 优点:相比于RCNN,大大提升了速度和效率,因为它在整张图上只运行一次CNN。
- 缺点:仍依赖于慢速的选择性搜索算法来生成区域提案。
Fast RCNN是对RCNN的一种改进,旨在解决RCNN处理速度慢和训练过程复杂的问题。它通过共享卷积计算和使用多任务损失函数来同时进行分类和边界框回归,显著提高了处理速度和训练效率。下面是Fast RCNN的核心步骤:
-
整图卷积特征提取:与RCNN不同,Fast RCNN首先对整张输入图像运行一次卷积神经网络,生成整个图像的卷积特征图。这一步骤大大减少了重复的计算,因为它避免了对每个区域提案分别提取特征。
-
区域提案:与RCNN类似,Fast RCNN仍然使用选择性搜索或其他方法来生成区域提案,但这些区域提案是直接在卷积特征图上操作,而不是原始图像上。
-
RoI(Region of Interest)池化:对于每个区域提案,Fast RCNN从卷积特征图上裁剪对应的特征区域,并使用RoI池化层将这些特征区域调整为固定大小(例如7x7),以便进行进一步处理。这一步是通过在卷积特征图上操作实现的,从而保持了计算效率。
-
分类与边界框回归:RoI池化后的特征被送入一系列全连接层,最后分叉成两个输出层:一个用于物体分类,另一个用于边界框回归。这里使用的是多任务损失,即同时优化分类损失和边界框回归损失。
-
非极大值抑制(NMS):和RCNN一样,Fast RCNN也使用非极大值抑制来处理每个类别的多个检测,保留最佳的检测结果,从而减少重复检测。
Fast RCNN的这些改进大幅提高了物体检测的速度和训练效率,同时简化了训练过程,因为整个模型可以通过反向传播算法端到端地训练。然而,虽然Fast RCNN在处理速度上有显著改进,但它仍依赖于传统的区域提案方法(如选择性搜索),这部分仍是速度的瓶颈。
3. Faster RCNN
- 特点与网络结构:为了克服依赖慢速选择性搜索算法的缺点,Faster RCNN引入了区域提案网络(RPN),它是一个全卷积网络,可以在CNN特征图上实时生成区域提案。这些提案随后用于ROI池化和后续的分类及边界框回归。
- 优点:实现了端到端的训练和显著的速度提升,同时保持了高精度。
- 缺点:虽然速度有所提升,但在处理非常高分辨率的图像时,速度和效率仍有限。
Faster RCNN进一步改进了Fast RCNN,引入了区域提案网络(RPN,Region Proposal Network),以解决依赖慢速选择性搜索生成区域提案的问题,实现了几乎实时的物体检测。以下是Faster RCNN算法的核心步骤:
-
共享卷积层:与Fast RCNN类似,Faster RCNN首先对整张图像使用卷积神经网络(CNN)生成特征图。这一步骤不仅用于后续的物体检测,也为区域提案网络(RPN)提供了输入特征。
-
区域提案网络(RPN):
- RPN是Faster RCNN的核心创新之一。它在特征图上滑动一个小网络,该网络在每个位置同时预测多个区域提案及其“对象得分”(objectness score)。
- RPN使用一组预定义大小和比例的锚点框(anchor boxes)作为参考,通过学习调整这些锚点框的位置和大小,生成精确的区域提案。
- 对于每个锚点框,RPN预测两类得分(是对象还是非对象)和四个调整值(用于精确定位边界框)。
-
RoI池化:
- 使用RPN生成的区域提案,Faster RCNN从共享的卷积特征图中裁剪出对应的特征区域。
- 通过RoI池化层将这些特征区域调整为固定大小,以便进一步处理。
-
分类与边界框回归:
- 和Fast RCNN一样,Faster RCNN将RoI池化后的特征送入一系列全连接层,这些层分叉成两个输出:一个用于物体分类,另一个用于边界框回归。
- 通过多任务损失同时优化分类和边界框定位,实现更精确的检测。
-
非极大值抑制(NMS):
- 对于每个类别,可能会有多个重叠的检测框。通过非极大值抑制,Faster RCNN去除重叠度较高的检测框,只保留得分最高的框,从而减少重复检测。
Faster RCNN的这些改进显著提升了检测的速度和精度,使其成为深度学习物体检测领域的一个里程碑。RPN的引入使得模型可以端到端地进行训练,同时生成高质量的区域提案,大大减少了对外部区域提案方法的依赖。
4. Mask RCNN
- 特点与网络结构:Mask RCNN在Faster RCNN的基础上增加了一个分支,用于生成物体的像素级掩码,实现了物体检测和实例分割的同时进行。它使用ROIAlign代替了ROIPooling,解决了ROI池化因为量化而造成的精度损失问题。
- 优点:能够同时进行高精度的物体检测和实例分割;ROIAlign改进提高了分割精度。
- 缺点:相比于仅进行物体检测的模型,计算成本更高,速度更慢。
Mask RCNN是在Faster RCNN的基础上发展起来的,它不仅能进行物体检测,还能进行实例分割,即对每个检测到的物体,Mask RCNN能够生成一个精确的像素级掩码,用以区分物体的具体轮廓。以下是Mask RCNN算法的主要步骤:
-
卷积特征提取:Mask RCNN首先使用卷积神经网络(通常是ResNet加上FPN,Feature Pyramid Network)处理整张图像,生成多尺度的特征图。这些特征图既用于后续的区域提案,也用于生成掩码。
-
区域提案网络(RPN):通过在特征图上运行RPN生成区域提案。RPN通过学习在每个位置预测物体边界框和对象得分,产生高质量的区域提案。
-
RoIAlign:与Faster RCNN中的RoIPooling不同,Mask RCNN使用RoIAlign来从特征图上精确裁剪和调整每个提案区域到固定大小,解决了RoIPooling因量化而引入的轻微位置偏差,提高了掩码预测的精度。
-
分类、边界框回归与掩码预测:
- 对于每个RoIAlign后的区域,Mask RCNN使用全连接层进行分类和边界框回归。
- 同时,对每个区域使用一个小的全卷积网络(FCN)生成对应的物体掩码。不同于分类和边界框回归,掩码预测是在每个类别上独立进行的,意味着每个类别都会有一个掩码预测,最后根据分类结果选择相应的掩码。
-
非极大值抑制(NMS):和Faster RCNN一样,Mask RCNN也应用NMS来去除同一类别中重叠度较高的检测,确保每个实例只被检测一次。
-
多任务损失:Mask RCNN通过一个多任务损失函数来同时优化分类、边界框回归和掩码预测。这个损失函数包括分类损失、边界框损失和掩码损失,它们共同指导模型的训练。
Mask RCNN通过这些步骤,能够实现同时对物体进行高精度的检测和像素级的实例分割,显著提升了实例分割的准确度和效率。其引入的RoIAlign技术特别解决了实例分割中的对齐问题,是其能够成功应用于实例分割的关键所在。
SSD-->FSSD-->DSSD
YOLO系列:YOLO发展史
指标评估:
目标检测评估指标