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

yolov8图像分割训练

1.背景

        最近在做一个AI项目,需要用到yolov8的实例分割功能来确定一个不规则区域,从而找出不规则区域的坐标完成大致定位,以前有用过yolov8的目标检测功能,实际上yolov8的分割功能和检测功能大同小异。本博客将仔细分享使用yolov8图像分割的详细流程。

2.流程介绍

流程包括如下:环境配置、数据集制作、训练、测试

3.环境配置

certifi             2023.7.22   
charset-normalizer  3.3.0       
contourpy           1.1.1       
cycler              0.12.1      
fonttools           4.43.1      
idna                3.4         
importlib-resources 6.1.0       
kiwisolver          1.4.5       
matplotlib          3.7.3       
numpy               1.24.4      
opencv-python       4.8.1.78    
packaging           23.2        
pandas              2.0.3       
Pillow              10.1.0      
pip                 20.0.2      
pkg-resources       0.0.0       
psutil              5.9.6       
py-cpuinfo          9.0.0       
pyparsing           3.1.1       
python-dateutil     2.8.2       
pytz                2023.3.post1
PyYAML              6.0.1       
requests            2.31.0      
scipy               1.10.1      
seaborn             0.13.0      
setuptools          44.0.0      
six                 1.16.0      
torch               1.8.0+cu111 
torchaudio          0.8.0       
torchvision         0.9.0+cu111 
tqdm                4.66.1      
typing-extensions   4.8.0       
tzdata              2023.3      
ultralytics         8.0.150     
urllib3             2.0.7       
zipp                3.17.0  

4.数据集制作

        建立一个datasets文件夹,在文件夹下面分别建立images好labels文件夹,在images文件夹下可以分别建立train、val、test文件夹,然后在labels里面也建立train、val、test文件夹,将相应的图片和txt标签档房间去即可。然后写一个后缀为.yaml的配置文件即可。yaml文件参考结构如下:

# YOLOv5 🚀 by Ultralytics, AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from 
# COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
#     └── coco128  ← downloads here (7 MB)# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: C:\Users\admin\Desktop\yolov8\datasets  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)# Classes
names:0: outside# Download script/URL (optional)
download: https://ultralytics.com/assets/coco128.zip

实际使用的时候,主要是修改数据集的path路径即可。 

5.训练

        自己是在linux服务器上跑的,因为以前跑过目标检测,所以在将数据集和配置文件写好上传之后,直接修改了任务命令参数运行以下命令试跑的:

yolo train task = segmentation model = yolov8n-seg.pt data =outside.yaml epochs = 20 batch=2

结果报错:

 根据错误提示可以知道,应该是自己的参数设置错误了,提示中给出了yolov8支持的任务参数。同时也给出了如下的相关信息提示:

 1. Train a detection model for 10 epochs with an initial learning_rate of 0.01yolo train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.012. Predict a YouTube video using a pretrained segmentation model at image size 320:yolo predict model=yolov8n-seg.pt source='https://youtu.be/Zgi9g1ksQHc' imgsz=3203. Val a pretrained detection model at batch-size 1 and image size 640:yolo val model=yolov8n.pt data=coco128.yaml batch=1 imgsz=6404. Export a YOLOv8n classification model to ONNX format at image size 224 by 128 (no TASK required)yolo export model=yolov8n-cls.pt format=onnx imgsz=224,1285. Run special commands:yolo helpyolo checksyolo versionyolo settingsyolo copy-cfgyolo cfgDocs: https://docs.ultralytics.comCommunity: https://community.ultralytics.comGitHub: https://github.com/ultralytics/ultralytics

最终自己通过提示进行了命令修改,顺利完成了训练。最终命令如下:

yolo train task=segment model=yolov8n-seg.pt data=outside.yaml epochs = 20 batch=2

训练成功提示的参数如下:

训练完成后会在run文件下生成对应的模型权重及相关图片。

6.测试 

yolo segment predict model=PME_best_n.pt source=test.jpg

也可以使用代码测试:

from ultralytics import YOLO# Load a model
model = YOLO("best.pt")  # load a custom model# Predict with the model
results = model("test.jpg")  # predict on an imageprint(results)

 

相关文章:

  • 《C语言》动态内存管理
  • 【深度学习基础】激活函数:Tanh、Sigmoid 和 Softmax
  • Ps:脚本事件管理器
  • qt c++ 字符串拼接踩坑
  • Linux--Mosquitto服务器
  • Spring框架的原理及应用详解(六)
  • 拥抱开源,构建未来:王嘉树与 TDengine 的开源之旅
  • TCP关闭连接
  • 毕业了校园卡怎么改套餐?
  • css3中有哪些新属性(特性)?
  • 《java 编程基础》试题
  • Python文本处理:初探《三国演义》
  • 100V宽电压H62410A恒压芯片 24V降压5V 24V降压12V电源IC
  • 做好程序前设计
  • Qt进程间通信(QSharedMemory、QLocalSocket、QWebSocket、QProcess、D-BUS、QTcpSocket)
  • ES6指北【2】—— 箭头函数
  • 【mysql】环境安装、服务启动、密码设置
  • 【附node操作实例】redis简明入门系列—字符串类型
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 构造函数(constructor)与原型链(prototype)关系
  • 观察者模式实现非直接耦合
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 通过git安装npm私有模块
  • 我这样减少了26.5M Java内存!
  • const的用法,特别是用在函数前面与后面的区别
  • 如何在招聘中考核.NET架构师
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #define与typedef区别
  • #include<初见C语言之指针(5)>
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $.ajax()
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (4)(4.6) Triducer
  • (4)Elastix图像配准:3D图像
  • (C语言)二分查找 超详细
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (七)c52学习之旅-中断
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原)Matlab的svmtrain和svmclassify
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • ./configure,make,make install的作用(转)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET C# 操作Neo4j图数据库
  • .NET Core 成都线下面基会拉开序幕
  • .net FrameWork简介,数组,枚举
  • .net 发送邮件