YOLOv8实战-自定义数据集制作、模型训练及测试

前情提要:第一次玩yolov8,记录下踩坑过程,本篇指南主要参考YOLOv8训练自己的数据集,同时记录了自己在这个过程中遇到的其他问题以及解决的办法。

代码下载地址:ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite (github.com)

解压后重命名文件夹,我把文件夹‘ultralytics-main'改成了'yolov8'的名字。

目录

一、搭建conda环境

二、数据集准备

2.1 数据标注

2.2 数据集划分

2.3 数据集格式转换

 2.4 数据集制作

 三、训练

 3.1 新建train.py文件

3.2 修改参数文件

3.3 启动训练

3.4 查看训练结果

四、测试


一、搭建conda环境

1、创建新环境

        按下'win'+'r',输入cmd,然后输入以下命令:

        conda create -n yolov8 python=3.8

2、激活环境:conda activate yolov8

3、切换当前路径到文件夹下:cd yolov8

4、安装环境包:pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

(这个我看有的帖子还让安装requirements.txt,但本人没在下载的文件夹里找到,调研了原因是因为相关配置要求都集成到ultralytics里啦,所以只用安装ultralytics)

二、数据集准备

2.1 数据标注

1、准备好自己的图片数据

2、在当前环境中安装labelimg(图片标注工具)

        pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

        我安装的是1.8.6版本

3、在cmd中打开labelimg

                        

4、在labelimg界面中标注图片,我保存成了VOC格式,即标注文件以.xml为后缀

2.2 数据集划分

5、将数据集随机划分为 train\test\val 三个类别

        在项目文件夹yolov8目录下新建一个文件夹mydata。 在mydata文件夹下分别建立dataset、images、labels、xml四个文件夹,其中将图像数据都放到images中,将标注好的xml文件放到xml文件夹中。

         然后在mydata文件夹下新建一个名为split_train_val.py的文件,用于实现训练集/测试集/验证集的划分,具体代码如下:

# coding:utf-8

import os
import random
import argparse

parser = argparse.ArgumentParser()
# xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下
parser.add_argument('--xml_path', default='xml', type=str, help='input xml label path')
# 数据集的划分,地址选择自己数据下的ImageSets/Main
parser.add_argument('--txt_path', default='dataset', type=str, help='output txt label path')
opt = parser.parse_args()

trainval_percent = 0.9
train_percent = 0.7
xmlfilepath = opt.xml_path
txtsavepath = opt.txt_path
total_xml = os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):
    os.makedirs(txtsavepath)

num = len(total_xml)
list_index = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)

file_trainval = open(txtsavepath + '/trainval.txt', 'w')
file_test = open(txtsavepath + '/test.txt', 'w')
file_train = open(txtsavepath + '/train.txt', 'w')
file_val = open(txtsavepath + '/val.txt', 'w')

for i in list_index:
    name = total_xml[i][:-4] + '\n'
    if i in trainval:
        file_trainval.write(name)
        if i in train:
            file_train.write(name)
        else:
            file_val.write(name)
    else:
        file_test.write(name)

file_trainval.close()
file_train.close()
file_val.close()
file_test.close()

        运行以上程序后,就将图片名划分到了不同的数据集中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值