基于自己的数据集训练yolov5模型,cloab平台

参考
数据集处理
配置修改
python实用代码

一:安装darknet及yolov5

1、安装darknet

git clone https://github.com/pjreddie/darknet
    

打开Makefile文件,需要开启哪个接口,就将哪个接口后边的0改为1就ok:

GPU=1  # 开启GPU接口
CUDNN=1  # CUDNN是用于深度神经网络的GPU加速库
OPENCV=1  # OPENCV接口(这里需要大家源码安装opencv)
OPENMP=1  # CPU的多线程
DEBUG=0  # DEBUG接口,暂时没发现这个有什么用处,就不开了
%cd darknet/
!make

2、安装yolov5

!git clone https://github.com/ultralytics/yolov5  # clone repo
!pip install -qr yolov5/requirements.txt  # install dependencies (ignore errors)
%cd yolov5

标题二:在本地处理好数据集

1、创建数据集文件格式如下:

Annotations:样本标签.xml格式
ImageSets中只需建立Main文件夹,其中的文本文档后续会用test.py文件生成
JPEGImages:存样本图片
基于自己的数据集训练yolov5模型,cloab平台_第1张图片

2、运行test.py文件,划分训练集,测试集,验证集

 
import os
import random

trainval_percent = 0.8 #训练集与验证集 占全体数据的比例
train_percent = 0.75  # 训练集 占训练集与验证集总体 的比例,可自己进行调整
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets/Main'
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)

ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')

for i in list:
    name = total_xml[i][:-4] + '\n' #去掉.xml,.jpg
    if i in trainval:
        ftrainval.write(name)
        if i in train:
            ftrain.write(name)#训练集
        else:
            fval.write(name)#验证集
    else:
        ftest.write(name) #测试集

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

运行后可以看到ImageSets中生成了对应的test.txt,train.txt,trainval.txt,val.txt。各文本文档中存的是对应集合样本图片去掉.jpg剩下的名字,如0060,0058,0059
基于自己的数据集训练yolov5模型,cloab平台_第2张图片

3、将VOCdevkit文件夹上传到google云端硬盘,并放在/darknet/scripts/目录下。

根据需要修改darknet/scripts/voc_label.py中如下图中的部分,并运行文件
在这里插入图片描述
voc.label.py可以根据xml文件生成训练所需的label文件以及训练所用的2007_train.txt、2007_test.txt、2007_trainval,这个labels文件是直接跟Annoataions与JPEGImages是同目录的文件夹
基于自己的数据集训练yolov5模型,cloab平台_第3张图片
因为我跑yolov5的时候,会报错说找不到labels,于是我把labels中的所有文件移到了JPEGImages文件夹中,所用代码如下:

import shutil
import os

def remove_file(old_path, new_path):
    print(old_path)
    print(new_path)
    filelist = os.listdir(old_path) #列出该目录下的所有文件,listdir返回的文件列表是不包含路径的。
    print(filelist)
    for file in filelist:
        src = os.path.join(old_path, file)
        dst = os.path.join(new_path, file)
        print('src:', src)
        print('dst:', dst)
        shutil.move(src, dst)

if __name__ == '__main__':
    remove_file(r"/content/gdrive/My Drive/yolov5/darknet/scripts/VOCdevkit/VOC2007/labels", r"/content/gdrive/My Drive/yolov5/darknet/scripts/VOCdevkit/VOC2007/JPEGImages")

标题三、修改模型配置文件

1、修改coco.yaml文件

基于自己的数据集训练yolov5模型,cloab平台_第4张图片
根据需要修改nc即类数量以及类名
基于自己的数据集训练yolov5模型,cloab平台_第5张图片

2、修改模型配置

选中yolov5/models文件下需要用的模型,比如我这里采用yolo5s模型进行修改
基于自己的数据集训练yolov5模型,cloab平台_第6张图片
只需要修改nc的值
基于自己的数据集训练yolov5模型,cloab平台_第7张图片

3、修改yolov5文件夹下的train.py文件

基于自己的数据集训练yolov5模型,cloab平台_第8张图片

4、升级PyYAML

pip install --ignore-installed PyYAML

5、运行train.py文件

!python train.py

它就跑起来啦~~~~~撒花 完结
基于自己的数据集训练yolov5模型,cloab平台_第9张图片

你可能感兴趣的:(cloab,yolov5,深度学习)