YOLOv5-seg数据集制作、模型训练以及TensorRT部署

news2025/1/16 11:14:47

YOLOv5-seg数据集制作、模型训练以及TensorRT部署

  • 版本声明
  • 一、数据集制作:图像 Json转txt
  • 二、分割模型训练
  • 三 tensorRT部署

版本声明

yolov5-seg:官方地址:https://github.com/ultralytics/yolov5/tree/v6.2
TensorRT:8.x.x
语言:C++
系统:ubuntu18.04

一、数据集制作:图像 Json转txt

前言:由于yolo仓中提供了标准coco的json文件转txt代码,因此需要将labelme的json文件转为coco json.

  1. labelme JSON 转COCO JSON
    使用labelme的CreatePolygons按钮开始绘制多边形,然后保存为json格式。
    在这里插入图片描述
    https://github.com/wkentaro/labelme/tree/master/examples/instance_segmentation.
    在该链接中有个labelme2coco.py脚本,将该脚本下载下来后,执行以下指令即可。其中data_annotated是刚刚标注保存的json标签文件夹,data_dataset_coco是生成MS COCO数据类型的目录。
    python labelme2coco.py data_annotated data_dataset_coco --labels label.txt

注意:由于自定义的数据集里面标签从0开始 不包括背景 直接转换会报错。修改72行。
在这里插入图片描述
生成三个文件JPEGImages、 Visualization 、annotations.json
在这里插入图片描述
JPEGImages中为原图,annotations.json里面是coco格式的文件:

在这里插入图片描述
Visualization中的图如下:在这里插入图片描述
转换前需要自定义label.txt
在这里插入图片描述

  1. COCO JSON转txt
    coco128-seg提供了标准的训练格式,我们下载下来看看。[label]+[points]
    在这里插入图片描述
    下载链接link:https://github.com/ultralytics/JSON2YOLO
    找到general_json2yolo.py文件,修改路径后直接运行会报错:
    No such file or directory xxx/xxxxx/xxx.txt
    排查过后发现是我们生成的annotations.json和标准的coco json有出入:(多了JPEGImages/),修改代码313行:
    标准的:
    在这里插入图片描述
    我们的:在这里插入图片描述在这里插入图片描述再次运行,报下一个错误:
    TypeError: must be real number, not NoneType
    错误指向:
    在这里插入图片描述
    观察文件夹中,已经生成一个xxx.txt且有部分数据,打印line之后发现数据里有[None,point…point]这样的数据。 大体知道了:应该是生成了背景类且没有标签。修改代码跳过这些标签:
    在这里插入图片描述
    再次运行报错消失,执行完毕没有报错。以为成功了打开txt一个最大的标签仅仅为13,应该是到15(我的数据集一共十六类),中间有几类被消除了,排查错误。应该是这个地方把91–>80类的函数的问题。修改一番,两个地方。(若只修改第二处 会出现-1标签,最高到14)

在这里插入图片描述
在这里插入图片描述也可以只修改第二处:再修改代码:
下面展示一些 内联代码片

cls = coco80[ann['category_id'] - 1] if cls91to80 else ann['category_id'] - 1  # class
cls = coco80[ann['category_id']] if cls91to80 else ann['category_id'] - 1  # class

coco91_to_coco80_class()函数:

在这里插入图片描述
排除完毕以上错误时,再次运行,没有错误了。
在这里插入图片描述

二、分割模型训练

训练的步骤和目标检测模型一致,下载模型 yolov5s-seg.pt,划分数据集 、修改配置文件、不再详述了。
在这里插入图片描述

三 tensorRT部署

有时间更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于stm32单片机体重秤电子秤超重提醒

资料编号:107 下面是相关功能视频演示: 107-基于stm32单片机体重秤电子秤称重超重报警Proteus仿真(源码仿真全套资料)功能介绍: 采用stm32单片机,可以设置称重上限制,LCD1602显示重量&#xf…

04_tcp

知识点1【多播】 多播地址: 多播地址向以太网MAC地址的映射 UDP多播工作过程: 多播地址结构体: 多播套接口选项: 知识点2【TCP面向链接编程】 1、创建tcp套接字 2、做为客户端需要具备的条件 3、connect链接服务器的函数…

地图下载白嫖神器!你该怎么用好它

今天介绍一下做数据可视化网站比较好的两个平台。一个是阿里云的Datav,另一个是易智微easyv. 一、DataV.GeoAtlas 前段时间 我们就给大家分享过阿里云的DataV.GeoAtlas地理小工具系列。我们可以通过这个平台下载高德比较新的地图数据,数据的时效性是有较…

如何查看SAP版本及HANA版本?

目录 一、查SAP NetWeaver版本 二、查看S/4 HANA版本 在SAP运维及系统集成时,经常外面公司问及本公司的SAP版本及HANA版本。其实是每一个登录SAP的用户都可以查到的。方法如下: 一、查SAP NetWeaver版本 SAP界面上选择菜单:系统-状态&am…

