Yolo-FastestV2 训练自己的数据集

本文介绍了如何在Ubuntu 18.04环境下,使用CUDA 11.1和PyTorch 1.9.0进行Yolo-FastestV2目标检测模型的训练。首先配置环境,安装所需库,然后将VOC格式的数据集转换为适合该算法的格式。接着计算锚点偏差,并进行模型训练。最后,提供了测试单张及多张图片的方法和评估数据集的步骤。
摘要由CSDN通过智能技术生成

根据原作者源码及说明实践后总结

操作环境

Ubuntu 18.02 +cuda 11.1 +pytorch 1.9.0
作者源码下载:https://github.com/dog-qiuqiu/Yolo-FastestV2

配置环境

新建:

conda create -n yolov2 python=3.8

安装pytorch:

conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c nvidia

下载源码:

git clone https://github.com/dog-qiuqiu/Yolo-FastestV2

安装依赖包:

pip install -r requirements.txt

测试图片:

python test.py --data data/coco.data --weights modelzoo/coco2017-0.241078ap-model.pth --img img/000139.jpg

测试成功!没有问题,就可以开始训练自己的数据集啦!

构建数据集:

此方法是将 voc 格式数据集转换为符合此算法的数据集格式
以下三个文件放在新建的data数据集里
在这里插入图片描述
使用maketxt.py划分测试集验证集

import os
import random

trainval_percent = 0.1
train_percent = 1
xmlfilepath = './data/Annotations'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
trainval = random.sample(list, tv)

txt_train='./data/ImageSets/train.txt'
if os.path.exists(txt_train):
    os.remove(txt_train)
else:
    open(txt_train,'w')

txt_val='./data/ImageSets/val.txt'
if os.path.exists(txt_val):
    os.remove(txt_val)
else:
    open(txt_val,'w')

ftrain = open(txt_train, 'w')
fval = open(txt_val, 'w')

for i in list:
    name = total_xml[i][:-4] + '\n'
    ftrain.write(name)
    if i in trainval:
        fval.write(name)

ftrain.close()
fval.close()

划分好验证集测试集后,会在ImageSets文件中生成train.txt和val.txt
使用voc_label.py生成.txt标签文件
voc_label.py

# -*- coding: utf-8 -*-
# xml解析包
import xml.etree.ElementTree as ET
import os
from os import getcwd
import shutil

sets = ['train', 'val']
classes = ['apple','cup','house']

style = '.jpg'


#判断文件是否为空
def ifnone(path) :
    if os.path.exists(path):
        #print("文件存在")
        if os.path.getsize(path):
            #print("文件存在且不为空")
            #print(os.path.getsize(FILE))
            Size=os.path.getsize(path)

            os.system('ls -lh %s' %(path))
            return 1
        else:
            #print("文件存在但为空...")   
            os.system('ls -lh %s' %(path)
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值