序言

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文件(初始为空)

接下来运行如下文件,路径或者类别等参数根据自己的需要修改,运行该文件有两个作用:

  1. 划分train、test、val数据集
  2. 将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训练筷子点数数据集相关推荐

  1. YOLOv8训练自己的数据集(超详细)

    一.准备深度学习环境 本人的笔记本电脑系统是:Windows10 YOLO系列最新版本的YOLOv8已经发布了,详细介绍可以参考我前面写的博客,目前ultralytics已经发布了部分代码以及说明,可 ...

  2. YOLOv8训练自己的数据集

    等了好久终于等到了V8,赶紧测测效果,放张官网的比对图 官网链接 https://github.com/ultralytics/ultralytics 再下载自己所需要的权重 https://gith ...

  3. 最新版YOLOv6训练自己的数据集(超详细完整版!)

    接着上篇文章继续写,本篇文章讲如何训练自己的数据集. 从官网下载YOLOv6源码:meituan/YOLOv6: YOLOv6: a single-stage object detection fra ...

  4. yolov5训练自己的数据集

    How to Train YOLOv5 On a Custom Dataset   根据这篇文章下的数据集 YOLOv5训练自己的数据集   根据这篇文章,输入训练命令行 Hyperparameter ...

  5. 实践教程|如何用YOLOX训练自己的数据集?

    作者 | JuLec@知乎(已授权) 来源 | https://zhuanlan.zhihu.com/p/402210371 编辑 | 极市平台 导读 Yolo系列因为其灵活性,一直是目标检测热门算法 ...

  6. 手把手教你使用YOLOV5训练自己的数据集并用TensorRT加速

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前言 本文主要介绍目标检测YOLOV5算法来训练自己的数据集,并且使用TensorRT来对训练好的模型 ...

  7. mask rcnn训练自己的数据集

    原文首发于微信公众号「3D视觉工坊」--mask rcnn训练自己的数据集 前言 最近迷上了mask rcnn,也是由于自己工作需要吧,特意研究了其源代码,并基于自己的数据进行训练~ 本博客参考:ht ...

  8. YOLOv3 Darknet安装编译与训练自己的数据集

    YOLOv3 Darknet安装编译与训练自己的数据集 文章目录: 1安装编译darknet与测试darknet 1.1 安装编译darknet 1.1.1 下载darknet安装包 1.1.2 编译 ...

  9. yolov5训练自己的数据集(缺陷检测分类——看了就懂系列)

    这里记录一下将yolov5用于训练自己的数据集,这里v5的github地址 Environment 本文是直接 pip install -r requirement.txt直接安装成功,如果不容易成功 ...

最新文章

  1. cookie追加数据_集算器 SPL 抓取网页数据
  2. typeof 与 js数据类型
  3. mysql5.6的安装步骤_MySQL5.6安装步骤
  4. C语言实现ternary search三分查找算法(附完整源码)
  5. Node.js Express 应用启用资源压缩功能 - compression 库的应用
  6. macyy_macyy进频道失败怎么办
  7. stm32基本定时器
  8. java系列7:this关键词
  9. oricle序列的创建和使用
  10. 接收前端传回的JSON字符串,并存入数据库
  11. hdu-2206 IP的计算
  12. matlab的wthcoef函数,小波去噪及其MATLAB中的函数.pdf
  13. 瑞星linux杀毒软件进程,高手请教:麻烦帮忙解释几个:瑞星杀毒软件的进程各表明什么?...
  14. 环球企业家:web2.0创业时代将终结
  15. 微风:AI新手入门学习教程
  16. Win11玩游戏延迟高的解决办法
  17. parameterType 用法
  18. 记一次监控录像断续摄像头时而在线问题
  19. 计算机科学引论2021英文,计算机科学引论= Computer Science Illuminated : 第3版 : 英文...
  20. 户外电源品牌之间比较的是什么?

热门文章

  1. 五种常见户外LED显示屏模组故障维修方法
  2. 车机CAN总线模拟器的自制
  3. qcw——qt自定义控件
  4. html中如何重定向域名,域名如何进行重定向
  5. 专家都鼓励嵌入式工程师们走出舒适圈、学习新技能,才能与时俱进
  6. kl-imgs (分享图片列表)
  7. 洛阳计算机专业学校排名,洛阳最好的中专学校有哪些 十大中专学校排名
  8. shell中awk编辑器
  9. 选择排名靠前的期货公司开户
  10. 华为鸿蒙系统主题,华为鸿蒙2.0系统演讲主题公布:详细架构即将揭晓