yolov7,训练过程

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.至于你说的不完整,这个是数据增强的效果

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 通过yolov5训练自己的模型中遇到的一些问题及解决办法中的 问题五:RuntimeError: CUDA out of memory. Tried to allocate 14.00 MiB (GPU 0; 2.00 GiB total capacity; 1.21 GiB already allocated; 1.68 MiB free; 1.24 GiB reserved in total by PyTorch) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    参考🔗

    https://www.jb51.net/article/242140.htm
    解决办法:问题在于显卡内存不够,所以尝试将batch-size减小,修改为4(我的电脑配置,设置成8,也会报错),就可以解决此问题。
  • 以下回答来自chatgpt:

    首先,您遇到的问题是因为您的GPU内存不足。这是由于您的img-size参数设置过大,导致模型需要更多的显存。为了解决这个问题,您可以尝试以下方法:

    1. 减小img-size参数的大小,将其设置为一个合适的大小,以平衡模型的准确性和显存需求。您可以逐步减小img-size的大小,直到程序能够正常运行。一般来说,640大小的图像已经足够用于大多数的目标检测任务。

    2. 如果以上方法不起作用,您可以尝试使用小一些的批量大小。将batch-size降低一些,可以减少每次迭代时需要的显存,从而避免GPU内存耗尽。

    3. 如果您必须保持原始数据集大小,您也可以使用分布式训练。分布式训练可以将大型数据集分成几个部分,每个部分都分别在GPU上进行训练,这样可以减少每个GPU需要处理的数据量,从而减少显存需求。

    对于您的第二个问题,大尺寸图像确实可能会导致训练效果较差。因为大尺寸图像需要更多的显存和计算资源,导致训练速度下降,甚至无法完成训练。为了解决这个问题,您可以考虑以下方法:

    1. 将图像大小缩小到一个适当的尺寸。通常来说,640x640或512x512的图像已经足够用于大多数的目标检测任务。如果您还需要更高的分辨率,可以使用图像金字塔技术,在不同尺度下进行训练和推断。

    2. 使用数据增强技术,如随机缩放、随机裁剪等,来增加数据集的多样性。这样可以帮助模型学习到更多的特征,提高训练效果。

    对于您的第三个问题,训练过程中显示不完整的问题通常不会对准确率产生影响。这个问题可能是由于某些参数设置不正确导致的,您可以调整一下显示参数来解决这个问题。

    如果您需要降低这个问题的影响,您可以使用图像切片技术,将大图像分成若干小块进行训练。这样可以减小每个图像的大小,减少内存占用,同时避免显示不完整的问题。

    最后,您的显卡是gtx1650,虽然不是最顶级的显卡,但是可以处理大多数的目标检测任务。如果您需要提高训练效率,您可以考虑使用更高端的显卡,如RTX 3090,或使用多个GPU进行分布式训练。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^