YOLO_V8分割
YOLO_V8分割
YOLO安装
pip install ultralytics
YOLO的数据集转化看csdn
数据标注EIseg
-
EIseg这块,正常安装就好,但是numpy和各类包都容易有冲突,python版本装第一点
-
数据标注过程中,记得把JSON和COCO都点上,把自动保存点上,如果标注后需要修改,记得手动点右下角保存,否则“空格”没有存上。
-
预训练模型在
/home/gsh/Projects/Yanbao/dataset/static_hrnet18_ocr64_cocolvis.zip
格式转化
labelme转COCO
-
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文件夹路径,输出保存路径,和图片路径。 -
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
- 将上面生成的annotations.json进行处理,将JPEGImages替换为
.
,建议方法是VSCode打开后进行全局查找替换。
- 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的训练
-
代码在
/home/gsh/Projects/YOLOV8/segtrain.py
,其中model = YOLO("/home/gsh/Downloads/yolov8l-seg.pt")
这里面的名字写的谁,要么读取本地的,要么直接从网上下,写什么下什么 -
记得修改yaml中的文件夹路径和类别,代码在
/home/gsh/Projects/ultralytics/ultralytics/cfg/datasets/coco8-seg.yaml
-
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
原理图: #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:掌握高效的I/O多路复用技术 摘要: 本文将带你深入了解Java NIO(New I/O)中的Selector类,探索如何利用它实现高效的I/O多路复用,类似于Linux中的select和epoll系统调用。文章将提供详细的代码示例…...

vscode创建flutter项目,运行flutter项目
打开View(查看) > Command Palette...(命令面板)。 可以按下 Ctrl / Cmd Shift P 输入 flutter 选择Flutter: New Project 命令 按下 Enter 。选择Application 选择项目地址 输入项目名称 。按下 Enter 等待项目初始化完成 …...

STM32之CAN外设
相信大家在学习STM32系列的单片机时,在翻阅芯片的数据手册时,都会看到这么一个寄存器外设——CAN外设寄存器。那么,大家知道这个外设的工作原理以及该如何使用吗?这节的内容将会详细介绍STM32上的CAN外设,文章结尾附有…...
【阅读笔记】水果轻微损伤的无损检测技术应用
一、水果轻微损伤检测技术以及应用 无损检测技术顾名思义就是指在不破坏水果样品完整性的情况下对样品进行品质鉴定。目前比较常用的农产品水果类无损检测法有:基于红外热成像、机器视觉技术的图像处理方法、光谱检测技术、介电特性技术检测法等。 1.1 基于红外热…...

忘记7-zip密码,如何解压文件?
7z压缩包设置了密码,解压的时候就需要输入正确对密码才能顺利解压出文件,正常当我们解压文件或者删除密码的时候,虽然方法多,但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么,忘记了7z压缩包的密码…...
SpringBoot基础(一)
1.SpringBoot简介 Spring Boot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目。它 使用习惯优于配置的理念让你的项目快速运行起来,使用Spring Boot很容易创建一个独立运行 (运行jar,内置Servlet容器&am…...

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

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变量,这些数据都存储在内存中,如果…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...