一、准备

1.项目链接

https://github.com/ultralytics/yolov5

2.制作数据集

将标注好的图片放到data/images/traindata/images/valid 文件夹下,将.xml标签统一放在data/Annotations文件夹下

使用txt_write.py生成data/ImageSets/Main下的valid.txt和train.txt

import osdef build_train_valid_list(train_txt,train_imgs_dir,valid_txt,valid_imgs_dir):sets = [(train_txt, train_imgs_dir), (valid_txt, valid_imgs_dir)]for s in sets:txt, imgs_dir = s# print(txt)with open(txt, "a+") as f:for img_name in os.listdir(imgs_dir):head, back = img_name.split(".")[0], img_name.split(".")[1]print(head)f.write(head)f.write("\r")f.flush()if __name__ == '__main__':train_imgs_dir = "data/images/train"valid_imgs_dir = "/data\images/valid"train_txt = "data/ImageSets/Main/train.txt"valid_txt = "data/ImageSets/Main/valid.txt"build_train_valid_list(train_txt,train_imgs_dir,valid_txt,valid_imgs_dir)

train.txt和valid.txt文件的数据如下(去除文件的后缀)

3.生成所需的txt文件

更改xml_2_txt.py文件的中训练的类别

更改xml_2_txt.py文件中的in_file的路径与out_file的路径

运行xml_2_txt.py

import xml.etree.ElementTree as ET
import ossets = ['train', 'valid']
classes = ['tjfy','tjzp','tjpm','c','qr']  # 更改为自己训练的类别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_set,image_id):in_file = open(r'F:\yolov5_Test\data\Annotations/%s.xml' % (image_id))                     #修改路径out_file = open(r'F:\yolov5_Test\data\labels/{}/{}.txt' .format(image_set,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')for image_set in sets:if not os.path.exists('data/labels/{}'.format(image_set)):os.makedirs('data/labels/{}'.format(image_set))image_ids = open('data/ImageSets/Main/%s.txt' % (image_set)).read().strip().split()print(image_ids)for image_id in image_ids:convert_annotation(image_set,image_id)

data/labels/traindata/labels/valid目录下生成训练所用的txt标签文件

txt标签文件内容如下

4.在data/下建立自己的.yaml文件

5.修改model/文件夹下所要使用的预训练模型的yaml文件

修改yolov5s.yaml文件如下:

只需要更改类别数nc:即可

二、训练

6.修改train.py文件中的相关参数:

7.运行train.py文件

正常训练

8.使用tensorboard或者wandb工具查看实时训练状态

(1)tensorboard

打开cmd命令行输入tensorboard --logdir F:\yolov5_Test\runs\train ,其中F:\yolov5_Test\runs\train 更改为自己的路径

将返回的地址输入到浏览器中即可查看训练状态

(2)wandb

根据提示打开链接即可看到训练结果:

三、测试

9.更改detect.py中的参数

保存的训练数据在runs/train/文件夹下

例如修改detect.py中的相关参数如下

运行detect.py生成的预测图片保存在runs/detect/文件夹下

预测结果如下:

四、出现问题

1.gbk错误

gbk’codec can’t decode byte 0xae

解决方法:

在train.py中第61行修改为:

 with open(opt.data,encoding="utf8") as f:

在test.py中第69行修改为:

 with open(data,encoding="utf8") as f:

2.dll错误

Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

解决方案:在train.py的开头添加

import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'

3.wandb错误

api_key not configured (no-tty).  Run wandb login

解决方案:

打开终端:

pip install wandbwandb login

按照提示打开链接:You can find your API key in your browser here: https://wandb.ai/authorize

登录并获取key,输入到终端:       Paste an API key from your profile and hit enter:

配置成功(重新训练发现错误消失):Appending key for api.wandb.ai to your netrc file: /home/username/.netrc

