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

Yolov8/Yolov11实例分割训练自有数据集

一、实例分割标注软件Labelme

下载地址:  绿色目标检测标注软件LabelImg和实例分割标注软件Labelme资源-CSDN下载  

打开Labelme软件可对图像进行标注,选择“创建多边形”,对物体进行分割信息标注。

注完成后,点击“Save”,保存保存标注信息,生成和图片同名的json文件;

yolov8和yolov11的实例分割需将json转为yolo的txt格式的文件转换代码如下:label_format-seg.py

import json
import oslabel_to_class_id = {"fod": 0,  # 从0开始# 其他类别...
}def convert_labelme_json_to_yolo(json_file, output_dir):try:with open(json_file, 'r') as f:labelme_data = json.load(f)img_width = labelme_data["imageWidth"]img_height = labelme_data["imageHeight"]file_name = os.path.splitext(os.path.basename(json_file))[0]txt_path = os.path.join(output_dir, f"{file_name}.txt")with open(txt_path, 'w') as txt_file:for shape in labelme_data['shapes']:label = shape['label']points = shape['points']if not points:continueclass_id = label_to_class_id.get(label)if class_id is None:print(f"Warning: 跳过未定义标签 '{label}'")continue# 检查多边形是否闭合if points[0] != points[-1]:points.append(points[0])normalized = [(x / img_width, y / img_height) for x, y in points]line = f"{class_id} " + " ".join(f"{x:.6f} {y:.6f}" for x, y in normalized)txt_file.write(line + "\n")except Exception as e:print(f"处理文件 {json_file} 时出错: {str(e)}")if __name__ == "__main__":json_dir = "data-seg/json"  # labelme标注存放的目录output_dir = "data-seg/labels"  # 输出目录if not os.path.exists(output_dir):os.makedirs(output_dir)for json_file in os.listdir(json_dir):if json_file.endswith(".json"):json_path = os.path.join(json_dir, json_file)convert_labelme_json_to_yolo(json_path, output_dir)

具体应用时,该需注意修改的地方包括:

1)首先修改类别映射;

2)需要修改json_dir 的路径,它用来存放 LabelMe标注的JSON文件;

3)需要修改output_dir 的路径,输出的YOLO格式txt文件目录;

4)img_width和img_height,默认是640,分别指图片宽度和高度,根据实际图像尺寸修改即可。

运行代码,会生成用于YOLO11分割的txt标签文件。

二、实例分割模型训练

建立实例分割python文件train-seg.py,代码内容如下:

from ultralytics import YOLOif __name__ == '__main__':# 初始训练model = YOLO("./cfg/models/11/yolo11-seg.yaml").load("yolo11n-seg.pt")  # 加载预训练模型,如果本地没有会自动下载# 进行训练results = model.train(data="./datasets/data-seg.yaml", epochs=100, imgsz=640, batch=4, workers=8)

三、数据集yaml配置文件修改

在路径ultralytics/datasets/data-seg.yaml

yaml文件中的path,需要根据实际数据路径进行修改,指定数据集的路径。

四、YOLO11模型结构配置文件

路径ultralytics/cfg/models/11/yolo11-seg.yaml

注意需修改nc: 80 # number of classes

五、训练

激活虚拟环境:conda activate Y11

执行训练Yolov11的实例分割训练命令: python .\train-segv11.py

或执行训练Yolov8的实例分割训练命令: python .\train-segv8.py

六、推理

执行推理pyhton文件命令,predict-seg.py文件内容如下

from ultralytics import YOLO# 加载训练的模型
model = YOLO('runs/segment/train3/weights/best.pt')img_list = ['testfiles/3.jpg']for img in img_list:# 运行推理,并附加参数 save:是否保存文件 retina_masks:返回高分辨率分割掩码model.predict(img, save=True, conf=0.5, retina_masks=True)

七、C++部署

1.首先转换为ONNX文件

http://www.dtcms.com/a/297288.html

相关文章:

  • Springboot项目实现将文件上传到阿里云
  • Python实战:数据处理与可视化的奇妙之旅
  • 双指针算法介绍及使用(下)
  • JavaScript 中 let 在循环中的作用域机制解析
  • 没有 Mac,如何上架 iOS App?多项目复用与流程标准化实战分享
  • uniapp使用css实现进度条带动画过渡效果
  • uniapp之微信小程序标题对其右上角按钮胶囊
  • golang怎么实现每秒100万个请求(QPS),相关系统架构设计详解
  • 海康SDK球机精确控制[球机预置点配置]
  • 未来之路 - eBPF 与 Cilium 如何重塑网络
  • 在kdb+x中使用SQL
  • 理解Spring中的IoC
  • 基于新型群智能优化算法的BP神经网络初始权值与偏置优化
  • WPF MVVM进阶系列教程(二、数据验证)
  • Elasticsearch-9.0.4安装教程
  • 【SpringAI实战】实现仿DeepSeek页面对话机器人(支持多模态上传)
  • MySQL-Every derived table must have its own alias
  • OpenRLHF:面向超大语言模型的高性能RLHF训练框架
  • 基于 Nginx 与未来之窗防火墙构建下一代自建动态网络防护体系​—仙盟创梦IDE
  • Java-82 深入浅出 MySQL 内部架构:服务层、存储引擎与文件系统全覆盖
  • 秋招Day19 - 分布式 - 分布式锁
  • 静默的环保革命:Deepoc具身智能如何让垃圾桶读懂垃圾的语言
  • 一道检验编码能力的字符串的题目
  • 进程控制->进程替换(Linux)
  • LLM:Day3
  • 学习嵌入式的第二十九天-数据结构-(2025.7.16)线程控制:互斥与同步
  • 【运维】ubuntu 安装图形化界面
  • 顺应AI浪潮,电科金仓数据库再创辉煌
  • 继承接口实现websocke,实现任意路径链接
  • 可以修改公网ip吗