Yolov8-目标检测-在自己的数据集上训练模型

小白一名,记录踩坑过程以及经验总结,方便自己查看问题,还有理清自己的思路


大家好像都是导入pycharm做的,所以我安装了社区版的pycharm,参考了以下博客:

在Ubuntu中安装并配置Pycharm教程_ubuntu安装pycharm-CSDN博客

 这里我找不到自己虚拟环境的位置了,记录一下,免得忘记:

 不知道当初安装的时候为什么放在了这个目录。。。

目前修改了三个文件:在cfg/models文件夹下创建了一个model_weight文件夹用于存放使用的权重文件,包括n、s两种型号,在v8目录下存放了yolov8n.yaml、yolov8s.yaml配置文件。

在datasets目录下,写了一个mydatacfg.yaml文件,里面是图片数据路径以及名称,这就是我自己的数据集的描述文件

一训练就出问题,百度了一通,A说改这个,B说改那个,改来改去还是一样的报错,现在看到这个报错就想吐

关于这个问题,看了github上的回答和其他博主的问题,感觉还是我数据集标签的问题,我猜测是标签的问题,具体是不是还要实验一下。不过有的博主说可能是pytorch版本的问题

RuntimeError: CUDA error: device-side assert triggered · Issue #4728 · ultralytics/ultralytics · GitHub

yolov8自定义数据训练报错排查(CUDA error: an illegal memory access was encountered)-CSDN博客


在环境配置上面花了很多时间,其实根本不用这么费劲,在youtube上学习了怎么在Googlecolabtorary上训练模型,我的天,真的是后悔怎么没有早点发现这个平台,省了一堆力气,但是后面又发现了一个问题,就是我关了电脑:再次运行的时候,保存训练结果文件的文件夹:runs\detect\train就没了,又得重新训练,免费版最多运行12小时。网上也有很多踩坑分享,遇到了再继续学习。

上面的这一张图片这是知乎上这个博主的经验: 苦逼学生党的Google Colab使用心得 - 知乎 (zhihu.com)

官方对于google colabtorary的介绍:Google Colab

最初是在B站上看到个印度youtuber讲的,就看了前面部分,没有看后面,真的是非常后悔,白白浪费我一周时间。好不容易做好配置,结果不能用,现在也没改好,不过我大致有一个猜测,感觉是我的label 标签的问题,其实今天在googlecol上训练模型也报错来着,在github上找到了问题的解决方法。这个产品就是非常方便,代码运行完了还会有弹出的框提示。


针对colab最多支持运行12小时的问题:

1、没有花钱办不到的事情,购买colab pro版的。但是我的任务没有那么大,用不着(一个穷学生不太想花钱)

2、加checkpoints(这个还不知道怎么操作的,后面如果要训练更大的检测模型,再继续学习)


在googlecol上的报错:

1、Transport endpoint is not connected 这个应该是网络问题,重新装载谷歌硬盘。

ps:云端笔记本中的路径表达式的根路径都是/content/drive

2、IndexError: index 1 is out of bounds for dimension 1 with size 1

这个应该是我lable文件的问题,因为我需要检测的目标只有一类,在txt文本文件中,第一列我开始都给的1,后面改为了0,正常运行了,也有的说可以改nc值,如下:

解决方法:IndexError: index 1 is out of bounds for dimension 1 with size 1 · Issue #472 · ultralytics/ultralytics · GitHub

3、 Stopping training early as no improvement observed in last 50 epochs.

Best results observed at epoch 6, best model saved as best.pt. To update EarlyStopping(patience=50) pass a new patience value, i.e. `patience=300` or use `patience=0` to disable EarlyStopping

早停,通过检测验证集上的性能是否有提升,来决定是否继续训练或者丢弃之前的模型并重新从头开始训练。当模型训练得到一个比较高的准确率后,一般继续训练直至模型完全收敛或者出现过拟合。但是,如果训练不慎中止,模型可能会进入一个局部最优点,最终导致欠拟合甚至泛化能力差,早停就是避免这种情况的一种方法。

