当前位置: 首页 > 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")

推理

直接替换掉模型路径即可

相关文章:

YOLO_V8分割

YOLO_V8分割 YOLO安装 pip install ultralytics YOLO的数据集转化看csdn 数据标注EIseg EIseg这块,正常安装就好,但是numpy和各类包都容易有冲突,python版本装第一点 数据标注过程中,记得把JSON和COCO都点上,把自…...

根据请求错误的状态码判断代理配置问题

SafeLine,中文名 “雷池”,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命…...

Python 网络爬虫高阶用法

网络爬虫成为了自动化数据抓取的核心工具。Python 拥有强大的第三方库支持,在网络爬虫领域的应用尤为广泛。本文将深入探讨 Python 网络爬虫的高阶用法,包括处理反爬虫机制、动态网页抓取、分布式爬虫以及并发和异步爬虫等技术。以下内容结合最新技术发展…...

芯片Tapeout前GDS Review | Calibre中如何切出gds中指定区域版图?

在SoC芯片实现阶段我们会用到很多模拟IP,IO。对于这类模拟IP相关的电源连接,ESD保护电路连接,信号线连接都需要跟IP Vendor进行Review。但芯片整体版图涉及商业机密,我们不希望整个芯片的版图被各大vendor看到,因此我们…...

43 | 单例模式(下):如何设计实现一个集群环境下的分布式单例模式?

上两篇文章中,我们针对单例模式,讲解了单例的应用场景、几种常见的代码实现和存在的问题,并粗略给出了替换单例模式的方法,比如工厂模式、IOC 容器。今天,我们再进一步扩展延伸一下,一块讨论一下下面这几个…...

PHP如何解决异常处理

在PHP中,异常处理是通过使用try、catch、throw以及finally这几个关键字来实现的。以下是一个简单的介绍和示例: 异常处理的基本步骤 抛出异常: 使用throw关键字抛出一个异常对象。异常对象通常是Exception类或其子类的实例。 捕获异常&…...

C++ socket编程(3)

前面文章,介绍了一个简单socket通讯Demo, 客户端和服务器进行简单的交互。两个代码都很简单,如果情况一复杂,就会出错。这节我们把代码完善一下,实现一个客户端输入,发送,服务器echo的交互。本文…...

Collection-LinkedList源码解析

文章目录 概述LinkedList实现底层数据结构构造函数getFirst(), getLast()removeFirst(), removeLast(), remove(e), remove(index)add()addAll()clear()Positional Access 方法查找操作 概述 LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序…...

vue判断对象数组里是否有重复数据

