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变量,这些数据都存储在内存中,如果…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...
