目录

划分数据集

生成数据集路径txt文件(xml转txt)

编写配置文件

data

cfg

训练模型

训练可视化

报错

运行在远程服务器

检测目标(查看效果)


划分数据集

split_train_val.py

import os
import random
import argparseparser = argparse.ArgumentParser()
# 标注文件的地址,根据自己的标注文件所在的位置进行修改
parser.add_argument('--label_path', default='/data/test/txt', type=str, help='input label path')
# 数据集的划分输出地址,可以自己定
parser.add_argument('--save_path', default='imageSets/Path', type=str, help='output txt label path')
opt = parser.parse_args()train_val_percent = 0.95  # 训练集和验证集所占比例,剩下的部分就是测试集。
train_percent = 8 / 9  # 训练集所占比例,可自己进行调整
label_file_path = opt.label_path
txt_save_path = opt.save_path
total_label = os.listdir(label_file_path)
if not os.path.exists(txt_save_path):os.makedirs(txt_save_path)num = len(total_label)
list_index = range(num)
tv = int(num * train_val_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)file_trainval = open(txt_save_path + '/trainval.txt', 'w')
file_test = open(txt_save_path + '/test.txt', 'w')
file_train = open(txt_save_path + '/train.txt', 'w')
file_val = open(txt_save_path + '/val.txt', 'w')for i in list_index:name = total_label[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()

终端输入以下命令:

python3 split_train_val.py

(Tips:如果运行失败,将python3修改成python)

例:train.txt

生成数据集路径txt文件(xml转txt)

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import os
from os import getcwdsets = ['train', 'val', 'test']
classes = ["test"]  # 改成自己的类别
abs_path = os.getcwd()
print(abs_path)def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, hdef convert_annotation(image_ID):in_file = open('D:/dataSet/marking/%s.xml' % image_ID, encoding='UTF-8')out_file = open('D:/dataSet/labels/%s.txt' % 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').text# 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))b1, b2, b3, b4 = b# 标注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
for image_set in sets:image_ids = open('imageSets/Main/%s.txt' % image_set).read().strip().split()if not os.path.exists('imageSets/dataSet_path/'):os.makedirs('imageSets/dataSet_path/')list_file = open('imageSets/dataSet_path/%s.txt' % image_set, 'w')# 这行路径不需更改,这是相对路径for image_id in image_ids:list_file.write('/data/basketball/images/%s.jpg\n' % image_id)# convert_annotation(image_id)  # 如果是xml标注文件转txt文件就删除最左边的#号list_file.close()

(Tips:yolov5中txt标注文件夹应命名为labels,并与图片所在文件夹images处于同级目录)

运行效果:

编写配置文件

data

在yolov5/data目录下新建xxxx.yaml(自己命名,例如:test.yaml),内容模板如下:

train: /test/imageSets/dataSet_path/train.txt
val: /test/ly01/imageSets/dataSet_path/val.txt
# test: /test/imageSets/dataSet_path/test.txt# number of classes
nc: 1# class names
names: ["test"]    # 自己的类别

(Tips:从这里可以看出,我们只告诉了yolov5图片路径,因为yolov5会去与images同级目录下的labels寻找标注txt文件)

cfg

在yolov5/models目录下新建xxxx.yaml(自己命名,例如yolov5t.yaml),内容根据希望训练的模型而变,例如我希望训练成像yolov5s.pt一样的模型,那就复制yolov5s.yaml中的内容到新建的yaml文件中,然后将nc(标注类别数目)修改成和上面一样的大小。

# YOLOv5 												

yolov5训练模型相关推荐

  1. Yolov5训练模型没有框

    一.问题描述: 在用yolov5训练自己的图片,先运行train.py文件再运行detect.py文件后,发现测试集中的图片没有出现锚框.我参考的配置教程是: https://blog.csdn.ne ...

  2. 神经网络:训练模型+转化为k210上跑的kmodel

    目录 前言 第一种 第二种 第三种 第四种 结语 前言:之前用YOLOv5训练了一个口罩检测模型,但是想让模型在k210上运行,涉及到模型的转换,下面我就我个人转化历程来简单记录一下,我的艰辛转换历程 ...

  3. Yolo实用指南(step by step)之三yolov5训练自己的数据集

    关于yolov5训练自己的数据集的文章网上已经有一大把,自己之前也摸索了数据标注有一阵子,可一直迟迟未动手,感觉对原理不熟悉,很多东西浮光掠影有些肤浅,思来想去还是花了整整一天实践一下吧,毕竟这是基础 ...

  4. yolov5模型部署到web端,识别返回json格式文件

    前言: 上次做了一个皮卡丘识别的模型,如下图,不知道怎么搭建yolov5训练模型可以参考这个博客

  5. YOLOv5 王者荣耀 目标检测

    YOLOv5算法如此强大,是学习深度学习图像识别无法绕过去的一个门槛:在掌握了一些基本模型(CNN/UNet/ResNet等)以后:是时候向YOLOv5发起挑战了:通过一个月的学习,基本理解了YOLO ...

  6. win10系统下使用opencv-dnn部署yolov5模型

    文章目录 前言 一.环境 1.硬件 2.软件 二.YOLO模型 三.新建Qt项目 1.pro文件 2.main函数 四.YOLO 类封装 1.yolo.h 2.yolo.cpp 3.classes.t ...

  7. 记录历经三天将自己的yolov5模型部署到Android安卓手机

    将yolov5部署到安卓手机移动端 记录历经三天小白将自己的yolov5模型部署到安卓手机 一.前言 二.具体流程 (一).部署官方yolo到安卓 1.CMakeLists.txt文件修改 2.sdk ...

  8. win10安装yolox,训练自定义模型,使用tensorrt部署全流程

    系统环境:win10.cuda10.2.cudnn8.2 一.采集数据 有2段视频,先使用ffmpeg对视频进行抽帧,由于视频比较长,所以每隔5秒抽取1张图片. ffmpeg -i light000. ...

  9. YOLOV5:在本地电脑训练模型

    相关文章 一.Python入门环境配置:Anaconda3与pycharm安装教程 二.labelimg应用:数据集标记 三.Windows下搭建Pytorch环境(CPU 版) 四.Windows下 ...

最新文章

  1. 去重仅保留一条_清水出芙蓉,天然去雕饰,牛仔背带裤配针织上衣的清纯温柔穿搭...
  2. 如何用两种方式同时实现ListBox的滚动功能
  3. CentOs6.5下独立安装Nginx篇
  4. JS 小数的常用处理方法
  5. activemq和mysql_activeMQ 填坑记
  6. c语言 想输入非数字是报错误,C语言上机练习5C言上机练习5.doc
  7. c语言:查ascii码值
  8. ceph deep scrub扫描的脚本
  9. DirectX12初始化三——DirectX图形基础结构,功能支持检测,资源驻留
  10. 基于SSM的客房预订系统的设计与实现
  11. 【HTML5 基础】HTML5重要内容
  12. 《地球概论》(第3版)笔记 第三章 地球的运动
  13. 【互动赠书】第 4 期开奖,第 5 期书单(21本)
  14. 颜宁发微博“求救” 要投拆造谣公众号
  15. java_java开发工程师
  16. Proxy SwitchyOmega,自动代理设置
  17. 为什么软件正在吞噬这个世界?​by 网景创始人 Marc Andreessen 马克·安德森​
  18. 如何无风险地用技术逆袭--技术宅男的华丽转身
  19. 独立思考Justic:Hired Guns
  20. QoS和QoE初学者指南

热门文章

  1. Stata: 面板 Granger 因果检验
  2. 权威综述:RNA m6A 与癌症
  3. 无力吐槽CSDN博客设计
  4. scons的介绍、使用和简单实例
  5. 应用于素描人脸识别的迁移学习
  6. 2021-08-16 WPF控件专题 WrapPanel 控件详解
  7. 【Python + selenium】在浏览器打开新页签,打开方式
  8. HTTP API接口规范
  9. 软件项目管理文档模板目录
  10. 算法(一) 算法初步