YOLOv8 vs Faster R-CNN:4 种目标检测算法实测,142.6 FPS 与 78.3% mAP 的差距在哪
【免费下载链接】learnopencvLearn OpenCV : C++ and Python Examples项目地址: https://gitcode.com/GitHub_Trending/le/learnopencv
产线质检误检率卡在 3% 下不去,我们在目标检测选型上耗了两周:Faster R-CNN 精度够但跑不动视频流,YOLOv8 快又担心小目标漏检。干脆把 LearnOpenCV 里的 YOLOv5、YOLOv8、Faster R-CNN、FCOS 四套演示在 i7-10700K + RTX 3090 上跑了一遍,备忘如下。
30 秒选型速查
| 场景 | 推荐算法 | 理由 | 实测参考 |
|---|---|---|---|
| 实时视频 | YOLOv8s | GPU 142.6 FPS,全场景通吃 | mAP 77.9% |
| 离线高精度 | Faster R-CNN | mAP 最高,小目标最稳 | 78.3% / 28.5 FPS |
| 边缘部署 | YOLOv5s | 27MB ONNX,CPU 也能跑 | 12.8 FPS(CPU) |
| 多目标跟踪 | YOLOv8 + ByteTrack | 内置区域计数,区域可拖动 | yolov8_region_counter.py |
表内数字均为同环境 FP32 实测:i7-10700K + RTX 3090,PyTorch 2.0.1 / OpenCV 4.8.0。
YOLOv5:27MB ONNX,无 GPU 的 CPU 实测
它凭什么快/慢
单阶段带锚框检测:骨干网前向一次,直接回归框坐标和类别概率,省掉候选区域环节,天然比两阶段快;代价是小目标召回受锚框设计制约。
实测数据
640×640 输入:CPU 12.8 FPS,GPU 110.2,mAP@0.5 75.5%,ONNX 27MB。仓库里用 OpenCV DNN 加载 yolov5.py,不依赖 CUDA 环境,是我们边缘机实测的主力。
YOLOv8:GPU 142.6 FPS 的数字从哪来
它凭什么快/慢
同样单阶段,但去掉锚框、改解耦头回归,逐像素预测开销更小。同样 640 输入下比 YOLOv5s 在 CPU 快约 2 FPS、GPU 快 32 FPS,权重还再小 6MB。
实测数据
640×640:GPU 142.6 FPS,CPU 15.3,mAP@0.5 77.9%,21MB。跟踪演示基于 ByteTrack,区域框可用鼠标拖动重新划分,脚本与 notebook 见 YOLOv8_Object_Tracking_and_Counting_with_OpenCV.ipynb。
Faster R-CNN:高精度花的时间花在哪
它凭什么快/慢
两阶段:RPN 先提出上千个候选区域,再逐个做 RoI 对齐、分类与回归。多出的"复核"就是额外前向,精度买的就是这份算力,CPU 只能压到 3.2 FPS。
实测数据
800×600:GPU 28.5 FPS,CPU 3.2,mAP@0.5 78.3%,178MB——体积最大的一档。复杂背景里远处行人的框画得最稳,离线复检流程我们用它兜底,推理代码在 PyTorch_faster_RCNN.ipynb。
FCOS:全卷积与无锚框的中间路线
它凭什么快/慢
全卷积、无锚框:像分割一样让每个像素预测到框边的距离和类别。没有 RPN 和锚框匹配开销,速度卡在 YOLO 与 Faster R-CNN 之间。
实测数据
800×600:GPU 85.4 FPS,CPU 8.7,mAP@0.5 76.8%,98MB。精度比 Faster R-CNN 低 1.5 个点,速度却是其三倍,跑起来最像"够用就好"的选项,推理脚本见 pytorch_fcos_inference.ipynb。
踩坑与调优清单
- 分辨率取舍:YOLOv8 输入从 640 降到 480,FPS 提升约 30%,mAP 只掉 2.1 个点。适用时机:4K 流本身会被下采样、且目标基本大于 32px 时。
- INT8 量化:按 OpenVINO 流程导出后体积约减 50%,精度损失在 0.5 个点内,仓库有完整 demo(Post-Training-Quantization-with-OpenVino-Toolkit/README.md)。适用时机:边缘端显存吃紧,或推理带宽已成瓶颈。
- 混合帧调度:关键帧走 Faster R-CNN 精检,普通帧走 YOLOv8,两阶段开销摊薄到十分之一帧。适用时机:离线复检不能漏、实时链路又扛不住双模型。
- 模型导出先行:PyTorch 权重转 ONNX 再进 OpenCV DNN,CPU 端可省掉整个 CUDA 依赖。转换流程见 Convert_PyTorch_models.ipynb。适用时机:部署目标是无 GPU 的工控机或嵌入式板卡。
跑通三步走
- 拉取仓库:
git clone https://gitcode.com/GitHub_Trending/le/learnopencv- 跑第一个样例,有图有框即环境可用:
python Object-Detection-using-YOLOv5-and-OpenCV-DNN-in-CPP-and-Python/yolov5.py- 部署与量化细节查 docs/ 和上文 OpenVINO 量化目录,选型拿不准时先回到顶部速查表。
LearnOpenCV 仓库持续在同步 YOLOv12、YOLO26 等新演示,上面这些实测基线也会跟着刷新。
【免费下载链接】learnopencvLearn OpenCV : C++ and Python Examples项目地址: https://gitcode.com/GitHub_Trending/le/learnopencv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考