当前位置: 首页 > ds >正文

YOLO玩转目标检测(v5和v11两个版本)

文章目录

  • 一、YOLO 简史
  • 二、YOLOv5 快速入门
    • 1.安装
    • 2.使用 PyTorch Hub 进行推理
      • 2.1 模型大小
      • 2.2 适用场景
      • 2.3 实战
    • 3.使用 detect.py 进行推理
      • 3.1 实战
    • 4.训练
      • 4.1 coco数据集
        • 4.1.1 完整版
        • 4.1.2 测试版
      • 4.2实战
    • 5.在自定义数据上训练 YOLOv5
    • 6.标注
    • 7.TFLite、ONNX、CoreML、TensorRT 导出
      • 7.1 导出到 ONNX
      • 7.2 导出到 TensorRT
  • 三、YOLOv11 快速入门
    • 1.目标检测
    • 2.实例分割
    • 3.图像分类
    • 4.姿势估计
    • 5.定向边界框
    • 6.多目标跟踪
      • 实战
  • 四、参考

一、YOLO 简史

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的 Joseph Redmon 和 Ali Farhadi 开发。YOLO 于 2015 年推出,因其高速和高精度而广受欢迎。

  • YOLOv2于2016年发布,通过引入批量归一化、锚框和维度聚类,改进了原始模型。
  • 2018年推出的YOLOv3,通过使用更高效的主干网络、多个锚点和空间金字塔池化,进一步提高了模型的性能。
  • YOLOv4于 2020 年发布,引入了诸如 Mosaic 数据增强、一种新的无锚框检测头以及一种新的 损失函数等创新。
  • YOLOv5 进一步提高了模型的性能,并添加了新功能,例如超参数优化、集成实验跟踪和自动导出为流行的导出格式。
  • YOLOv6 于 2022 年由 美团 开源,并已应用于该公司的许多自动送货机器人中。
  • YOLOv7增加了额外的任务,如对 COCO 关键点数据集进行姿势估计 。
  • Ultralytics 于 2023 年发布的 YOLOv8 引入了新功能和改进,以增强性能、灵活性和效率,并支持全方位的视觉 AI 任务。
  • YOLOv9 引入了创新方法,如可编程梯度信息 (PGI) 和通用高效层聚合网络 (GELAN)。
  • YOLOv10 由清华大学的研究人员使用 Ultralytics Python 包 创建,通过引入消除非最大值抑制 (NMS) 要求的端到端头,提供了实时物体检测方面的进展。
  • YOLO11 🚀功能:Ultralytics 最新的YOLO 模型可在多项任务中提供最先进的 (SOTA) 性能,包括物体检测、分割、姿势估计 、跟踪和分类,充分利用了各种人工智能应用和领域的能力。

来源:https://docs.ultralytics.com/zh/#yolo-a-brief-history

二、YOLOv5 快速入门

https://github.com/ultralytics/yolov5
https://docs.ultralytics.com/zh/yolov5/quickstart_tutorial/

1.安装

克隆 YOLOv5 仓库 并建立环境,为启动做好准备。这确保安装所有必需的 requirements。检查您是否已准备好 Python>=3.8.0PyTorch>=1.8 以便启动。这些基础工具对于有效运行 YOLOv5 至关重要。

# Clone the YOLOv5 repository
git clone https://github.com/ultralytics/yolov5# Navigate to the cloned directory
cd yolov5# Install required packages
pip install -r requirements.txt

2.使用 PyTorch Hub 进行推理

体验 YOLOv5 PyTorch Hub 推理的简易性,模型 可以从最新的 YOLOv5 版本 中无缝下载。此方法利用 PyTorch 的强大功能,简化了模型加载和执行过程,从而轻松获得预测结果。

2.1 模型大小

从https://github.com/ultralytics/yolov5/releases下载模型放到项目根目录
在这里插入图片描述

