yolov7训练集运行刚要开始阶段报错,无法进入运行
--batch-size=4
我的数据集图片大小大约都在12001200左右,但是我的yolov7 train.py的参数里img-size调高超过640640他就报错内容:CUDA out of memory. Tried to allocate 150.00 MiB (GPU 0; 4.00 GiB total capacity; 3.27 GiB already allocated; 0 bytes free; 3.33 GiB reserved in total by PyTorch)这样的话有啥办法吗,我数据集图片这么大的的情况下,是不是训练效果会很差呀,还能有什么补救办法吗,我打开训练的图片发现里面的图片显示都不完整,会有影响吗?如何降低影响,让准确率提升。显卡gtx1650
1.显存不足就不要想着训练大图片了,要么换cpu忍受龟爬的速度,要么减小batch size和imgs,要么加钱换显存大的显卡,或者买GPU服务器训练。
2.训练效果好与坏看你物体大小啊,你1200x1200的图片缩放到640x640之后你的物体是否还是清晰的,不能像卫星云图那样,一缩小两倍左右小目标就消失了,那只能用大尺寸训练,不然影响不会很大。
3.如果目标小不能缩放,补救方案除了上面第一点,剩下的就是你的图片再次切分成小图,然后训练。
4.至于你说的不完整,这个是数据增强的效果
参考🔗:
https://www.jb51.net/article/242140.htm首先,您遇到的问题是因为您的GPU内存不足。这是由于您的img-size参数设置过大,导致模型需要更多的显存。为了解决这个问题,您可以尝试以下方法:
减小img-size参数的大小,将其设置为一个合适的大小,以平衡模型的准确性和显存需求。您可以逐步减小img-size的大小,直到程序能够正常运行。一般来说,640大小的图像已经足够用于大多数的目标检测任务。
如果以上方法不起作用,您可以尝试使用小一些的批量大小。将batch-size降低一些,可以减少每次迭代时需要的显存,从而避免GPU内存耗尽。
如果您必须保持原始数据集大小,您也可以使用分布式训练。分布式训练可以将大型数据集分成几个部分,每个部分都分别在GPU上进行训练,这样可以减少每个GPU需要处理的数据量,从而减少显存需求。
对于您的第二个问题,大尺寸图像确实可能会导致训练效果较差。因为大尺寸图像需要更多的显存和计算资源,导致训练速度下降,甚至无法完成训练。为了解决这个问题,您可以考虑以下方法:
将图像大小缩小到一个适当的尺寸。通常来说,640x640或512x512的图像已经足够用于大多数的目标检测任务。如果您还需要更高的分辨率,可以使用图像金字塔技术,在不同尺度下进行训练和推断。
使用数据增强技术,如随机缩放、随机裁剪等,来增加数据集的多样性。这样可以帮助模型学习到更多的特征,提高训练效果。
对于您的第三个问题,训练过程中显示不完整的问题通常不会对准确率产生影响。这个问题可能是由于某些参数设置不正确导致的,您可以调整一下显示参数来解决这个问题。
如果您需要降低这个问题的影响,您可以使用图像切片技术,将大图像分成若干小块进行训练。这样可以减小每个图像的大小,减少内存占用,同时避免显示不完整的问题。
最后,您的显卡是gtx1650,虽然不是最顶级的显卡,但是可以处理大多数的目标检测任务。如果您需要提高训练效率,您可以考虑使用更高端的显卡,如RTX 3090,或使用多个GPU进行分布式训练。