TOCvue判断对象数组里是否有重复数据 try {//通过产品编码赛选出新的数组 在比较let names this.goodsJson.map(item > item["productCode"]);let nameSet new Set(names)if (nameSet.size ! names.length) {this.$message({message: 警告!产品选项…...

CSS 3D转换

在 CSS 中,除了可以对页面中的元素进行 2D 转换外,您也可以对象元素进行 3D转换(将页面看作是一个三维空间来对页面中的元素进行移动、旋转、缩放和倾斜等操作)。与 2D 转换相同,3D 转换同样不会影响周围的元素&#x…...

51单片机数码管循环显示0~f

原理图&#xff1a; #include <reg52.h>sbit dulaP2^6;//段选信号 sbit welaP2^7;//位选信号unsigned char num;//数码管显示的数字0~funsigned char code table[]{ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//定义数码管显…...

【编程进阶知识】Java NIO:掌握高效的I/O多路复用技术

Java NIO&#xff1a;掌握高效的I/O多路复用技术 摘要&#xff1a; 本文将带你深入了解Java NIO&#xff08;New I/O&#xff09;中的Selector类&#xff0c;探索如何利用它实现高效的I/O多路复用&#xff0c;类似于Linux中的select和epoll系统调用。文章将提供详细的代码示例…...

vscode创建flutter项目,运行flutter项目

打开View&#xff08;查看&#xff09; > Command Palette...&#xff08;命令面板&#xff09;。 可以按下 Ctrl / Cmd Shift P 输入 flutter 选择Flutter: New Project 命令 按下 Enter 。选择Application 选择项目地址 输入项目名称 。按下 Enter 等待项目初始化完成 …...

STM32之CAN外设

相信大家在学习STM32系列的单片机时&#xff0c;在翻阅芯片的数据手册时&#xff0c;都会看到这么一个寄存器外设——CAN外设寄存器。那么&#xff0c;大家知道这个外设的工作原理以及该如何使用吗&#xff1f;这节的内容将会详细介绍STM32上的CAN外设&#xff0c;文章结尾附有…...

【阅读笔记】水果轻微损伤的无损检测技术应用

一、水果轻微损伤检测技术以及应用 无损检测技术顾名思义就是指在不破坏水果样品完整性的情况下对样品进行品质鉴定。目前比较常用的农产品水果类无损检测法有&#xff1a;基于红外热成像、机器视觉技术的图像处理方法、光谱检测技术、介电特性技术检测法等。 1.1 基于红外热…...

忘记7-zip密码,如何解压文件?

7z压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了7z压缩包的密码…...

SpringBoot基础(一)

1.SpringBoot简介 Spring Boot是Spring社区发布的一个开源项目&#xff0c;旨在帮助开发者快速并且更简单的构建项目。它 使用习惯优于配置的理念让你的项目快速运行起来&#xff0c;使用Spring Boot很容易创建一个独立运行 &#xff08;运行jar&#xff0c;内置Servlet容器&am…...

Java智能匹配灵活用工高效人力资源管理系统小程序源码

智能匹配灵活用工高效人力资源管理系统 &#x1f4bc;&#x1f680; &#x1f680; 开篇&#xff1a;职场新风尚&#xff0c;智能匹配引领变革 在这个瞬息万变的时代&#xff0c;职场也在经历着前所未有的变革。传统的用工模式已难以满足现代企业的需求&#xff0c;而“智能匹…...

openpdf

1、简介 2、示例 2.1 引入依赖 <dependency><groupId>com.github.librepdf</groupId><artifactId>openpdf</artifactId><version>1.3.34</version></dependency><dependency><groupId>com.github.librepdf</…...

C#垃圾回收机制详解

本文详解C#垃圾回收机制。 目录 一、C#垃圾收集器定义 二、C#中的垃圾收集器特点 三、垃圾回收触发条件 四、常见的内存泄漏情况 五、高性能应用程序的垃圾回收策略 六、最佳实践和建议 七、实例 一、C#垃圾收集器定义 int、string变量,这些数据都存储在内存中,如果…...

企业自建内部知识库,最容易死在这8个问题上(管理+技术双维度)

很多企业想做内部知识库&#xff1a;把经验、图纸、方案、流程、故障案例沉淀下来&#xff0c;避免人员流失就丢技术、避免重复踩坑。但真正落地后&#xff0c;90%都变成了“僵尸文档库”——要么没人用、没人更&#xff0c;要么技术层面跟不上需求&#xff0c;AI模式形同虚设。…...

硬件安全漏洞披露与静态侧信道攻击防御实践

1. 漏洞披露流程与行业实践在硬件安全研究领域&#xff0c;负责任披露&#xff08;Responsible Disclosure&#xff09;是研究人员发现关键漏洞后的标准操作流程。以我们团队发现的AMD和Microchip芯片漏洞为例&#xff0c;完整披露过程通常包含以下关键阶段&#xff1a;漏洞确认…...

质子CT技术:原理、系统设计与临床应用

1. 质子CT技术概述&#xff1a;从原理到临床需求在放射治疗领域&#xff0c;质子治疗因其独特的布拉格峰(Bragg Peak)特性而备受关注。与传统X射线治疗相比&#xff0c;质子束在组织中沉积的能量分布具有明显的物理优势——在射程末端释放最大剂量后迅速衰减。这一特性使得肿瘤…...

别光看代码!聊聊51单片机做计算器时,那些新手容易踩的坑(键盘消抖、变量溢出、显示刷新)

51单片机计算器开发进阶指南&#xff1a;从功能实现到工程优化的深度解析 第一次在51单片机上实现计算器功能时&#xff0c;那种按下按键能看到数码管显示正确结果的兴奋感至今难忘。但真正投入实际使用后&#xff0c;各种问题接踵而至——按键偶尔失灵、大数运算出错、显示闪烁…...

《LeetCode 顺序刷题》81 - 90

81、[中等] 搜索旋转排序数组 Ⅱ 数组 二分查找 class Solution { public:bool search(vector<int>& nums, int target) {int n nums.size();if (n 0) {return false;}if (n 1) {return nums[0] target;}int l 0, r n - 1;while (l < r) {int mid (l r)…...

【免费下载】 AD7124中文手册(非常完整)

AD7124中文手册&#xff08;非常完整&#xff09; 【下载地址】AD7124中文手册非常完整 AD7124-8是一款高性能模拟前端&#xff0c;设计用于在各种苛刻环境中实现精确的数据采集。这款芯片的特点在于其内置的高精度24位Σ-Δ模数转换器(ADC)&#xff0c;能够灵活配置以支持8个差…...

【亲测免费】 Realtek-RTD2660源代码:开启显示设备定制化的新纪元

Realtek-RTD2660源代码&#xff1a;开启显示设备定制化的新纪元 【下载地址】Realtek-RTD2660源代码源程序 本仓库提供Realtek-RTD2660源代码源程序的下载。该资源文件适用于7至19寸的显示设备&#xff0c;为开发者提供了完整的源代码&#xff0c;方便进行二次开发和定制 项目…...

【免费下载】 轻松连接Hive数据库:Hive JDBC驱动包下载指南

轻松连接Hive数据库&#xff1a;Hive JDBC驱动包下载指南 【下载地址】HiveJDBC驱动包下载 该资源文件是一个压缩包&#xff0c;使用zip格式进行压缩&#xff0c;方便用户直接解压并获取Hive JDBC驱动。解压后即可使用其中的hive-jdbc-uber-2.6.5.0-292.jar文件 项目地址: ht…...

共享内存概述

共享内存&#xff0c;就是在内存里开辟一块公共空间&#xff0c;多个进程可以同时映射到自己的虚拟地址空间&#xff0c;大家直接读写同一块物理内存。是 Linux 进程间通信 IPC 最快 的一种方式。1️⃣创建共享内存空间2️⃣映射到自己的进程3️⃣strcpy写数据4️⃣断开与共享内…...

STM32F108C8T6小白入门特训营__1.4GPIO.C 代码分析

目录 1.只需要搞明白 cubemx 跟 代码对应关系就可以了 2.GPIO.C 代码加上注释 3.注意引脚的宏定义 1.只需要搞明白 cubemx 跟 代码对应关系就可以了 2.GPIO.C 代码加上注释 读懂注释部分代码即可 /* USER CODE BEGIN Header */ /*****************************************…...