模型参数量(M)计算量(GFLOPs)推理速度(FPS,GPU)检测精度(COCO mAP)适用场景
yolov5n1.94.5约 40028.0移动端、嵌入式设备(资源受限)
yolov5s7.216.5约 30037.4普通 GPU、实时性要求高的场景
yolov5m21.249.0约 20045.4平衡精度与速度的场景
yolov5l46.5109.1约 10049.0精度优先,对速度要求较低
yolov5x86.7205.7约 5050.7高性能 GPU,追求最高精度

2.2 适用场景

  • yolov5n/s:资源有限(移动端、嵌入式)或实时性优先(如无人机避障、实时直播弹幕检测)。
  • yolov5m:通用场景(如普通监控、工业质检),平衡速度与精度。
  • yolov5l/x:高性能设备(如服务器 GPU),追求最高精度(如医学影像检测、精密零件识别)。

2.3 实战

import torch  # Load a YOLOv5 model (options: yolov5n, yolov5s, yolov5m, yolov5l, yolov5x)  
model = torch.hub.load("ultralytics/yolov5", "yolov5x")  # Default: yolov5s  # Define the input image source (URL, local file, PIL image, OpenCV frame, numpy array, or list)  
img = "https://ultralytics.com/images/zidane.jpg"  # Example image  # Perform inference (handles batching, resizing, normalization automatically)  
results = model(img)  # Process the results (options: .print(), .show(), .save(), .crop(), .pandas())  
results.print()  # Print results to console  
results.show()  # Display results in a window  
results.save()  # Save results to runs/detect/exp
originresult
在这里插入图片描述在这里插入图片描述

3.使用 detect.py 进行推理

Harness detect.py 用于多功能 推理 来自各种来源。它会自动获取 模型 来自最新的 YOLOv5 发布 并轻松保存结果。此脚本非常适合命令行使用,并将 YOLOv5 集成到更大的系统中,支持图像、视频、目录、网络摄像头,甚至 实时流.

# Run inference using a webcam
python detect.py --weights yolov5s.pt --source 0# Run inference on a local image file
python detect.py --weights yolov5s.pt --source img.jpg# Run inference on a local video file
python detect.py --weights yolov5s.pt --source vid.mp4# Run inference on a screen capture
python detect.py --weights yolov5s.pt --source screen# Run inference on a directory of images
python detect.py --weights yolov5s.pt --source path/to/images/# Run inference on a text file listing image paths
python detect.py --weights yolov5s.pt --source list.txt# Run inference on a text file listing stream URLs
python detect.py --weights yolov5s.pt --source list.streams# Run inference using a glob pattern for images
python detect.py --weights yolov5s.pt --source 'path/to/*.jpg'# Run inference on a YouTube video URL
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'# Run inference on an RTSP, RTMP, or HTTP stream
python detect.py --weights yolov5s.pt --source 'rtsp://example.com/media.mp4'

3.1 实战

python detect.py --weights yolov5x.pt --source 'https://ultralytics.com/images/zidane.jpg'
originresult
在这里插入图片描述在这里插入图片描述

4.训练

复现 YOLOv5 COCO 数据集 通过遵循以下步骤进行基准测试 训练说明 如下。必要的 模型 和 数据集 (例如 coco128.yaml 或完整版 coco.yaml)直接从最新的 YOLOv5 中提取 发布。在V100上训练YOLOv5n/s/m/l/x GPU 通常分别需要 1/2/4/6/8 天(请注意 多 GPU 训练 设置工作更快)。通过使用尽可能高的值来最大化性能 --batch-size 或使用 --batch-size -1 用于 YOLOv5 自动批处理 功能,可自动找到最佳 批次大小。以下的批处理大小是V100-16GB GPU的理想选择。请参考我们的 配置指南 有关模型配置文件的详细信息(*.yaml)。

# Train YOLOv5n on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128# Train YOLOv5s on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64# Train YOLOv5m on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40# Train YOLOv5l on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24# Train YOLOv5x on COCO for 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5x.yaml --batch-size 16

4.1 coco数据集

https://cocodataset.org/#download

4.1.1 完整版

2017 Train images [118K/18GB]
2017 Val images [5K/1GB]
2017 Test images [41K/6GB]

4.1.2 测试版

https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip

4.2实战

python train.py --data coco128.yaml --epochs 3 --weights '' --cfg yolov5n.yaml --batch-size 128

