yolov8训练筷子点数数据集
序言
yolov8发布这么久了,一直没有机会尝试一下,今天用之前自己制作的筷子点数数据集进行训练,并且记录一下使用过程以及一些常见的操作方式,供以后翻阅。
一、环境准备
yolov8的训练相对于之前的yolov5简单了很多,也比其他框架上手要来得快,因为很多东西都封装好了,直接调用或者命令行运行就行,首先需要先把代码git到本地:
git clone https://github.com/ultralytics/ultralytics.git
然后安装ultralytics库,核心代码都封装在这个库里了。
pip install ultralytics
再然后需要安装requirements.txt文件里需要安装的库,python版本要求python>=3.7,torch版本要求pytorch>=1.7.0
pip install -r requirements.txt
接下来我们可以把coco权重下载下来,使用命令行运行检测命令检查环境是否安装成功,将权重下载下来然后新建weights文件夹存放:
运行检测命令:
yolo predict model=./weights/yolov8n.pt source=./ultralytics/assets/bus.jpg save
其中的一些命令,后面再仔细描述,大部分情况下,这个命令行都是可以运行的,运行结束后,图片保存在runs/detect/predict/bus.jpg中,如下:
至此,你的环境就准备好了,接下来就可以训练了。
二、数据准备
数据我使用的是之前自己制作的筷子点数数据集,图片如下:
标注示例:
通常我们采用VOC格式的标注数据,所以新建一个任意位置的文件夹(记住该文件夹的绝对路径),文件夹中包含如下内容:
- Annotations xml标注文件
- images 训练的图片
- ImageSets 用于存放划分的train.txt、test.txt、val.txt文件(初始为空)
- labels 用于存放yolo格式的标注txt文件(初始为空)
接下来运行如下文件,路径或者类别等参数根据自己的需要修改,运行该文件有两个作用:
- 划分train、test、val数据集
- 将voc格式标注转换为yolo格式标注
import os
import random
import xml.etree.ElementTree as ET
from os import getcwdsets = ['train', 'test', 'val'] # 划分的train、test、val txt文件名字classes = ['label'] # 数据集类别data_root = "/home/cai/data/chopsticks" # 数据集绝对路径trainval_percent = 0.1 # 测试集验证集比例
train_percent = 0.9 # 训练集比例
xmlfilepath = '{}/Annotations'.format(data_root)
txtsavepath = '{}/images'.format(data_root)
total_xml = os.listdir(xmlfilepath)num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)ftest = open('{}/ImageSets/test.txt'.format(data_root), 'w')
ftrain = open('{}/ImageSets/train.txt'.format(data_root), 'w')
fval = open('{}/ImageSets/val.txt'.format(data_root), 'w')for i in list:name = total_xml[i][:-4] + '\n'if i in trainval:if i in train:ftest.write(name)else:fval.write(name)else:ftrain.write(name)ftrain.close()
fval.close()
ftest.close()# -------------------------------- voc 转yolo代码def convert(size, box):dw = 1. / size[0]dh = 1. / size[1]x = (box[0] + box[1]) / 2.0y = (box[2] + box[3]) / 2.0w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)def convert_annotation(image_id):in_file = open('{}/Annotations/{}.xml'.format(data_root,image_id),encoding='UTF-8')# print(in_file)out_file = open('{}/labels/{}.txt'.format(data_root,image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
print(wd)
for image_set in sets:if not os.path.exists('{}/labels/'.format(data_root)):os.makedirs('{}/labels/'.format(data_root))image_ids = open('{}/ImageSets/{}.txt'.format(data_root,image_set)).read().strip().split()list_file = open('{}/{}.txt'.format(data_root,image_set), 'w')for image_id in image_ids:# print(image_id)list_file.write('{}/images/{}.jpg\n'.format(data_root,image_id))try:convert_annotation(image_id)except:print(image_id)list_file.close()
最后得到如下文件,labels和ImageSets都不再为空:
二、开始训练
v8的训练很简单,配置也超级简单,首先第一步在ultralytics/datasets中创建我们数据集的配置文件,这里我创建了一下chopsticks.yaml,内容如下,其实和之前的v5配置文件一样,该文件中修改自己的路径和类别即可:
# YOLOv5
yolov8训练筷子点数数据集相关推荐
- YOLOv8训练自己的数据集(超详细)
一.准备深度学习环境 本人的笔记本电脑系统是:Windows10 YOLO系列最新版本的YOLOv8已经发布了,详细介绍可以参考我前面写的博客,目前ultralytics已经发布了部分代码以及说明,可 ...
- YOLOv8训练自己的数据集
等了好久终于等到了V8,赶紧测测效果,放张官网的比对图 官网链接 https://github.com/ultralytics/ultralytics 再下载自己所需要的权重 https://gith ...
- 最新版YOLOv6训练自己的数据集(超详细完整版!)
接着上篇文章继续写,本篇文章讲如何训练自己的数据集. 从官网下载YOLOv6源码:meituan/YOLOv6: YOLOv6: a single-stage object detection fra ...
- yolov5训练自己的数据集
How to Train YOLOv5 On a Custom Dataset 根据这篇文章下的数据集 YOLOv5训练自己的数据集 根据这篇文章,输入训练命令行 Hyperparameter ...
- 实践教程|如何用YOLOX训练自己的数据集?
作者 | JuLec@知乎(已授权) 来源 | https://zhuanlan.zhihu.com/p/402210371 编辑 | 极市平台 导读 Yolo系列因为其灵活性,一直是目标检测热门算法 ...
- 手把手教你使用YOLOV5训练自己的数据集并用TensorRT加速
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前言 本文主要介绍目标检测YOLOV5算法来训练自己的数据集,并且使用TensorRT来对训练好的模型 ...
- mask rcnn训练自己的数据集
原文首发于微信公众号「3D视觉工坊」--mask rcnn训练自己的数据集 前言 最近迷上了mask rcnn,也是由于自己工作需要吧,特意研究了其源代码,并基于自己的数据进行训练~ 本博客参考:ht ...
- YOLOv3 Darknet安装编译与训练自己的数据集
YOLOv3 Darknet安装编译与训练自己的数据集 文章目录: 1安装编译darknet与测试darknet 1.1 安装编译darknet 1.1.1 下载darknet安装包 1.1.2 编译 ...
- yolov5训练自己的数据集(缺陷检测分类——看了就懂系列)
这里记录一下将yolov5用于训练自己的数据集,这里v5的github地址 Environment 本文是直接 pip install -r requirement.txt直接安装成功,如果不容易成功 ...
最新文章
- cookie追加数据_集算器 SPL 抓取网页数据
- typeof 与 js数据类型
- mysql5.6的安装步骤_MySQL5.6安装步骤
- C语言实现ternary search三分查找算法(附完整源码)
- Node.js Express 应用启用资源压缩功能 - compression 库的应用
- macyy_macyy进频道失败怎么办
- stm32基本定时器
- java系列7:this关键词
- oricle序列的创建和使用
- 接收前端传回的JSON字符串,并存入数据库
- hdu-2206 IP的计算
- matlab的wthcoef函数,小波去噪及其MATLAB中的函数.pdf
- 瑞星linux杀毒软件进程,高手请教:麻烦帮忙解释几个:瑞星杀毒软件的进程各表明什么?...
- 环球企业家:web2.0创业时代将终结
- 微风:AI新手入门学习教程
- Win11玩游戏延迟高的解决办法
- parameterType 用法
- 记一次监控录像断续摄像头时而在线问题
- 计算机科学引论2021英文,计算机科学引论= Computer Science Illuminated : 第3版 : 英文...
- 户外电源品牌之间比较的是什么?
热门文章