YOLO-YOLOV5训练自己模型过程记录

作者记录了使用Yolov5进行目标检测训练的过程,包括配置yaml文件、修改训练参数、数据增强(yolo2xml,xml2yolo)以应对过拟合问题,以及训练后的结果分析。过程中遇到了数据格式转换错误和训练效果不佳的问题,作者计划进一步学习和优化模型。
部署运行你感兴趣的模型镜像

注意:本文为记录,非教程

一、配置yaml文件:

1、创建了gesture_image.yaml文件:

yaml的作用在于将要训练的数据集文件结构位置以及具有的类别,知会给yolov5模型,所以在yolov5项目下的data文件夹中新建自己的yaml文件。
在这里插入图片描述

2、添加配置需要参量:

包括数据集文件夹路径,数据集中train和val图片路径以及Classes,即标签类名。
在这里插入图片描述

二、修改train.py接收参数函数parse_opt()的默认值

包括:
–weights 选择yolov5s.pt
–data 上一步配置好的gestrue_image.yaml文件路径
–epochs 训练迭代次数,先来100轮
–batch-size 一次训练分批每批次数量,先设置48
–works 设置为0
–name 保存名字,使用默认exp
在这里插入图片描述

三、训练:

开始训练,
在这里插入图片描述

实验室兄弟说训练过拟合,结果并不好,
在这里插入图片描述
运行起来也不行。收拾收拾,再来吧。

四、数据增强:

使用b站up主@啥都生的数据增强软件,有现成的轮子就是方便,链接:https://www.bilibili.com/video/BV1Sv4y1S7yb/?spm_id_from=333.788.top_right_bar_window_history.content.click&vd_source=fbf62db090250cc27ce97b468689ee38
不过,支持xml、json格式,非不支持yolo的txt格式,所以先进行格式转换。

1、格式转换:yolo2xml

使用了csdn论坛一篇博客的脚本,链接:脚本链接
修改完代码中的类别字典和自己的数据集图片、txt标签、要输出xml路径,后运行即可。图为代码运行:
在这里插入图片描述
从txt标注转为xml标注,通过labelimg软件,抽查了几张,位置及对应类别都正确,效果不错:
在这里插入图片描述
在这里插入图片描述

2、开始增强:

选择好路径,因为我的数据集图片过少(2365张,35类),所以增强后要与原先的图片混在一起,所以初始编号设置为2366。点击确认,准备批量操作。
在这里插入图片描述

忽然意识到不对,一共所有图片才2358张,最高编号怎么是2365?得,要是跳了还好说,要是错位就真傻眼了。赶紧去检查了一遍,好在基本上图片与对应标注都没啥问题,看来没有错位。继续。

使用了旋转,缩放,噪点等手段,把数据集拓展到一万七千多张,这回应该效果会好些。
在这里插入图片描述

3、格式转换:xml2yolo:

被网上乱七八糟的玩意折磨死,项目结构看的人头疼。除此之外,最意外的bug是忘记了在文件路径后的/,然后显示怎么都找不到文件。我简直是……
在这里插入图片描述
实验室某位不知名老哥给的转换文件,终于还不错,虽然没给教程,不过还是用起来了。之后得读读代码,基础的脚本还是看看。

五、再训练:

增强并转换完数据,就又开始训练我的模型了。
不过打开tensorborad界面,显示出错,仔细看了下,是该指令指定的文件路径并不能在python所在位置找到,
(yjh) PS X:\temp\compare to learn> tensorboard --logdir runs\train 出错
在终端中进入yoolov5项目后,再运行该指令,
(yjh) PS X:\temp\compare to learn\yolov5-master> tensorboard --logdir runs\train
运行成功,显示训练过程:
在这里插入图片描述
又开始漫长的训练过程了,借了实验室老哥的3080,估计也要跑11个小时。终于有一点了解AI炼丹一词如何而来了。训练结果要是不行,增加数据,修改参数,再训练,直到得到一个合用的模型。即便有调参的方向,也往往需人力穷举调整配方,再加上每次漫长的等待。这确实有些炼丹的意味了。科研民工和码农这样的词也许也是如此得来的吧。怪不得听闻chatgpt说程序员是会被它先淘汰的职业,有些工作确实有点机械劳作的意味了,还是得再动动脑子。
在这里插入图片描述

六、再结果:

比上次好了些,但依旧会做出类似于把猫识别成狗的事,把我的脑袋识别成了表示门的手势。恭喜我,训练出了个高明了一点点的人工智障。
请添加图片描述
请添加图片描述
我其实是不大明白,为什么会把我的脑袋识别成door,置信率还高达0.82。还是得再学习学习,看看问题出在哪里了。感觉可能是与训练权重用yolov5s.pt不大行,或许可以试试更大一点的模型。又或者事训练轮数多了些,才导致过拟合。不过都先不急,下一步先去学会如何看训练效果的文件吧,看看这轮的模型到底怎么样在说别的,不能盲目的再走了。顺便再把没看完的吴恩达的入门课程也看完吧。

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

### YOLO cfg文件与yaml文件的区别和用途 #### CFG 文件的作用及特点 CFG配置文件主要用于定义神经网络架构的具体参数。对于YOLO系列模型而言,`cfg`文件包含了构建特定版本YOLO所需的所有层及其属性的信息。通过解析这个文本文件中的指令,可以创建出相应的卷积神经网络结构[^1]。 例如,在YOLOv3中,`my_yolov3.cfg`这样的自定义配置文件能够指定每一层的类型(比如卷积层、上采样层)、尺寸大小、激活函数以及其他超参数等细节信息。这些设定直接影响到最终生成的模型性能表现[^2]。 ```python # 示例:部分YOLOv3 .cfg文件片段 [convolutional] batch_normalize=1 filters=32 size=3 stride=1 pad=1 activation=leaky ``` #### YAML 文件的作用及特点 相比之下,YAML格式的配置文件更侧重于描述任务级别的全局设置而非具体的网络层次设计。以YOLOv8为例,默认情况下采用的是`default.yaml`来管理不同类型的计算机视觉任务——包括但不限于目标检测、实例分割或是图像分类等——以及对应的工作流阶段像训练、评估或推理过程中的各项选项[^3]。 具体来说,这类文件里记录着数据集路径、优化器种类、学习率调整策略等一系列高层次控制变量: ```yaml # 示例:YOLOv8 default.yaml部分内容展示 train: epochs: 100 batch_size: 16 optimizer: AdamW val: save_period: 10 predict: conf_threshold: 0.25 export: format: onnx ``` #### 主要差异总结 - **作用范围**:`.cfg`主要负责底层网络架构的设计;而`.yaml`则面向更高层面的应用场景定制。 - **适用对象**:前者通常由开发者根据需求修改用于实验新算法变体;后者更多是在实际部署前针对特定项目最后调优时被编辑。 - **语法风格**:虽然两者都是纯文本形式的人机可读配置方案,但是它们遵循不同的语法规则体系,适应各自领域内的表达习惯。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值