5.在自定义数据上训练 YOLOv5

https://docs.ultralytics.com/zh/yolov5/tutorials/train_custom_data/

6.标注

安装标注软件

pip install labelimg

打开标注软件

labelImg

7.TFLite、ONNX、CoreML、TensorRT 导出

https://docs.ultralytics.com/zh/yolov5/tutorials/model_export/

  • 导出到 ONNX 或 OpenVINO,CPU 速度提高高达 3 倍。请参阅CPU 基准测试。
  • 导出到 TensorRT,GPU 速度提高高达 5 倍。请参阅GPU 基准测试。
格式export.py --include模型
PyTorch-yolov5s.pt
TorchScripttorchscriptyolov5s.torchscript
ONNXonnxyolov5s.onnx
OpenVINOopenvinoyolov5s_openvino_model/
TensorRTengineyolov5s.engine
CoreMLcoremlyolov5s.mlmodel
TensorFlow SavedModelsaved_modelyolov5s_saved_model/
TensorFlow GraphDefpbyolov5s.pb
TensorFlow Litetfliteyolov5s.tflite
TensorFlow Edge TPUedgetpuyolov5s_edgetpu.tflite
TensorFlow.jstfjsyolov5s_web_model/
PaddlePaddlepaddleyolov5s_paddle_model/

7.1 导出到 ONNX

python export.py --weights runs/train/exp2/weights/best.pt --include onnx

7.2 导出到 TensorRT

#  pip install nvidia-tensorrt
python export.py --weights runs/train/exp2/weights/best.pt --include engine --device 0

三、YOLOv11 快速入门

https://docs.ultralytics.com/zh/quickstart/

# Clone the ultralytics repository
git clone https://github.com/ultralytics/ultralytics# Navigate to the cloned directory
cd ultralytics# Install the package in editable mode for development
pip install -e .

1.目标检测

目标检测是一项涉及识别图像或视频流中目标的位置和类别的任务。

目标检测器的输出是一组边界框,这些边界框包围了图像中的目标,以及每个框的类别标签和置信度分数。当您需要在场景中识别感兴趣的目标,但不需要确切知道目标在哪里或其确切形状时,目标检测是一个不错的选择。
来源:https://docs.ultralytics.com/zh/tasks/detect/

模型下载:https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt

yolo detect predict model=yolo11n.pt source='https://ultralytics.com/images/bus.jpg' # predict with official model
originresult
在这里插入图片描述在这里插入图片描述

2.实例分割

实例分割比对象检测更进一步,包括识别图像中的各个对象并将它们与图像的其余部分分割开来。

实例分割模型的输出是一组掩码或轮廓,它们勾勒出图像中每个对象,以及每个对象的类别标签和置信度分数。 当您不仅需要知道对象在图像中的位置,还需要知道它们的精确形状时,实例分割非常有用。
来源:https://docs.ultralytics.com/zh/tasks/segment/

yolo segment predict model=yolo11n-seg.pt source='https://ultralytics.com/images/bus.jpg'
originresult
在这里插入图片描述在这里插入图片描述

3.图像分类

图像分类是三个任务中最简单的,它涉及将整个图像分类到一组预定义的类别中。

图像分类器的输出是单个类别标签和一个置信度分数。当您只需要知道图像属于哪个类别,而不需要知道该类别的对象位于何处或其确切形状时,图像分类非常有用。
来源:https://docs.ultralytics.com/zh/tasks/classify/

yolo classify predict model=yolo11n-cls.pt source='https://ultralytics.com/images/bus.jpg'
originresult
在这里插入图片描述在这里插入图片描述

4.姿势估计

姿势估计是一项涉及识别图像中特定点(通常称为关键点)位置的任务。关键点可以代表物体的各个部分,如关节、地标或其他显著特征。关键点的位置通常用一组二维 [x, y] 或 3D [x, y, visible] 坐标。

姿势估计 模型的输出是一组代表图像中物体上关键点的点,通常还有每个点的置信度分数。当您需要识别场景中物体的特定部分及其相互之间的位置关系时,姿势估计是一个不错的选择。
来源:https://docs.ultralytics.com/zh/tasks/pose/

