YOLOv5保存数据增强结果

这篇具有很好参考价值的文章主要介绍了YOLOv5保存数据增强结果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本篇不会讲过多的原理,因为网上有很多关于YOLOv5的数据增强的原理,讲的都很详细,但是似乎找不到有关将增强结果保存到文件夹的笔记。
可能也是因为用途比较少,刚好我需要使用一些增强的数据所以琢磨研究了怎么保存其结果(刚开始是尝试调用有关函数进行使用,后面发现关联的函数实在太多了比较复杂还不如直接修改其输出)。
如果你进行深度学习但数据集似乎不太够,且寻找新的一组数据的代价较大的话,可以尝试使用数据增强进行扩充数据集来达到目的。

数据增强大概流程

__getitem__是进行数据增强的函数,所以基本上我们就是在__getitem__函数进行修改代码。

具体操作

如果需要马赛克拼图的话,在超参配置文件中赋值mosaic为1,默认是开启的。

在utils/dataloaders.py文件的__getitem__函数中已经进行完所有的增强后但在img和label并未进行处理之前插入以下代码:

# 将数据增强结果输出保存
if not index < 0:
    save_root = "保存结果的文件夹"
    img_name = os.path.join(save_root, "foot_t_" + str(index) + ".jpg")
    label_name = os.path.join(save_root, "foot_t_" + str(index) + ".txt")
    if not self.augment:
    	img_name = os.path.join(save_root, "foot_v_" + str(index) + ".jpg") 
    	label_name = os.path.join(save_root, "foot_v_" + str(index) + ".txt")
    	# 注意这里"foot_t_"和"foot_t_"是自己命名的,但是一定不能相同,不然每轮训练会有图片验证会覆盖掉增强的图片,或者可以根据自己的需求在下面几行几个判断不保存val图片也行
    cv2.imwrite(img_name, img)
    data = ""
    for a in range(len(labels)):
        data += str(int(labels[a][0])) + " " + str(labels[a][1]) + " " + str(labels[a][2])\
            + " " + str(labels[a][3]) + " " + str(labels[a][4]) + "\n"
    with open(label_name, "w", encoding="utf-8") as f:
        f.writelines(data)

具体插入位置如下图所示(代码部分以上面为准,有所改动,下图仅参考插入位置):
YOLOv5保存数据增强结果

效果展示

YOLOv5保存数据增强结果
YOLOv5保存数据增强结果
效果如图,是一张主图与另外三张随机选出的辅图四宫格拼在一起(中心点的位置随机),然后再进行随机的旋转平移剪切等,再进行图片上的色相、饱和度、明度的随机变换。这些位置上或者颜色上的随机变换的量也是在一定的范围之内取随机数的,范围的设置在超参配置文件中,最下面几个就是数据增强的超参。

如果觉得拼图会使目标变得不完全或者目标变小,可以减少超参mosaic的值降低马赛克拼图的概率,或者直接赋值为0,关闭马赛克拼图。

效果展示

YOLOv5保存数据增强结果
YOLOv5保存数据增强结果

注意

不仅增强结果会保存下来,验证时的图片也会保存下来,所以命名前缀要不一样除了以示区分外还保证先进行增强的结果不会被覆盖(也可以加个判断不保存val的数据)。

运行

python train.py --weights 预训练模型路径 --cfg 网络配置文件路径 --data 要增强的数据的数据集配置文件 --hyp 超参配置文件路径 --imgsz (图片大小不一定都是默认的416) --epochs 1

这里设置训练1轮是因为每一轮都是不一样的随机的数据增强,但是不会因为让它训练好几轮就会保存好几轮的增强结果,只会新的覆盖旧的(也可以一层一层往里传当前的epoch值加入到文件名当中就不会被覆盖)。

问题

如果只想要一次增强结果的可以到此为止,如果要好几次的增强结果保证数据多样性的可以运行多次命令,每运行一次得到一次结果。
此时问题就出现了,发现每一次运行的结果都是一样的,可是看了一下这些增强的变换
YOLOv5保存数据增强结果
都是random的随机变换,打印一下日志发现确实每一轮的对应的图片的变换参数都是相同的(这里的相同指的是每次运行时,第一张图的变换都相同,第二张…;但是第一张、第二张…都各自不相同),这样的结果一点都不random(挠头)
网上查了一番,发现有类似问题,从这个问题当中得到了启发
YOLOv5保存数据增强结果
或许算法里面是设置了随机种子,查找了一番果然是,且种子值为固定值所以每次都是相同的结果。
我们可以将它改一下,改成获取当前时间为种子值,这就有够random的了!
YOLOv5保存数据增强结果
在train.py中进行修改,原本赋予种子值的语句注释掉换成自己的。
到此就完全没有问题了,如果各位遇到问题欢迎私心我一起交流一起学习!

