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

YOLO_V8分割

YOLO_V8分割

YOLO安装

pip install ultralytics

YOLO的数据集转化看csdn

数据标注EIseg

  1. EIseg这块,正常安装就好,但是numpy和各类包都容易有冲突,python版本装第一点

  2. 数据标注过程中,记得把JSON和COCO都点上,把自动保存点上,如果标注后需要修改,记得手动点右下角保存,否则“空格”没有存上。

  3. 预训练模型在/home/gsh/Projects/Yanbao/dataset/static_hrnet18_ocr64_cocolvis.zip

格式转化

labelme转COCO

  1. paddle标注得到的是labelme格式文件,首先由于是多人标注,其中label和imagePath是不一样的,所以需要统一,该格式采用read_json_save_all.py脚本修改。在/home/gsh/Projects/Yanbao/dataset/data_for_train_2/read_json_save_all.py该脚本生成的是每个图片对应的labelme.json文件。需要输入所有标注的labelme文件夹路径,输出保存路径,和图片路径。

  2. labelme转COCO采用的是官方脚本:labelme-json2labelme-coco.py~/Projects/PaddleSeg/EISeg/tool

python labelme-json2labelme-coco.py [path to json dir] [path to 输出/output] --labels [path to labels.txt]
# 注意,上述的json dir要用统一后的json文件
# 例如:
python /home/gsh/Projects/PaddleSeg/EISeg/tool/labelme-json2labelme-coco.py /home/gsh/Projects/Yanbao/dataset/data_for_train_2/all_data1/tongyi_data /home/gsh/Projects/Yanbao/dataset/output --labels /home/gsh/Projects/Yanbao/dataset/data_for_train_2/all_data1/together/label/labelme/labels.txt

结果如下:

├── annotations.json
├── JPEGImages
└── Visualization

COCO转YOLOV8

  1. 将上面生成的annotations.json进行处理,将JPEGImages替换为.,建议方法是VSCode打开后进行全局查找替换。
    在这里插入图片描述
  2. JSON2YOLO库中
    general_json2yolo.py~/Projects/JSON2YOLO
    修改一下这里的路径,注意,这里要将上面的annotations.json放到一个文件夹中,然后将文件夹路径输入
    cls91to80也改成false
    在这里插入图片描述
    把这里的-1去掉,这样类编号就从0开始了
    在这里插入图片描述

默认生成的路径是执行代码的路径下,生成new_dir文件夹

也可以改路径,在代码的第258行

生成的是这样的
├── images
└── labels
└── annotations

调整为这样
├── images
│ ├── train
│ └── val
└── labels
├── train
└── val

至此数据处理全部结束

YOLO-seg的训练

  1. 代码在/home/gsh/Projects/YOLOV8/segtrain.py,其中model = YOLO("/home/gsh/Downloads/yolov8l-seg.pt")这里面的名字写的谁,要么读取本地的,要么直接从网上下,写什么下什么

  2. 记得修改yaml中的文件夹路径和类别,代码在/home/gsh/Projects/ultralytics/ultralytics/cfg/datasets/coco8-seg.yaml

  3. train的选择参数很多,参考这里

    results = model.train(data="/home/gsh/Projects/ultralytics/ultralytics/cfg/datasets/coco8-seg.yaml", epochs=1000,imgsz=640, batch=-1)
    

    整体例子:

    # Load a model
    # model = YOLO("yolov8l-seg.yaml")  # build a new model from YAML
    model = YOLO("/home/gsh/Downloads/yolov8s-seg.pt")  # load a pretrained model (recommended for training)
    # model = YOLO("/home/gsh/Downloads/yolov8l-seg.pt")  # load a pretrained model (recommended for training)
    # model = YOLO("yolov8l-seg.yaml").load("/home/gsh/Downloads/yolov8l-seg.pt")  # build from YAML and transfer weights
    # model = YOLO("yolov8l-seg.yaml").load("/home/gsh/Downloads/yolov8l-seg.pt")  # build from YAML and transfer weights
    # Train the model
    results = model.train(data="/home/gsh/Projects/ultralytics/ultralytics/cfg/datasets/coco8-seg.yaml", epochs=900,imgsz=640 ,batch=32)
    

YOLO-seg的预测

predict

from ultralytics import YOLO# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")# Run inference on an image
results = model("bus.jpg")  # results list# View results
for r in results:print(r.boxes)  # print the Boxes object containing the detection bounding boxes

YOLO-Seg部署模型转化

onnx的部署

X64平台

模型转化代码

from ultralytics import YOLOmodel=YOLO("/home/gsh/Projects/YOLOV8/runs/segment/train8/weights/best.pt")
model.export(format="onnx", device=0, int8=True)

报错

Loading /home/gsh/Projects/YOLOV8/runs/segment/train8/weights/best.onnx for ONNX Runtime inference…
[1;31m2024-08-26 09:30:46.347354781 [E:onnxruntime:Default, provider_bridge_ort.cc:1992 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1637 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcudnn.so.9: cannot open shared object file: No such file or directory
[m
[0;93m2024-08-26 09:30:46.347381605 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:965 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements), make sure they’re in the PATH, and that your GPU is supported.[m

推理

直接替换掉模型路径即可

Jetson AGX

改名字

best.pt改成best-seg.pt(我也不知道为什么要加seg)据说是它模型转化要认这是个什么任务

模型转化代码

from ultralytics import YOLOmodel=YOLO("/home/gsh/Projects/YOLOV8/runs/segment/train8/weights/best.pt")
model.export(format="onnx", imgsz=(480,640), device=0, int8=True, simplify=True, task = "segment")

Tensort的部署

官网介绍

模型转化代码

from ultralytics import YOLOmodel = YOLO("yolov8n.pt")
model.export(format="engine",dynamic=True,  batch=1,  workspace=10,  int8=True,data="coco.yaml",  # 这个yaml文件要用自己训练的yaml文件
)# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")

推理

直接替换掉模型路径即可

http://www.lryc.cn/news/458509.html

相关文章:

  • 根据请求错误的状态码判断代理配置问题
  • Python 网络爬虫高阶用法
  • 芯片Tapeout前GDS Review | Calibre中如何切出gds中指定区域版图?
  • 43 | 单例模式(下):如何设计实现一个集群环境下的分布式单例模式?
  • PHP如何解决异常处理
  • C++ socket编程(3)
  • Collection-LinkedList源码解析
  • vue判断对象数组里是否有重复数据
  • CSS 3D转换
  • 51单片机数码管循环显示0~f
  • 【编程进阶知识】Java NIO:掌握高效的I/O多路复用技术
  • vscode创建flutter项目,运行flutter项目
  • STM32之CAN外设
  • 【阅读笔记】水果轻微损伤的无损检测技术应用
  • 忘记7-zip密码,如何解压文件?
  • SpringBoot基础(一)
  • Java智能匹配灵活用工高效人力资源管理系统小程序源码
  • openpdf
  • C#垃圾回收机制详解
  • 身份证二要素核验操作指南
  • 量子数字签名概述
  • 算法题——合并 k 个升序的链表
  • 智能制造与精益制造的模型搭建
  • 快速生成生产级Go应用的利器——Cgapp
  • MySQL基本语法、高级语法知识总结以及常用语法案例
  • 单片机(学习)2024.10.11
  • Java创建型模式(二)——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式、工厂模式扩展等完整详解,附有代码——案例)
  • C++学习,容器类 <set>
  • Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览
  • Python知识点:基于Python技术,如何使用MMDetection进行目标检测