什么是 R-CNN?快速概览
了解 R-CNN 的工作原理,从选择性搜索和 CNN 特征提取到 SVM 分类与 NMS,以及它如何为 Fast R-CNN 和 YOLO 铺平道路。
Abirami Vina6 分钟阅读
目标检测是一项计算机视觉任务,可以识别并定位图像或视频中的对象,适用于自动驾驶、监控和医学影像等应用。早期的目标检测方法,例如 Viola-Jones 检测器,以及基于支持向量机 (SVM) 的方向梯度直方图 (HOG),依赖手工设计的特征和滑动窗口。这些方法往往难以在包含多个不同形状和尺寸对象的复杂场景中准确检测对象。
基于区域的卷积神经网络 (R-CNN) 改变了我们处理目标检测的方式,是计算机视觉发展史上的重要里程碑。要了解 Ultralytics YOLOv8 这样的模型是如何发展而来的,我们需要先了解 R-CNN 这样的模型。
R-CNN 模型架构由 Ross Girshick 及其团队创建,能够生成区域候选框、使用预训练的卷积神经网络 (CNN) 提取特征、对对象进行分类,并优化边界框。这个过程看起来可能很复杂,但读完本文后,你就能清楚了解 R-CNN 的工作原理及其重大影响。
R-CNN 如何工作?#
R-CNN 模型的目标检测过程包含三个主要步骤:生成区域候选框、提取特征,以及对目标进行分类并优化边界框。下面我们逐步了解每个环节。

图 1. R-CNN 的工作原理。
区域候选框:RCNN 的基础#
第一步,R-CNN 模型会扫描图像,生成大量区域候选框。区域候选框是可能包含目标的区域。Selective Search 等方法会分析图像的不同特征,例如颜色、纹理和形状,并将图像拆分成不同部分。Selective Search 首先将图像划分为较小区域,然后合并相似区域,形成更大的感兴趣区域。此过程会持续进行,直到生成约 2,000 个区域候选框。

图 2. Selective Search 的工作原理。
这些区域候选框有助于找出所有可能存在目标的位置。在后续步骤中,模型可以聚焦于这些特定区域,而非整张图像,从而高效处理最相关的区域。使用区域候选框可以兼顾覆盖全面性和计算效率。
图像特征提取:捕捉细节#
R-CNN 模型目标检测过程的下一步是从区域候选框中提取特征。每个区域候选框都会调整到 CNN 所需的统一尺寸(例如 224x224 像素)。调整尺寸有助于 CNN 高效处理每个候选区域。在变形之前,每个区域候选框都会稍微扩展,在区域周围额外包含 16 像素的上下文信息,以便为特征提取提供更多周边信息。
调整尺寸后,这些区域候选框会输入 AlexNet 等 CNN。此类 CNN 通常已在 ImageNet 等大型数据集上预训练。CNN 会处理每个区域,提取高维特征向量,以捕捉边缘、纹理和模式等重要细节。这些特征向量浓缩了区域中的关键信息,并将原始图像数据转换为模型可用于进一步分析的格式。在后续阶段准确分类和定位目标,取决于这一将视觉信息转化为有意义数据的关键过程。

图 3. 使用 AlexNet 从区域候选框中提取特征。
目标分类:识别检测到的目标#
第三步是对这些区域中的目标进行分类,也就是确定候选区域中每个目标所属的类别。随后,提取出的特征向量会输入机器学习分类器。
在 R-CNN 中,通常使用支持向量机(SVMs)完成这项任务。每个 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. 使用 R-CNN 检测脑肿瘤。
除肿瘤检测外,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 凭借先进功能,在许多计算机视觉任务中实现了更高的准确率和速度;而 Ultralytics YOLO26 等更新的模型更进一步,完全移除了 NMS。
要点#
R-CNN 是计算机视觉领域的一个转折点,展示了深度学习如何改变目标检测。它的成功激发了该领域的许多新思路。尽管 Faster R-CNN 和 YOLO 等新模型后来解决了 R-CNN 的缺陷,但 R-CNN 的贡献仍是一个值得铭记的重要里程碑。
随着研究不断深入,我们将看到更出色、速度更快的目标检测模型。这些进展不仅会改善机器理解世界的方式,还会推动许多行业的发展。
想继续探索 AI 吗?加入 Ultralytics 社区吧!浏览我们的 GitHub 代码库,了解最新的人工智能创新成果。查看我们面向多个行业的 AI 解决方案,例如农业和制造业。加入我们,一起学习和进步!
作者
评论
提出问题、分享你的结果,或帮助其他人。