这篇文章貌似最受欢迎,但是为什么各位光收藏不点赞呢?如果有用的话也请点个赞吧~文章来源地址https://www.toymoban.com/news/detail-464289.html

到了这里,关于YOLOv5保存数据增强结果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • YOLOv5的Tricks | 【Trick12】YOLOv5使用的数据增强方法汇总

    如有错误,恳请指出。 时隔两个多月重新看yolov5的代码显然开始力不从心,当时应该一鼓作气的整理完的。在专栏前面的内容一直介绍的是yolov5训练时候使用的一些技巧, 这里用这篇博客最后归纳一下yolov5在数据增强上所使用的技巧。 在yolov3-spp专栏的时候,我介绍过yolov

    2024年01月17日
    浏览(39)
  • YOLOV5超参数设置与数据增强解析

    YOLOv5有大约30个超参数用于各种训练设置。它们在*xml中定义。/data目录下的Yaml文件。更好的初始猜测将产生更好的最终结果,因此在进化之前正确地初始化这些值是很重要的。如果有疑问,只需使用缺省值,这些缺省值是为YOLOv5 COCO训练从头优化的。 YOLOv5的超参文件见data/h

    2023年04月08日
    浏览(77)
  • 【YOLOV5-6.x讲解】数据增强方式介绍+代码实现

    【YOLOV5-6.x 版本讲解】整体项目代码注释导航 现在YOLOV5已经更新到6.X版本,现在网上很多还停留在5.X的源码注释上,因此特开一贴传承开源精神!5.X版本的可以看其他大佬的帖子本文章主要从6.X版本出发,主要解决6.X版本的项目注释与代码分析!...... https://blog.csdn.net/qq_3923

    2023年04月09日
    浏览(37)
  • 手把手教你用YOLOv5算法训练数据和检测目标(不会你捶我)

    本人从一个小白,一路走来,已能够熟练使用YOLOv5算法来帮助自己解决一些问题,早就想分析一下自己的学习心得,一直没有时间,最近工作暂时告一段落,今天抽空写点东西,一是为自己积累一些学习笔记,二是可以为一些刚接触YOLOv5算法的小白们提供一些参考,希望大家

    2024年02月01日
    浏览(63)
  • YOLOv5|YOLOv7|YOLOv8改进之实验结果(四):将多种算法的Loss精度曲线图绘制到一张图上,便于YOLOv5、v7系列模型对比实验获取更多精度数据,丰富实验数据

    💡该教程为改进YOLO高阶指南,属于 《芒果书》 📚系列,包含大量的原创首发改进方式🚀 💡更多改进内容📚可以点击查看:YOLOv5改进、YOLOv7改进、YOLOv8改进、YOLOX改进原创目录 | 老师联袂推荐🏆 💡 🚀🚀🚀本博客内含·改进源代码·,按步骤操作运行改进后的代码即可

    2023年04月17日
    浏览(50)
  • YOLOv5的Tricks | 【Trick15】使用COCO API评估模型在自己数据集的结果

    如有错误,恳请指出。 在解析yolov5整个工程项目的时候要,已经对其detect.py脚本和val.py脚本进行分别的解析。其中,个人觉得detect脚本写得过于冗杂,所以分别为每个任务(图片推理,视频推理,摄像头推理)单独的写了个简单易懂的推理脚本。 在之前在解析完val.py脚本之

    2024年02月07日
    浏览(42)
  • yolov5结果解析

    以这种形式给出矩阵的值 g t c l a s s 1 gt_{class1} g t c l a ss 1 ​ g t c l a s s 2 gt_{class2} g t c l a ss 2 ​ g t c l a s s 3 gt_{class3} g t c l a ss 3 ​ background FP p r e d c l a s s 1 pred_{class1} p re d c l a ss 1 ​ p r e d c l a s s 2 pred_{class2} p re d c l a ss 2 ​ p r e d c l a s s 3 pred_{class3} p re d c l a ss 3 ​ bac

    2024年02月04日
    浏览(45)
  • yolov5训练结果解析

    yolov5训练结果的文件解析 1、weights训练好的模型,一般使用best.pt去进行推理 2、confusion_matrix.png 混淆矩阵以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值。 TP(True Positive): 将正类预

    2024年02月06日
    浏览(63)
  • YOLOv3&YOLOv5输出结果说明

    本文使用的yolov3和yolov5工程文件均为github上ultralytics基于pytorch的v3和v5代码,其训练集输出结果类型基本一致,主要介绍了其输出结果,本文是一篇学习笔记 本文使用的yolov3代码github下载地址:yolov3 模型训练具体步骤可查看此篇博客: yolov3模型训练——使用yolov3训练自己的模

    2023年04月08日
    浏览(50)
  • YOLOv5训练结果性能分析

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 可参照以下博客一起看(涉及一些概念解析)深度学习之常用模型评估指标(一)—— 分类问题和目标检测_tt丫的博客-CSDN博客_深度网络模型特异度       

    2023年04月09日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包