把patience值改为了 300,但是感觉这个patience值应该不能给的这么随意吧。以下是chatgpt的回答:

在训练神经网络时,patience 值通常用于控制早停(early stopping)策略,即在验证集上监测性能,如果性能在连续的若干次迭代中没有提升,就提前停止训练,以避免过拟合。

patience 的值表示在验证集上性能没有提升的连续轮数。如果 patience 设置得过大,模型可能会在性能达到最佳时继续进行训练,从而浪费时间和计算资源。过大的 patience 可能导致模型在过拟合之前浪费过多的训练时间。

另一方面,patience 设置得过小可能导致模型在验证性能稍微下降时就提前停止,从而可能错过在稍后迭代中性能进一步提升的机会。

通常建议根据具体问题和数据集的特点来调整 patience 的值。一种常见的做法是观察模型在验证集上的学习曲线,了解性能何时趋于稳定或开始下降。根据这些观察,选择一个合适的 patience 值。如果模型的性能曲线波动较大,可以适当增加 patience,以防止提前停止。

总体而言, patience 的选择需要在训练过程中进行调试,并结合实际情况来做出

import locale
def getpreferredencoding(do_setlocale = True):
    return "UTF-8"
locale.getpreferredencoding = getpreferredencoding
!yolo task=detect mode=train model=/content/runs/detect/train7/weights/best.pt data=/content/drive/MyDrive/datasets/mydata.yaml batch=60 epochs=100 imgsz=640 patience=300

参考

 一些比较详细的关于google colab的教程

colab.research.google.com

Google Colab 快速上手 - 知乎 (zhihu.com)

Colab运行报错:“Transport endpoint is not connected“_colab无法连接到代码执行程序_能小胖的博客-CSDN博客

苦逼学生党的Google Colab使用心得 - 知乎 (zhihu.com)

用Colab训练机器学习的经验以及踩坑的那些事_https://colab.research.google.com/notebooks/intro.-CSDN博客Colab使用教程(超级详细版)及Colab Pro/Pro+评测 - 知乎 (zhihu.com)

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!要训练YOLOv4-tiny模型使用自己的数据集,你需要按照以下步骤进行操作: 1. 数据准备:准备一个包含标注信息的数据集,其中包含图像和相应的边界框信息。确保每个图像都有对应的标注文件,其中包含每个物体的类别和边界框的位置。 2. 模型配置:下载YOLOv4-tiny的模型配置文件,该文件定义了模型的结构和超参数。你可以从Darknet官方GitHub仓库中获取。 3. 权重文件:下载预训练的权重文件,这将有助于更快地收敛模型。你可以从Darknet官方GitHub仓库中找到与YOLOv4-tiny相对应的权重文件。 4. 数据标注:将你的数据集标注为YOLOv4-tiny所需的格式。可以使用标注工具(如LabelImg、VoTT等)来标注每个图像中的物体类别和边界框。 5. 数据划分:将数据集划分为训练集和验证集。建议使用80%的数据作为训练集,20%的数据作为验证集。 6. 配置文件修改:根据你的数据集和需求,修改YOLOv4-tiny的配置文件。主要修改类别数量、路径和大小等参数。 7. 训练:使用修改后的配置文件和预训练权重文件,开始训练YOLOv4-tiny模型。你可以使用Darknet框架来进行训练,按照其文档中的指示进行操作。 8. 调优:通过逐渐调整超参数(如学习率、批大小等)和训练策略(如数据增强、学习率衰减等),进一步优化模型性能。 9. 模型评估:使用验证集评估模型的性能,包括计算平均精度(mAP)等指标。根据评估结果进行调整和改进。 10. 模型推理:完成训练后,你可以使用训练得到的权重文件进行目标检测任务。在推理时,加载模型权重并对新图像进行预测。 以上是训练YOLOv4-tiny模型使用自己的数据集的一般步骤。请注意,这是一个相对复杂的任务,需要一定的深度学习和计算机视觉知识。建议在开始之前先学习相关的基础知识和技术。祝你成功!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值