《------往期经典推荐------》
二、机器学习实战专栏【链接】 ,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】,持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~
《------正文------》
目录
- 什么是双阶段检测器
-
- 步骤1:生成区域建议
- 步骤2:对建议区域进行细化和分类
- 优势
- 缺点
- 两级检测器的示例
- **R-CNN(基于区域的卷积神经网络)**
- [**Fast R-CNN**](#Fast R-CNN)
- 单阶段检测器
- 目标检测的最新进展和混合方法
什么是双阶段检测器

两阶段检测器,如Faster-R-CNN(基于区域的卷积神经网络),已经成为目标检测中的突出解决方案。这些检测器包括两个关键阶段:区域建议和对象分类。在区域建议阶段,识别使用**选择性搜索或区域建议网络(RPN)**等算法生成的潜在对象区域。随后,对象分类阶段采用这些区域建议来分类和细化边界框预测。
步骤1:生成区域建议
检测器的第一阶段识别图像中可能包含对象 的区域。此过程不是对对象进行分类,而是查找对象可能存在的区域(称为区域建议)。
它是如何工作的:一个轻量级的算法(如Region Proposals,RPN)扫描图像,并建议一些可能存在对象的潜在边界框。
例如:如果你有一个汽车、行人和狗的图像,第一阶段可能会在看起来像对象的区域周围输出边界框,但还没有说明它们是什么。
步骤2:对建议区域进行细化和分类
在第二阶段,检测器关注步骤1中的区域建议。对每个区域进行细化与分类:
- 细化:调整边界框以更好地适应对象。
- 分类:识别盒子内的对象(例如,"汽车"、"狗"、"行人")。
工作原理:CNN处理每个区域建议以预测确切的对象类,并调整边界框以与对象紧密对齐。
示例 :
对于步骤1中的边界框,第二阶段会:
- 优化汽车的盒子,使其紧紧地围绕在汽车周围。
- 把里面的物体归类为"汽车"。
优势
- 更高的准确性:两阶段检测器更准确,因为它们通过两个步骤来细化检测-首先生成区域建议,然后对其进行分类和细化。这使得他们更好地处理遮挡和复杂的场景。
- 更好的定位:它们在第二阶段通过细化边界框来精确定位物体,使其成为自动驾驶等任务的理想选择。
- 对噪声更鲁棒:第一阶段过滤掉嘈杂的建议,使两阶段检测器即使在嘈杂的图像中也能表现良好,比如监控视频。
缺点
- **更慢:**两级检测器通常比一级检测器更慢,因为它们有两个阶段来处理每张图像。这使得两级检测器不太适合速度至关重要的应用。
- **更复杂:**两级检测器也比一级检测器更复杂,因为它们有两个阶段需要训练。这使得两级检测器更难以训练和部署。
两级检测器的示例
R-CNN(基于区域的卷积神经网络)
- 第一阶段:使用选择性搜索算法生成区域建议(可能的对象位置)。
- 第二阶段:CNN处理每个区域建议,对对象进行分类并细化边界框。
Fast R-CNN
- 第一阶段:使用选择性搜索生成区域建议。
- 第二阶段:它不像R-CNN那样单独处理每个区域,而是从CNN的单个前向传递中提取所有提案的特征。这使得它更快,同时仍然细化和分类的建议。
Faster R-CNN
- 第一阶段:用**区域建议网络(RPN)**取代选择性搜索,直接从图像中生成区域建议,使其更有效。
- 第二阶段:使用另一个CNN层对区域提案进行细化和分类。
Mask R-CNN
- Faster R-CNN的扩展:
- 第一阶段:使用RPN生成区域提案。
- 第二阶段 :优化边界框,对对象进行分类,并添加额外的分支来预测每个对象的分割掩码。
单阶段检测器
单阶段检测器,如YOLO(You Only Look Once)和SSD(Single Shot MultiBox Detector),因其简单性和实时性能而广受欢迎。这些检测器直接预测对象边界框和类概率在一个单一的通过图像,消除了一个单独的区域建议阶段的需要。
步骤1:输入图像
- 模型的输入是整个图像(例如,对于YOLO为416x416像素)。
- 与两阶段检测器不同,在此步骤中不生成区域建议。相反,图像作为一个整体进行处理。
步骤2:将图像划分为网格
- 图像被划分为单元格网格。举例来说:
- 如果网格为13x13,则总共有169个单元格。
- 每个单元负责检测中心落在该单元内的对象。
步骤3:使用主干CNN提取特征
- 卷积神经网络(CNN) 被用作从输入图像中提取重要特征的骨干。
- 常见的主干架构:
- YOLO:使用自定义CNN或Darknet。
- SSD:使用VGG16、ResNet或MobileNet。
- RetinaNet:使用ResNet和特征金字塔网络(FPN)。
工作流程:
- CNN将输入图像转换为特征图:
- 特征图总结了图像中不同空间位置的重要特征(边缘、纹理、形状)。
- 空间分辨率被降低,例如,从416x416像素到13x13网格单元。
步骤4:预测边界框和类概率
每个网格单元预测:
- 边界框坐标:
- 每个网格单元预测一个或多个边界框,定义如下:
- x,y:长方体中心相对于网格单元的坐标。
- w,h:框的宽度和高度,标准化为图像尺寸。
2.置信度评分:
- 表示边界框包含对象的可能性的分数。
- 例如,如果置信度为0.95,则意味着模型有95%的置信度认为存在对象。
3.类别概率:
- 该模型预测所有可能的对象类别的概率(例如,狗、车、人)。
- 举例来说:
- 对象是狗的概率= 0.85。
- 物体是猫的概率= 0.10。
步骤5:使用锚框(可选)
- 锚框是在每个网格单元上具有不同形状和大小的预定义边界框。
- 该模型预测的不是任意框尺寸,而是:调整(偏移)锚框尺寸以更好地适应对象。
为什么要使用锚框?
- 真实世界图像中的对象大小和形状各不相同。锚框使模型更容易检测不同比例和纵横比的对象。
- 举例来说:
- 长宽比为2:1的锚盒可以更好地检测汽车。
- 宽高比为1:1的锚框可以更好地检测人。
步骤6:过滤低置信度预测
- 在对所有网格单元进行预测后,模型会过滤掉置信度得分较低的框。
- 举例来说:
- 如果置信度阈值为0.5,则丢弃得分低于0.5的框。
步骤7:非最大抑制(NMS)
- 多个重叠的框可以预测相同的对象。
- **非最大抑制(NMS)**用于仅保留具有最高置信度分数的框并删除重叠框。
- 这确保了每个对象只有一个边界框。
示例:
- 假设两个盒子检测到同一只狗:
- 方框1:置信度= 0.85,IoU = 0.7。
- 方框2:置信度= 0.75,IoU = 0.7。
- NMS保留Box 1并删除Box 2,因为它具有更高的置信度得分。
第8步:最终输出
- 在过滤和NMS之后,模型输出:
- 检测对象的边界框。
- 类别标签和置信度得分。
示例如下:
- 检测到的对象:
- 犬:边界框=(50,60,100,120)置信度= 0.95。
- 球:边界框=(200,180,50,50)置信度= 0.85。
单级探测器优点
- 更快:它们在一个步骤中处理图像,使其成为视频监控或自动驾驶汽车等实时应用的理想选择。
- 更简单:只有一个阶段进行训练,与两阶段检测器相比,它们更容易训练和部署。
- 对规模变化的鲁棒性:由于它们不依赖于区域建议,因此它们可以更好地处理不同大小的对象,使其能够有效地执行交通场景分析等任务。
单级探测器缺点
- 较低的准确性:由于一级检测器在单个步骤中处理检测而不进行细化,因此它们通常不如两级检测器准确。这使得它们不太适合需要非常高精度的任务,如医学成像。
- 对遮挡的鲁棒性较低:单阶段检测器难以检测部分隐藏的对象,因为它们缺乏一个细化阶段来处理遮挡等具有挑战性的场景。这可能会使它们在自动驾驶等应用中的可靠性降低,在这些应用中,物体可能会被部分阻挡。
目标检测的最新进展和混合方法
为了解决一级检测器的速度和两级检测器的准确性之间的权衡,研究人员引入了各种创新和混合方法,这些方法结合了联合收割机这两种方法的优点。以下是一些值得注意的进展:
1.混合方法
混合模型混合了一级和两级检测器的元素,以平衡速度和准确性。
- 示例:
- Faster R-CNN:虽然主要是两阶段检测器,但它采用**区域建议网络(RPN)**作为第一阶段。RPN是一个单阶段检测器,直接从特征图中生成区域建议。然后在第二阶段对这些建议进行改进,将一级检测器的速度与两级检测器的精度相结合。
2.特征金字塔网络FPN
FPN用于提高不同大小对象的检测性能。
- 工作原理:
- FPN从CNN的不同层创建特征图的层次结构。
- 较低的层捕捉适合小对象的精细细节。
- 更高的层为更大的对象捕获更抽象的特征。
- 这种多尺度特征表示允许网络有效地检测不同尺度的对象。
- 优点:提高检测大小差异很大的对象的准确性。
3.注意力机制
注意力机制使模型能够在检测过程中优先考虑图像的重要部分。
- 它是如何工作的:
- 该模型关注图像中最有可能包含对象的区域。
- 注意力有助于抑制不相关的背景信息,提高检测精度,特别是对于遮挡或混乱的场景。
- 例如 :转换器或注意力模块集成到目标检测架构中,如DETR(检测Transformer)。
4.数据增强
数据增强技术人为地扩展了训练数据集,使模型更加健壮。
例如:
- 翻转:水平或垂直镜像图像。
- 裁剪:提取图像的子区域。
- 缩放:更改图像及其对象的大小。
- 色彩调整:改变亮度、对比度或饱和度。
- 优点:使模型对光照、对象方向和比例的变化更加鲁棒,最终提高准确性和泛化能力。

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!