【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.3MB

Validating 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 GFLOPs
                 Class     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.784
               article         18         40      0.949      0.927      0.977      0.934
                  card          9         16      0.916      0.678      0.859      0.782
           icon_delete          1          1      0.798          1      0.995      0.398
           icon_search          3          3      0.776          1      0.995      0.912
             icon_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格式化检测结果,就是我们想要的数据,可以在其他程序中配合使用

参考

<think>好的,我现在需要帮助用户解决关于YOLO格式数据集自动标注的方法或工具的问题。首先,我需要回忆一下YOLO标注的基本知识。YOLO格式的标注通常是每个图像对应一个.txt文件,里面包含类别编号和归一化的边界框坐标,格式为:class x_center y_center width height。 接下来,用户询问的是自动标注的方法或工具。自动标注通常涉及使用预训练的模型来生成初步的标注,然后进行人工校验和修正。常见的工具可能包括商业软件、开源工具或者结合现有模型的方法。 我记得有一些开源工具可以帮助自动标注。比如,CVAT(Computer Vision Annotation Tool)是一个开源的标注工具,支持自动标注插件,可以集成YOLO模型进行预标注。另外,Roboflow可能也提供自动标注的功能,或者至少能简化标注流程,用户上传图片后可以使用预训练模型生成标注。 还有,最近出现的SAM(Segment Anything Model)由Meta推出,可能可以用于自动分割,然后转换成边界框。不过SAM主要生成分割掩码,转换成YOLO格式需要额外处理。可能需要结合其他工具将分割结果转为边界框坐标。 另外,用户提到需要YOLO格式的数据集,可能需要考虑标注后的格式转换问题。比如,如果使用其他格式的标注工具,可能需要转换步骤。但用户希望的是直接生成YOLO格式,所以最好推荐那些原生支持YOLO输出的工具。 商业工具方面,比如Label Studio,它支持自定义模型集成,可以接入YOLOv5或v8的模型进行预标注。用户需要先有一个训练好的模型,然后利用模型推理生成标注结果,再人工修正。这可能是一个常见的工作流程。 此外,还有一些学术项目或GitHub上的开源工具,比如AutoLabel,可能专门针对自动标注设计,但需要验证这些工具是否维护良好,是否有足够的文档支持。 用户可能需要步骤指导,比如如何操作这些工具。例如,使用CVAT的流程大致是:安装CVAT,创建任务,上传图片使用AI模型插件生成标注,然后导出YOLO格式。或者使用YOLOv8的模型进行预测,生成标签文件。 另外,需要考虑数据隐私的问题,如果用户的数据不能上传到云端,可能需要本地部署的工具。CVAT和Label Studio都可以本地部署,而Roboflow可能有云服务选项。 可能还需要提醒用户,自动标注并非完全准确,尤其是对于复杂场景或小目标,可能需要大量的人工修正。同时,初始模型的准确性会影响标注质量,因此可能需要用户先有一个较好的预训练模型,或者在特定领域的数据上微调过的模型。 总结下来,可能的回答结构是:先介绍自动标注的基本思路(预训练模型+人工校验),然后推荐几个工具,包括开源工具如CVAT、Label Studio结合YOLO模型,以及SAM的应用,最后提到一些商业工具如Roboflow,并提供步骤示例和注意事项。</think>### YOLO格式数据集自动标注方法与工具 #### 1. 基于预训练模型的自动标注 通过加载预训练的YOLO模型(如YOLOv5/YOLOv8),对未标注的图像进行推理,直接生成初步的标注文件。例如: ```python from ultralytics import YOLO # 加载预训练模型 model = YOLO("yolov8n.pt") results = model.predict("input_images/") # 保存YOLO格式标签 for result in results: result.save_txt("labels/") # 生成.txt文件 ``` 此方法需要配置Python环境并安装`ultralytics`库,适合熟悉编程的用户[^1]。 #### 2. 集成工具自动标注 **推荐工具:** - **CVAT(开源)**:支持AI插件,可集成YOLO模型实现自动标注 ![CVAT界面示意图](https://example.com/cvat_screenshot.jpg) 操作流程:创建任务 → 加载图像 → 运行AI模型 → 导出YOLO格式 - **Roboflow(云端)**:提供`Autoannotate`功能,支持批量生成标注 特点:可处理10,000张以下免费标注 - **Label Studio + YOLO**:通过自定义接口调用本地模型 #### 3. 半自动标注工具 - **SAM + 交互式标注**:使用Meta的Segment Anything Model生成候选区域,人工选择后自动生成边界框坐标 转换示例代码: ```python # 将SAM掩码转为YOLO格式 def mask_to_yolo(mask, img_size): x_min, y_min = mask[:,0].min(), mask[:,1].min() x_max, y_max = mask[:,0].max(), mask[:,1].max() x_center = ((x_min + x_max)/2)/img_size[1] y_center = ((y_min + y_max)/2)/img_size[0] width = (x_max - x_min)/img_size[1] height = (y_max - y_min)/img_size[0] return f"0 {x_center} {y_center} {width} {height}" ``` #### 关键注意事项 1. **精度验证**:自动标注结果需人工抽样检查,目标检测的mAP误差通常为5-15%[^1] 2. **领域适配**:通用模型在特定场景(如医疗影像)表现下降,建议使用领域数据微调模型 3. **格式规范**:确认生成的坐标值已归一化(0-1范围),避免出现`1.02`等非法值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顽石九变

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值