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

【Ai】使用Ultralytics yolo做图片检测+使用roboflow做数据标注

本文介绍如何使用Ultralytics yolo做图片检测,如何使用roboflow做数据标注,并导出yolo格式数据集,并训练本地模型,使用训练好的模型做图片检测,并输入程序需要的结果数据。

一、什么是Ultralytics yolo

Ultralytics YOLO 是广受赞誉的 YOLO(You Only Look Once)系列目标检测模型的最新进展,由 Ultralytics 公司开发和维护。YOLO 是一种实时目标检测算法,其核心思想是将目标检测视为一个回归问题,通过单次前向传播即可同时预测图像中物体的位置和类别,具有高效性和高准确性的特点。
在这里插入图片描述

Ultralytics YOLO 的主要特点

  1. 实时性能:YOLO 系列以其高速检测能力著称,适用于需要实时处理的应用,如视频监控、自动驾驶等。
  2. 多任务支持:Ultralytics YOLO 不仅支持目标检测,还支持图像分割、姿态估计、目标跟踪和分类等多种视觉 AI 任务。
  3. 版本演进
  • YOLOv5:由 Ultralytics 开发,提供多种模型规模(如 YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x),以适应不同硬件需求。
  • YOLOv8:进一步提升了性能、灵活性和效率,支持全方位的视觉 AI 任务。
  • YOLOv9 & YOLOv10:引入了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)等创新方法。
  • YOLOv11:Ultralytics 的最新版本,在检测、分割、姿态估计、跟踪和分类等任务中提供最先进的(SOTA)性能。
    易用性:Ultralytics 提供了详细的文档、预训练模型和训练脚本,支持 PyTorch 等深度学习框架,便于开发者快速部署。

应用场景

  • 安防监控:实时检测异常行为或特定目标。

  • 自动驾驶:检测行人、车辆和交通标志。

  • 工业检测:产品质量检测,如电子元件焊接缺陷识别。

  • 医疗影像:辅助诊断和分析。

二、快速入门

1、使用pip安装依赖包

安装或更新 ultralytics 运行 pip install -U ultralytics

# Install the ultralytics package from PyPI
pip install ultralytics

您还可以安装 ultralytics 直接从 Ultralytics GitHub 存储库.如果您需要最新的开发版本,这将非常有用。确保已安装 Git 命令行工具,然后运行

# Install the ultralytics package from GitHub
pip install git+https://github.com/ultralytics/ultralytics.git@main

2、模型训练及使用

from ultralytics import YOLO# Create a new YOLO model from scratch
model = YOLO("yolo11n.yaml")# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolo11n.pt")# Train the model using the 'coco8.yaml' dataset for 3 epochs
results = model.train(data="coco8.yaml", epochs=3)# Evaluate the model's performance on the validation set
results = model.val()# Perform object detection on an image using the model
results = model("https://ultralytics.com/images/bus.jpg")# Export the model to ONNX format
success = model.export(format="onnx")

三、使用roboflow做数据标注

Roboflow 是一个专为计算机视觉开发者设计的平台,旨在简化从数据标注到模型训练和部署的全流程。它提供了一系列工具和服务,帮助用户高效地创建、管理和增强图像数据集,并支持多种主流深度学习框架(如 YOLO、TensorFlow 等)。

1、创建数据标注项目

打开 roboflow官网 注册账号并登录。

输入项目名称后,点击创建项目
在这里插入图片描述

2、上传需要标注的图片

在这里插入图片描述

3、点击 Annotate 对图片进行标注

4、点击 Version 创建新的版本

可以在 preprocessing 中设置预处理步骤
在这里插入图片描述

5、下载指定格式的数据集

点击 “Download Dataset”,下载指定格式的数据集,这里选择的是“YOLOv8”,下载下来是一个zip压缩包,在yolo的Python项目中解压就可以直接用来训练模型了
在这里插入图片描述

解压zip压缩包,得到大致如下结构的文件,包含“test、train、valid”三个数据集。

训练时,只要使用目录中的data.yaml文件就可以

在这里插入图片描述

6、使用yolo训练模型

from ultralytics import YOLO# 加载基础模型
model = YOLO('yolov8n.pt')  # 训练模型
results = model.train(data='C:\\workspace\\py\\yolo_demo\\datasets\\Weixin.v7i.yolov8\data.yaml',  # 数据集配置文件epochs=100,                        # 训练轮次batch=16,                          # 批次大小name='custom_model'                # 实验名称
)

执行完成后,大致输出如下日志:

