什么是 R-CNN?快速概览
了解 RCNN 及其对目标检测的影响。我们将介绍其关键组件、应用,以及其在推动 Fast RCNN 和 YOLO 等技术中的作用。

目标检测是一项计算机视觉任务,能够在图像或视频中识别和定位对象,适用于自动驾驶、监控和医学影像等应用。早期的目标检测方法(如 Viola-Jones 检测器和结合支持向量机 (SVM) 的方向梯度直方图 (HOG))依赖于手工特征和滑动窗口。这些方法在准确检测具有各种形状和大小的多个对象的复杂场景时往往力不从心。
基于区域的卷积神经网络(R-CNN)改变了我们处理目标检测的方式。这是计算机视觉历史上的一个重要里程碑。要理解像 Ultralytics YOLOv8 这样的模型是如何诞生的,我们需要先了解像 R-CNN 这样的模型。
由罗斯·吉尔希克 (Ross Girshick)及其团队创建的 R-CNN 模型架构可以生成区域建议、使用预训练的卷积神经网络 (CNN) 提取特征、对对象进行分类并精炼边界框。虽然这看起来令人生畏,但在本文结束时,你将对 R-CNN 的工作原理及其产生巨大影响的原因有一个清晰的了解。我们来看一看!
R-CNN 是如何工作的?#
R-CNN 模型的目标检测过程包括三个主要步骤:生成候选区域、提取特征以及在优化边界框的同时对物体进行分类。让我们逐步了解每个步骤。

图 1. R-CNN 的工作原理。
候选区域:R-CNN 的基石#
在第一步中,R-CNN 模型会对图像进行扫描以创建大量的候选区域。候选区域是指可能包含物体的潜在区域。Selective Search(选择性搜索)等方法被用于观察图像的各个方面,例如颜色、纹理和形状,将其分解为不同的部分。Selective Search 首先将图像划分为更小的部分,然后合并相似的部分以形成更大的感兴趣区域。这个过程一直持续,直到生成约 2,000 个候选区域。

图 2. 选择性搜索的工作原理。
这些候选区域有助于识别可能存在物体的所有潜在位置。在接下来的步骤中,模型可以通过专注于这些特定区域,而不是整个图像,从而高效地处理最相关的部分。使用候选区域在全面性与计算效率之间取得了平衡。
图像特征提取:捕捉细节#
R-CNN 模型目标检测过程的下一步是从候选区域中提取特征。每个候选区域都会被调整为 CNN 所期望的固定尺寸(例如 224x224 像素)。调整尺寸有助于 CNN 高效地处理每个建议区域。在变形之前,每个候选区域的尺寸会略微扩大,以包含区域周围 16 像素的额外上下文,从而提供更多的周边信息,以实现更好的特征提取。
调整尺寸后,这些候选区域会被输入到像 AlexNet 这样的 CNN 中,该网络通常是在 ImageNet 等大型数据集上进行预训练的。CNN 处理每个区域以提取高维特征向量,捕捉边缘、纹理和图案等重要细节。这些特征向量浓缩了区域中的核心信息。它们将原始图像数据转换为模型可以用于后续分析的格式。能否在后续阶段准确分类和定位物体,取决于这种将视觉信息转化为有意义数据的关键转换。

图 3. 使用 AlexNet 从区域建议中提取特征。
物体分类:识别检测到的物体#
第三步是对这些区域内的物体进行分类。这意味着确定在建议区域中发现的每个物体的类别。随后,提取出的特征向量会被传递给一个机器学习分类器。
在 R-CNN 的案例中,通常使用支持向量机 (SVM) 来实现这一目的。每个 SVM 都经过训练,通过分析特征向量并判断特定区域是否包含该类别的实例来识别特定的物体类别。本质上,对于每个物体类别,都有一个专门的分类器在检查每个候选区域是否包含该特定物体。
在训练期间,分类器会获得带有正样本和负样本的标记数据:
- 正样本:包含目标物体的区域。
- 负样本:不包含目标物体的区域。
分类器学会区分这些样本。边界框回归通过调整最初建议的边界框,使其更好地匹配实际物体边界,从而进一步优化检测到的物体的位置和大小。通过结合分类和边界框回归,R-CNN 模型能够识别并精确地定位物体。

