缓存图像后 PyTorch 训练退出

PyTorch Training exitting after Caching Images

我有一个包含大约 12k 个训练图像和 500 个验证图像的数据集。我正在使用 YOLOv5-PyTorch 来训练我的模型。当我开始训练时,当它进入 Caching Images 阶段时,它突然退出。

我用来 运行 的代码如下:

!python train.py --img 800 --batch 32 --epochs 20 --data '/content/data.yaml' --cfg ./models/custom_yolov5s.yaml --weights yolov5s.pt --name yolov5s_results  --cache

我正在使用 Google Colab 来训练我的模型。

这是关机前执行的命令:

train: Caching Images (12.3GB ram): 99% 11880/12000 [00:47<00:00, 94.08it/s]

所以我解决了上面的问题。问题的发生是因为我们正缓存所有图像以提高 epochs 的速度。现在这可能会提高速度,但另一方面,它也会消耗内存。当您使用 Google Colab 时,它会为您提供 12.69GB 的 RAM。当缓存如此庞大的数据时,所有的 RAM 都被消耗掉了,没有任何东西可以缓存验证集,因此它会立即关闭。 有两种基本方法可以解决这个问题:

方法一:

我只是将图像大小从 800 减小到 640 因为我的训练图像不包含任何小物体,所以我实际上不需要大尺寸的图像。它减少了我的 RAM 消耗 50%

--img 640

train: Caching Images (6.6GB ram): 100% 12000/12000 [00:30<00:00, 254.08it/s]

方法二:

我在我用于 运行 这个项目的命令末尾写了一个参数:

--cache

此命令在第一个时期缓存整个数据集,因此可以立即再次使用它而不是再次处理它。如果你愿意在训练速度上做出妥协,那么这个方法会适合你。只需简单地删除这条线,你就可以开始了。您对 运行 的新命令将是:

!python train.py --img 800 --batch 32 --epochs 20 --data '/content/data.yaml' --cfg ./models/custom_yolov5s.yaml --weights yolov5s.pt --name yolov5s_results