YOLO(You Only Look Once)和 Faster R-CNN 是目标检测领域的两大经典算法,分别代表 “单阶段检测” 和 “两阶段检测” 的核心思路,原理差异直接导致了它们在速度和精度上的显著区别。下面从核心架构、工作流程、关键机制三个维度拆解具体原理:
一、YOLO:单阶段 “端到端” 检测(速度优先)
YOLO 的核心设计是 “一次性看全图,直接输出目标位置和类别”,不需要分阶段生成候选区域,因此速度极快。以应用最广的 YOLOv5 为例,原理可拆解为 3 步:
1. 输入图像预处理
将任意尺寸的输入图像(如园区监控画面)统一缩放至固定尺寸(如 640×640),确保输入网络的图像规格一致,便于并行计算。
2. 网格划分与目标预测
网格划分:将缩放后的图像划分为 S×S 个网格(如 YOLOv5 默认划分为 8×8、16×16、32×32 三种不同大小的网格,对应检测不同尺寸的目标)。
例:若图像被划分为 13×13 网格,每个网格负责检测 “中心落在该网格内” 的目标(比如园区内的人,若其中心点在第 5 行第 6 列网格,就由该网格预测)。
边界框与置信度预测:每个网格会预测 B 个边界框(Bounding Box,如 YOLOv5 每个网格预测 3 个),每个边界框包含 5 个基础信息:
(x, y):边界框中心坐标(相对于网格的偏移量,范围 0-1,确保在网格内);
(w, h):边界框宽高(相对于整幅图像的比例,范围 0-1);
confidence(置信度):表示 “该框内有目标” 且 “框位置准确” 的概率(= 目标存在概率 ×IoU,IoU 是预测框与真实框的重叠度)。
类别概率预测:每个网格还会预测 C 个类别概率(如 “人”“车”“树” 等),表示网格内目标属于某类别的概率。最终每个边界框的 “类别置信度”= 网格类别概率 × 边界框置信度,用于筛选有效目标。
3. 非极大值抑制(NMS)筛选
同一目标可能被多个网格预测出多个边界框,通过 NMS 保留 “类别置信度最高” 且 “与其他框重叠度低” 的框,最终输出唯一的目标检测结果(如 “在 (100,200) 位置有一个人,置信度 90%”)。
核心特点:
单阶段:从输入到输出仅需一次网络计算,速度极快(YOLOv8 在普通 GPU 上可达 300 + 帧 / 秒);
全局视野:网络一次性看全图,对目标的上下文理解更好(比如能区分 “园区内正常行走的人” 和 “翻越围墙的人” 的整体场景);
缺点:小目标检测精度略低(因网格划分可能漏检极小目标,如远处的人)。
二、Faster R-CNN:两阶段 “先候选后精修” 检测(精度优先)
Faster R-CNN 是两阶段算法的里程碑,核心是 “先生成可能包含目标的候选区域,再对候选区域做精准分类和定位”,分两大阶段:
第一阶段:区域提议网络(RPN)生成候选区域
目标是从图像中快速筛选出 “可能有目标” 的区域(Region Proposal),避免对整幅图的每个像素无差别计算。
特征提取:用 CNN(如 VGG、ResNet)对输入图像提取全局特征图(如将 800×600 的图像压缩为 50×38 的特征图,保留关键信息)。
锚框(Anchor)预设:在特征图的每个像素上预设 k 个不同尺度、不同长宽比的锚框(如 3 种尺度 ×3 种比例 = 9 个锚框),锚框对应原图中的区域(如特征图 1 个像素对应原图 16×16 区域,则锚框在原图的大小可按比例计算)。
例:园区监控中,预设 “小锚框” 检测远处的人,“大锚框” 检测近处的车。
锚框二分类与修正:
二分类:判断每个锚框是 “前景(有目标)” 还是 “背景(无目标)”;
边界框回归:对 “前景锚框” 微调位置和大小,使其更接近真实目标(输出修正量 dx、dy、dw、dh)。
最终从所有前景锚框中筛选出 2000 个高质量候选区域(通过置信度排序和 NMS)。
第二阶段:Fast R-CNN 对候选区域精修
目标是对 RPN 生成的候选区域做 “类别判断” 和 “精准定位”。
RoI Pooling(感兴趣区域池化):将不同大小的候选区域(如有的 100×80,有的 50×30)统一缩放到固定尺寸(如 7×7),方便后续全连接层处理。
分类与回归:
分类:通过全连接层判断候选区域属于哪个类别(如 “人”“车” 或 “背景”);
边界框回归:再次微调候选区域的位置和大小,进一步提升定位精度。
最终输出每个目标的类别和精确边界框(如 “在 (120, 210)-(180, 350) 区域有一个人,置信度 98%”)。
核心特点:
两阶段:先 “粗筛” 再 “精修”,精度极高(对小目标、遮挡目标的检测更准,比如能区分园区灌木丛后半遮挡的人);
锚框机制:通过预设锚框适配不同尺寸目标,鲁棒性强;
缺点:速度慢(比 YOLO 慢 10-50 倍),因需两次网络计算(RPN+Fast R-CNN)。
三、核心原理对比:为什么 YOLO 快、Faster R-CNN 准?
维度 | YOLO(单阶段) | Faster R-CNN(两阶段) |
检测流程 | 1 次网络计算直接输出结果 | 2 次网络计算(RPN 生成候选 + Fast R-CNN 精修) |
目标筛选方式 | 网格直接预测,依赖 NMS 筛选 | 先通过 RPN 筛选候选区域,再精修 |
对小目标的处理 | 依赖网格划分,小目标易漏检 | 锚框多尺度覆盖,小目标检测更准 |
计算量 | 低(单阶段) | 高(两阶段 + 锚框计算) |
典型场景 | 园区实时监控(需快速报警) | 园区高精度区域(如危化品仓库,不容误报) |
简单说:YOLO 像 “一眼扫过就说出所有目标”,快但可能漏看细节;Faster R-CNN 像 “先圈出可疑区域,再仔细辨认”,慢但看得更准。在园区场景中,周界实时报警选 YOLO,高精度禁区检测选 Faster R-CNN,两者也可结合(如多摄像头分别部署)。