图 4. 边界框回归示例。(来源:towardsdatascience.com)
综合起来:使用 NMS 优化检测结果#
在分类和边界框回归步骤之后,模型通常会为同一个物体生成多个重叠的边界框。非极大值抑制 (NMS) 被用于优化这些检测结果,以保留最精确的框。模型通过应用 NMS 消除冗余和重叠的框,仅保留置信度最高的检测结果。
NMS 的工作原理是评估所有边界框的置信度得分(表示检测到的物体实际存在的可能性),并抑制那些与高分框显著重叠的框。

图 5. 非极大值抑制示例。(来源:towardsdatascience.com)
以下是 NMS 步骤的分解:
- 排序: 根据置信度得分对边界框进行降序排序。
- 选择: 选择得分最高的框,并将所有与它显著重叠(基于交并比,IoU)的框移除。
- 迭代: 对下一个得分最高的框重复此过程,直到所有框都经过处理。
总而言之,R-CNN 模型通过生成候选区域、使用 CNN 提取特征、进行物体分类并结合边界框回归优化位置,最后利用非极大值抑制 (NMS) 仅保留最精确的检测结果来实现物体检测。
R-CNN 是目标检测的一个里程碑#
R-CNN 是目标检测史上的标志性模型,因为它引入了一种极大提高了准确性和性能的新方法。在 R-CNN 之前,目标检测模型难以平衡速度和精度。R-CNN 生成候选区域并使用 CNN 提取特征的方法,实现了对图像中物体的精确定位和识别。
R-CNN 为 Fast R-CNN、Faster R-CNN 和 Mask R-CNN 等模型铺平了道路,这些模型进一步提高了效率和准确性。通过将深度学习与基于区域的分析相结合,R-CNN 在该领域树立了新标准,并为各种现实应用开启了可能性。
用 R-CNN 变革医学影像#
R-CNN 的一个有趣用例是在医学影像领域。R-CNN 模型已被用于在 MRI 和 CT 扫描等医学扫描中检测和分类不同类型的肿瘤,例如脑肿瘤。在医学影像中使用 R-CNN 模型可以提高诊断准确率,并帮助放射科医生在早期阶段识别恶性肿瘤。R-CNN 甚至能够检测出微小的早期肿瘤,这对于癌症等疾病的治疗和预后可以产生重大影响。

图 6. 使用 RCNN 检测脑肿瘤。
除了肿瘤检测之外,R-CNN 模型还可以应用于其他医学影像任务。例如,它可以识别骨折、检测眼部扫描中的视网膜疾病,以及分析肺部图像以诊断肺炎和 COVID-19 等疾病。无论是什么医疗问题,早期检测都能带来更好的患者预后。通过应用 R-CNN 在识别和定位异常方面的精确度,医疗保健提供商可以提高医疗诊断的可靠性和速度。随着目标检测简化诊断过程,患者可以受益于及时准确的治疗方案。
R-CNN 的局限性及其继任者#
尽管表现优异,但 R-CNN 仍存在一定的缺陷,如高计算复杂度和缓慢的推理时间。这些缺点使得 R-CNN 模型不适合实时应用。将候选区域生成和分类拆分为不同的步骤,可能会导致效率降低。
多年来,各种目标检测模型应运而生,解决了这些问题。Fast R-CNN 将候选区域生成和 CNN 特征提取结合到一个步骤中,加快了过程。Faster R-CNN 引入了区域建议网络 (RPN) 来简化候选区域生成,而 Mask R-CNN 则增加了像素级分割以实现更详细的检测。

图 7. R-CNN、Fast R-CNN、Faster R-CNN 和 Mask R-CNN 的对比。
大约在 Faster R-CNN 出现的同时,YOLO (You Only Look Once) 系列开始推进实时目标检测。YOLO 模型在通过网络单次前向传播中预测边界框和类概率。例如,Ultralytics YOLOv8 提供了更高的准确率和速度,并针对许多计算机视觉任务提供了高级功能。
关键要点#
R-CNN 改变了计算机视觉的游戏规则,展示了深度学习如何改变目标检测。它的成功激发了该领域的许多新想法。尽管后来出现了像 Faster R-CNN 和 YOLO 等修复了 R-CNN 缺陷的模型,但其贡献仍是一个值得铭记的重要里程碑。
随着研究的持续进行,我们将看到更好、更快的目标检测模型。这些进步不仅会改善机器理解世界的方式,还将推动许多行业的进步。目标检测的未来看起来令人兴奋!
想继续探索人工智能吗?加入 Ultralytics 社区!探索我们的 GitHub 仓库以查看我们最新的人工智能创新。查看我们涵盖农业和制造等各个行业的人工智能解决方案。加入我们,共同学习与进步!






