YOLOv7 与 YOLOv8:实时目标detect的演进
计算机视觉领域的发展轨迹由快速迭代和架构突破所定义。该领域历史上最具里程碑意义的两项成果是 YOLOv7(2022年中发布)和 YOLOv8——Ultralytics 发布。这两款模型在问世时均刷新了技术前沿(SOTA),却在模型设计理念与开发者体验层面呈现出截然不同的哲学取向。
YOLOv7 基于锚点的检测器在"自由袋"方法优化上的巅峰,其核心聚焦于可训练架构策略。反之YOLOv8 以用户为中心的生态系统方法,转向无锚点架构,优先考虑易用性、模型部署能力,并统一支持分割与姿势估计 等多样化任务。
性能对比
下表展示了YOLOv7 YOLOv8 性能指标。YOLOv8 保持或超越前代模型准确率(mAP)的同时,YOLOv8 更优越的效率,尤其体现在参数数量和浮点运算次数(FLOPs)方面。
| 模型 | 尺寸 (像素) | mAPval 50-95 | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv7l | 640 | 51.4 | - | 6.84 | 36.9 | 104.7 |
| YOLOv7x | 640 | 53.1 | - | 11.57 | 71.3 | 189.9 |
| YOLOv8n | 640 | 37.3 | 80.4 | 1.47 | 3.2 | 8.7 |
| YOLOv8s | 640 | 44.9 | 128.4 | 2.66 | 11.2 | 28.6 |
| YOLOv8m | 640 | 50.2 | 234.7 | 5.86 | 25.9 | 78.9 |
| YOLOv8l | 640 | 52.9 | 375.2 | 9.06 | 43.7 | 165.2 |
| YOLOv8x | 640 | 53.9 | 479.1 | 14.37 | 68.2 | 257.8 |
YOLOv7:基于锚点的强大模型
YOLOv7 于2022年7月发布,YOLOv7 突破实时目标检测的速度与精度极限。该模型引入了多项架构创新,致力于优化梯度传播路径。
- 作者: Chien-Yao Wang、Alexey Bochkovskiy 和 Hong-Yuan Mark Liao
- 组织: 台湾中研院资讯所
- 日期: 2022-07-06
- 论文:YOLOv7:可训练的自由物体袋模型创下新纪录
- 仓库:GitHub
主要架构特性
YOLOv7 扩展高效层聚合网络(E-ELAN)。该架构通过控制最短与最长的梯度路径,使模型能够学习更多样化的特征,同时确保网络在不破坏梯度流的情况下有效收敛。
该模型还采用了基于拼接的模型缩放技术,可同时调整卷积层的深度与宽度。尽管效果显著,但这种架构依赖锚框参数,需要为定制数据集计算最优锚框才能实现最佳性能。相较于新型无锚框方法,这为训练过程增添了一层复杂性。
训练复杂性
YOLOv7 需要特定的研究导向型存储库结构,并在训练过程中手动管理辅助目标。用户常需手动调整超参数,才能使"自由组合袋"(MixUp )在较小数据集上正常运行。
YOLOv8:统一生态系统与锚点无关设计
Ultralytics YOLOv8 范式转变,从纯研究工具升级为企业级框架。它简化了从数据标注到部署的整个机器学习生命周期。
- 作者: Glenn Jocher、Ayush Chaurasia 和 Jing Qiu
- 组织:Ultralytics
- 日期: 2023-01-10
- 文档:YOLOv8 文档
架构创新
YOLOv8 先进的无锚框模型。通过消除对预定义锚框的需求YOLOv8 检测头,并提升了对形状或长宽比异常物体的泛化能力。
- C2f模块:取代前代的C3模块,C2f模块(受ELAN启发)融合了高级特性与上下文信息,在保持轻量化的同时提升梯度流。
- 解耦头部: YOLOv8 物体检测、分类和回归任务YOLOv8 为不同分支。这种分离使模型能够更快、更准确地收敛。
- 任务多样性:与主要作为检测模型YOLOv7不同YOLOv8 图像分类、姿势估计 、定向边界框检测(旋转框检测)以及实例分割。
详细对比:开发者为何选择Ultralytics
YOLOv7 性能出色的模型,但YOLOv8 以及更新的YOLO26)Ultralytics 为开发者和研究人员提供了显著优势。
1. 易用性与生态系统
YOLOv7 主要作为研究仓库YOLOv7 。训练该模型通常需要克隆特定的GitHub仓库,按照严格的结构组织文件夹,并运行复杂的CLI 。
相比之下Ultralytics 可作为Python 使用(pip install ultralytics)。 Ultralytics Platform 通过提供用于数据集管理和训练监控的图形化界面,进一步简化了这一过程。这种"零基础到专家"的体验,显著降低了人工智能开发的入门门槛。
2. 训练效率和内存
现代人工智能中最关键的因素之一是资源利用率。Transformer模型通常需要大量CUDA ,且训练过程可能耗时数日。Ultralytics YOLO 经过优化,可显著提升训练效率。
YOLOv8 动态YOLOv8 马赛克增强技术,并在最后几个 epoch 关闭该功能以提升精度。结合优化的数据加载器,该方案使用户能在消费级GPU上运行更大批量处理,相较YOLOv7 transformer替代方案(如RT-DETR)更具优势。
3. 部署与导出
将模型PyTorch 迁移到生产设备,通常是整个流程中最困难的部分。YOLOv8 通过统一的导出模式 YOLOv8 这一过程。
开发者只需一行代码,即可YOLOv8 导出YOLOv8 :
- ONNX 以实现通用的跨平台兼容性。
- TensorRT 在NVIDIA 实现最高推理速度。
- CoreML 用于集成到iOS macOS 应用程序中。
- TFLite 适用于Android 树莓派的移动端和边缘部署。
导出示例
Python YOLOv8 非常顺畅:
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format="onnx", opset=12)
代码示例:统一API
Ultralytics Python 支持您轻松切换模型架构。通过同一接口,您既可加载YOLOv8 ,也可加载YOLOv7 (为兼容旧版而保留支持)。
from ultralytics import YOLO
# Load the latest YOLOv8 Nano model for efficiency
model = YOLO("yolov8n.pt")
# Train the model on the COCO8 dataset
# The API handles dataset downloading and configuration automatically
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)
# Run inference on a sample image
# Returns a list of Results objects containing boxes, masks, or keypoints
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Display the results
results[0].show()
# NOTE: You can also load YOLOv7 weights using the same API
# model_v7 = YOLO("yolov7.pt")
理想用例
何时使用 YOLOv7
- 传统基准测试:若您正在复现2022/2023年间那些专门针对E-ELAN架构进行对比的学术论文。
- 特定高分辨率输入: 字段
yolov7-w6变体模型专为1280像素输入进行优化,尽管Ultralytics 现已支持处理 P6/1280 分辨率 原生支持。
何时使用 YOLOv8
- 边缘计算: 诸如...之类的模型
yolov8n非常适合 在树莓派上运行 或Jetson Nano,因其参数数量少且运行速度快。 - 多任务应用场景:若您的应用需要在追踪人员的同时识别其姿势估计 骨架),YOLOv8 姿势估计 是理想选择。
- 工业自动化:对于延迟至关重要的高吞吐量生产线,可轻松导出至 TensorRT 的YOLOv8 。
- 快速原型制作: Ultralytics 使团队能够快速迭代数据集和模型,无需管理复杂的基础设施。
展望未来:YOLO26的力量
虽然YOLOv7 对比YOLOv7 YOLOv8的优势,但该领域仍在持续发展。对于今日启动新项目的开发者而言,YOLOv26代表着这一进化的巅峰。
YOLO26在YOLOv8 NMS。通过消除非最大抑制(NMS)后处理,YOLO26在复杂场景中实现了更简洁的部署逻辑和更低的延迟。其搭载的MuSGD优化器借鉴了大型语言模型(LLM)训练技术,确保训练过程中获得更稳定的收敛效果。
此外,通过移除分布焦点损失(DFL),YOLO26CPU上提升高达43%,使其成为GPU不可用的边缘AI应用场景中的首选方案。针对特定任务,该模型引入了专属优化方案:例如采用残差对数似然估计(RLE)实现姿势估计 专属角度损失函数用于 旋转框检测。
若需最前瞻、高效且精准的解决方案,我们建议您了解YOLO26。