yolo pose predict model=yolo11n-pose.pt source='https://ultralytics.com/images/bus.jpg'
originresult
在这里插入图片描述在这里插入图片描述

5.定向边界框

定向对象检测通过引入一个额外的角度来更准确地定位图像中的对象,从而比标准对象检测更进一步。

定向目标检测器的输出是一组旋转的边界框,这些边界框精确地包围了图像中的目标,以及每个框的类别标签和置信度分数。当目标以各种角度出现时,定向边界框特别有用,例如在航空图像中,传统的轴对齐边界框可能包含不必要的背景。
来源:https://docs.ultralytics.com/zh/tasks/obb/

yolo obb predict model=yolo11n-obb.pt source='https://ultralytics.com/images/boats.jpg'
originresult
在这里插入图片描述在这里插入图片描述

6.多目标跟踪

视频分析领域中的目标跟踪是一项关键任务,它不仅能识别帧内目标的位置和类别,还能在视频播放过程中为每个检测到的目标维护一个唯一的 ID。其应用范围非常广泛,从监控和安全到实时体育分析,无所不及。
来源:https://docs.ultralytics.com/zh/modes/track/

# Perform tracking with various models using the command line interface
yolo track model=yolo11n.pt source="https://youtu.be/LNwODJXcvt4"      # Official Detect model
yolo track model=yolo11n-seg.pt source="https://youtu.be/LNwODJXcvt4"  # Official Segment model
yolo track model=yolo11n-pose.pt source="https://youtu.be/LNwODJXcvt4" # Official Pose model
yolo track model=path/to/best.pt source="https://youtu.be/LNwODJXcvt4" # Custom trained model# Track using ByteTrack tracker
yolo track model=path/to/best.pt tracker="bytetrack.yaml"

实战

yolo track model=yolo11n.pt source="/media/d/backup/yolo.mkv"   

四、参考

YOLO5识别象棋

http://www.xdnf.cn/news/17903.html

相关文章:

  • 破解测试数据困境:5招兼顾安全与真实性
  • OpenBMC 中命令模式的深度解析:从原理到实现
  • CV 医学影像分类、分割、目标检测,之【腹腔多器官语义分割】项目拆解
  • 大厂语音合成成本深度对比:微软 / 阿里 / 腾讯 / 火山 API 计费拆解与技术选型指南
  • Java设计模式-责任链模式
  • 【力扣】面试经典150题总结02-双指针、滑动窗口
  • 如何在 Spring Boot 中设计和返回树形结构的组织和部门信息
  • 在线 A2C实践
  • Transformer模型实现与测试梳理
  • 深入详解C语言的循环结构:while循环、do-while循环、for循环,结合实例,讲透C语言的循环结构
  • 免费专业PDF文档扫描效果生成器
  • 海洋通信系统技术文档(1)
  • uniapp授权登录
  • 比特币持有者结构性转变 XBIT分析BTC最新价格行情市场重构
  • 【计算机网络 | 第6篇】计算机体系结构与参考模型
  • TDengine IDMP 基本功能(4. 实时分析)
  • [QtADS]解析demo.pro
  • 【论文阅读笔记】Context-Aware Hierarchical Merging for Long Document Summarization
  • 【R语言】R语言的工作空间映像(workspace image,通常是.RData)详解
  • 《卷积神经网络(CNN):解锁视觉与多模态任务的深度学习核心》
  • 【完整源码+数据集+部署教程】火柴实例分割系统源码和数据集:改进yolo11-rmt
  • 【类与对象(下)】探秘C++构造函数初始化列表
  • 响应式对象的类型及其使用场景
  • WMware的安装以及Ubuntu22的安装
  • 11.用反射为静态类的属性赋值 C#例子 WPF例子
  • 第六十五章:AI的“精良食材”:图像标注、视频帧抽帧与字幕提取技巧
  • 数据挖掘常用公开数据集
  • 【KO】Android 网络相关面试题
  • Redis 核心数据结构与常用命令详解
  • Qwen-Image(阿里通义千问)技术浅析(二)