哈夫曼树与哈夫曼编码

哈夫曼树:结点中赋予一个某种意义的值,称为结点的权值,从根结点开始,到目标结点经过的边数,称为路径长度,路径长度乘以权值,称为带权路径长度; 例如:根结点代表着快递集…

上位机工业协议-S7COMM

1、S7协议主要针对西门子相关设备通信。先了解基本通信对象、通信环境、通信报文,再处理S7COMM通信库的封装与测试。 2、西门子设备通信 - PLC:系列 LOGO、200、200Smart、300、400、1200、1500 - PLC:LOGO、200、200Smart、300、400、1…

Elastic Stack容器化部署拓展(Https、AD域集成)并收集Cisco设备的日志信息

前言: 还记得在去年的笔记中提到过EFK(Elasticsearch-Filebeat-Kibana)的部署,但是其中的内容相对简单,也没有提到一些额外的Elastic Stack的特性。链接如下:https://blog.csdn.net/tushanpeipei/article/…

JSTL使用

目录 简介: 组成 使用: code核心库使用 ​编辑 fmt格式化 ​编辑 简介: 全称:JSP Standard Tag Library 中文名:JSP标准标签库 作用:用于扩展JSP中的标签,能够为JSP页面提供流程控制、类型转换等功能的标签。替换JSP中代码…

【Spring Cloud实战】Ribbon负载均衡

gitee地址:https://gitee.com/javaxiaobear/spring-cloud_study.git 在线阅读地址:https://javaxiaobear.gitee.io/ 1、概述 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项…

jenkins持续集成 自动化部署

一、环境准备 1.1 Java环境 (1)安装jdk1.8 yum -y install java-1.8.0-openjdk* (2)执行以下命令查看是否安装成功 java -version 1.2 安装maven (1)将安装包上传到Linux服务器,解压缩 tar -…

对笔记本电池的研究

文章目录设计容量&完全充电容量笔记本电池报告显示电池设计与系统电池的全部充电容量之间的差异解释电池损耗正确做法查看笔记本的电池使用报告方法第一步:WinR键输入cmd,打开命令提示符窗口第二步:输入powercfg /batteryreport&#xff…

代码规范-对抗软件复杂度

1、为什么需要代码规范 任何系统性的项目都需要架构设计,而架构设计的核心命题是控制复杂度。 但随着项目的不断迭代,复杂度就会不断上升,研发效率就会不断下降。 而代码规范正是对抗软件复杂度的有效手段,通过约定俗成的规则…

[附源码]计算机毕业设计JAVA户籍管理系统

[附源码]计算机毕业设计JAVA户籍管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

docker安装redis详细教程

1、下载最新redis镜像 docker pull redis //表示拉取最新的镜像 如果要指定版本 docker pull redis:latest//表示拉取最新的镜像 2、创建redis映射目录 mkdir /redisData/redis/conf 配置文件挂载在我指定的redisData/redis/conf/ 文件夹中,方便后续的修改 创建re…

Linux上单机部署RocketMq

Linux上单机部署RocketMq1、安装jdk2、下载rocketmq并解压3、创建日志文件夹4、启动namesrv5、启动broker6、查看和关闭7、rocketmq控制台7.1、控制台idea启动7.2、控制台jar包启动1、安装jdk rocketmq的运行是建立在jdk之上的,所以,我们要搭建rocketmq服…

uView u-slider 自定义滑块

有个需求UI设计的滑动选择器中的滑块如下所示: 项目中集成的是vView2.0组件库,u-slider组件中有 blockStyle 属性,看着是用来设置自定义滑块的。但是试了下,没有效果,不知怎么回事。看了一下uView1.0组件库 u-slider组…

大学生想做兼职应该怎么找,适合大学生的线上线下靠谱兼职推荐

大学生现在有很多兼职工作可以在网上和实体上做。他们可以根据个人能力和喜好进行选择。以下是一些低门槛的在线和离线兼职工作,希望能帮助到你。 线下兼职 1.勤工助学岗位 学校:通过学校提供的勤工俭学岗位,如办公室助理、图书馆助理等&am…

Java 线上机器 CPU 100% 的一次排查过程

文章目录1. 问题发生2. 数据库连接关闭问题排查3. 问题的进一步排查4. 解决方法1. 问题发生 日常敲代码突然收到生产环境异常告警,线上有一台机器 CPU 使用率飙升到 100 触发扩容,工作群里一下子鸡飞狗跳。 出现问题,首先当然是查看监控和日…

如何画架构图?

平时做过一些系统设计,也写过一些系统分析文章,从组件、关系、交互等方面提供一些建议,并用我之前写文章画的一些图举些例子。构成系统的组件通过形状、颜色、名称来逼近其概念。LevelDB 主要构件如上面 LevelDB 的架构图,包含的主…

Redis哨兵(Sentinel)

# Redis哨兵(Sentinel) Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常…