100 epochs completed in 0.994 hours.
Optimizer stripped from runs\detect\custom_model\weights\last.pt, 6.3MB
Optimizer stripped from runs\detect\custom_model\weights\best.pt, 6.3MBValidating runs\detect\custom_model\weights\best.pt...
Ultralytics 8.3.99 🚀 Python-3.10.1 torch-2.6.0+cpu CPU (11th Gen Intel Core(TM) i7-11800H 2.30GHz)
Model summary (fused): 72 layers, 3,006,623 parameters, 0 gradients, 8.1 GFLOPsClass     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:02<00:00,  2.79s/it]all         25         61      0.879      0.921      0.964      0.784article         18         40      0.949      0.927      0.977      0.934card          9         16      0.916      0.678      0.859      0.782icon_delete          1          1      0.798          1      0.995      0.398icon_search          3          3      0.776          1      0.995      0.912icon_soso          1          1      0.958          1      0.995      0.895
Speed: 5.4ms preprocess, 93.0ms inference, 0.0ms loss, 5.5ms postprocess per image
Results saved to runs\detect\custom_model

训练完成后,在目录 runs/detect/custom_model/weights/best.pt 中生成训练好的模型文件

7、使用训练好的模型探测图片

from ultralytics import YOLO# 加载训练好的模型
model = YOLO('runs/detect/custom_model/weights/best.pt')  # 使用最佳权重
# 或使用最后一次训练的权重
# model = YOLO('runs/detect/custom_model/weights/last.pt')# 进行推理
results = model(['imgs/01.jpg', 'imgs/02.jpg', 'imgs/03.jpg'])# Process results list
idx = 1
for result in results:boxes = result.boxes  # 包含检测边界框的方框对象masks = result.masks  # 包含检测掩码的掩码对象keypoints = result.keypoints  # 关键点对象,包含每个对象的检测关键点probs = result.probs  # Probs 对象,包含分类任务中每个类别的概率obb = result.obb  # 包含定向包围盒的 OBB 对象print("-" * 20)print(result.to_json())result.show()  # 显示带有推理结果注释的图像filname = f"result/result{idx}.jpg"result.save(filename=filname)  # 将注释的推理结果图像保存到文件并返回文件名idx = idx + 1

输出的检测结果json文件,大致如下:

[{"name": "article","class": 0,"confidence": 0.96316,"box": {"x1": 0.0,"y1": 571.20105,"x2": 1080.0,"y2": 936.76697}},{"name": "article","class": 0,"confidence": 0.93476,"box": {"x1": 0.0,"y1": 939.69043,"x2": 1080.0,"y2": 1365.90405}}
]
  • name:标注的标签名称
  • confidence:相识度
  • box:方框的左上角和右下角的坐标点

这里的json格式化检测结果,就是我们想要的数据,可以在其他程序中配合使用

参考

  • Ultralytics YOLO 官网
  • Roboflow官网
http://www.xdnf.cn/news/9068.html

相关文章:

  • 机器学习与深度学习5:pytorch前馈神经网络FNN实现手写数字识别
  • Halcon仿射变换---个人笔记
  • PySide6 GUI 学习笔记——常用类及控件使用方法(光标类图标QCursor)
  • 918. 环形子数组的最大和
  • 消费电子卷入“技术军备竞赛”
  • shell脚本基础
  • 记忆上传与自我同一性的哲学-技术综合分析
  • AI日报 - 2025年05月26日
  • 快速了解GO之Channel 通道
  • uv ——新的python包管理工具
  • 如何在 ONLYOFFICE 演示文稿中调整段落首行缩进
  • 第10章 网络与信息安全基础知识
  • 【分治】数组中的逆序对
  • 格恩朗管段超声波流量计:流量测量先锋
  • SD-WAN与传统网络结合:轨道交通网络优化的高效实践与深度解析
  • Day37打卡 @浙大疏锦行
  • 数据库入门:以商品订单系统为例
  • Nuxt.js vs Next.js:Vue 与 React 阵营的 SSR 双雄对比
  • python25-递归算法
  • 人工智能第一币AISPF,首发BitMart交易所
  • P5734 【深基6.例6】文字处理软件
  • Netty学习专栏(六):深度解析Netty核心参数——从参数配置到生产级优化
  • Lines of Thought in Large Language Models
  • (10)-java+ selenium->元素之By class name
  • window 显示驱动开发-Direct3D 呈现性能改进(一)
  • P1068 [NOIP 2009 普及组] 分数线划定
  • 机试 | STL | string | 文字处理软件
  • linux 进程间通信_共享内存
  • Python打卡第37天
  • 数据结构基础知识补充