赞
踩
今天在用yolov5训练自己的数据集时,在训练的时候出现了下列问题:
出错的代码行为:
labels, shapes, self.segments = zip(*cache.values())
发生在yolo5-5.0\utils\dataloaders.py的LoadImagesAndLabels类下的__init__方法中
class LoadImagesAndLabels(Dataset): # for training/testing
在网上找了很久,给出的建议大致分为以下几种:
1. data.ymal(训练集的图片和标签)的路径不对
2、图片, 标签 名称包含中文
3、你的标签文件的class分类是负数
4. 没有归一化
然后我进行了依次的检查,发现我的问题都不符合以上几类。
最后我的解决方法:
将data文件下的train.cache文件删除,然后再进行重新运行,最后程序就可以跑起来了。
train.cache是由DataSet API创建的,当DataSet API在读取预处理数据时,它会将处理后的数据缓存到train.cache文件中,以加速训练过程。也就是说train.cache作为一个缓存文件,用于存储训练过程中的中间结果,加速后续训练速度。每个epoch结束后,train.cache都会记录模型的参数和优化器状态,以及训练集和验证集损失等信息。下一次训练,train.chache文件存在,就可以直接加载其中的信息,避免重新计算,从而提高训练的效率。
总结一下我出现以上问题的原因:因为我先在程序上跑了coco的数据集,则有一个关于coco数据集的缓存,所以在换成我的数据集的时候,里面的缓存依然是coco的数据集信息,所以出现错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。