Yolov5训练自制数据集相关推荐

  1. YOLOv5训练KAIST数据集

    YOLOv5训练KAIST数据集 YOLOv5目前比较火热,因此模型下载和使用不再赘述,网上资源很多,该文章主要是介绍如何将KAIST数据集处理成YOLOv5可以使用的格式. 一.数据获取 1.KAI ...

  2. YOLOv5超详细的入门级教程(训练篇)(一)——训练自制数据集(识别鱼类)

    Pytorch-YOLOv5 数据集标注 数据集制作 修改配置文件 修改coco.yaml文件 修改model.yaml文件 训练train.py 出现的问题 测试detect.py 结论 Refer ...

  3. 【目标检测】yolo系列:从yolov1到yolov5之YOLOv5训练自己数据集(v6.0)

    一.源码下载及requirments 源码下载地址:https://github.com/ultralytics/yolov5 (持续更新中) 本人所用环境如下: pytorch:1.8(因为cuda ...

  4. 【深度学习】【Python】【Widerface数据集】 转VOC格式,VOC 转YOLOv5格式,YOLOv5训练WiderFace数据集,检查yolo labels对不对

    文章目录 Widerface数据集转VOC格式 VOC 转YOLO格式 数据集的imageslisttxt YOLOv5训练 检查yolo labels对不对 并行训练 Widerface数据集转VO ...

  5. yolov5训练voc数据集

    1.数据集 下载好voc数据集,以2007为例,把数据集(VOCtrainval_06-Nov-2007和VOCtest_06-Nov-2007)都解压同一个文件夹里,记住解压后的图片是从000001 ...

  6. 工程(二)——DeeplabV3+语义分割训练自制数据集

    目录 1.配置环境 1.1 利用conda新建一个环境并激活 1.2 安装pytorch 1.3 更新bashrc环境 2.安装DeeplabV3 2.1 克隆代码 2.2 下载数据集和预训练模型 3 ...

  7. YOLOv5训练coco128数据集流程

    一.安装pytorch 1.创建虚拟环境 使用Anaconda安装,建议先创建一个虚拟环境.启动Anaconda Prompt,在命令行输入: conda create -name torch pyt ...

  8. 使用YOLOv5训练NEU-DET数据集

    一.下载YOLOv5源码和NEU-DET(钢材表面缺陷)数据集 YOLOv5源码 NEU-DET(钢材表面缺陷)数据集 这里的数据集已经经过处理了,下载即可 若通过其他途径下载的原始数据集标签为xml ...

  9. YOLOV5训练鱼类数据集过程

    下载项目:https://github.com/ultralytics/yolov5 1.硬件配置: CPU:Intel Xeon Gold 6146 3.2GHz GPU:GTX3090*4 2.1 ...

最新文章

  1. 关于Talend的Patch分支对应Eclipse开发环境的配置总结.
  2. Win7 配置Android开发环境
  3. 微信腾讯会议进行视频面试,如何使用腾讯会议进行视频面试?
  4. 网页设计中的默认字体样式详解
  5. 设置自增递增零开始_MySQL中如何设置自动递增id主键重新计数从1开始?
  6. 【腾讯面试题】SQL语句优化方法有哪些?
  7. CVPR2015深度学习回顾
  8. 好文章,被架构师秒杀之后
  9. c java 内部类_java程序中能否在内部类当中再定义一个内部类?
  10. 运行差分灰狼时出现 关于“索引超出数组元素的数目(0)和矩阵维度问题以及图例的问题”的解决办法
  11. c语言入门函数大全,C语言函数大全(适合初学者).doc
  12. 数据结构-1-顺序表的实现
  13. led设备驱动(s3c_led.c)
  14. dts双轨制会员积分系统,直销系统,分销系统
  15. 支付宝SOFA架构:降低业务系统复杂度
  16. 华为交换机主备命令_华为交换机命令中文意思
  17. C语言入门:数字分离
  18. JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写
  19. java开发周报_Java周报
  20. Revit二次开发之技能篇(二)———轴网尺寸标注

热门文章

  1. 小区上线“脸钥匙”!人脸识别智能门禁模式开启
  2. 尚德自考的销售策略,尚德的陷阱,尚德是如何欺骗消费者的,315刚过,尚德就可以这样?
  3. 图数据增广(Graph Data Augmentation)近期进展
  4. 如何在诺基亚NOKIA手机安装JAVA软件程序
  5. 多目标跟踪最新综述(基于Transformer/图模型/检测和关联/孪生网络)
  6. 【Android导航 君子生非异也 善假于物也】优秀博客
  7. 《推荐系统实战》读书笔记
  8. 【基础智能优化算法】68种算法大合集+matlab源码+参考资料+永久更新
  9. html网页制作注意事项,一些制作网页过程中的注意事项
  10. button元素被点击后自动获得焦点