使用 TensorFlow 训练时图像大小是否重要?

Does image size matter when training with TensorFlow?

我想知道在高分辨率图像而不是低分辨率图像上进行训练是否有任何好处。我知道在较大的图像上进行训练需要更长的时间,并且尺寸必须是 32 的倍数。我当前的图像集是 1440x1920。我最好调整到 480x640,还是越大越好?

这在很大程度上取决于应用程序。根据经验,我会问自己一个问题:我可以自己完成调整大小后的图像的任务吗?如果是这样,我会缩小到最低分辨率,以免您自己的任务变得更加困难。如果不是......你将不得不非常耐心地使用图像 1440 * 1920。我想你几乎总是会更好地尝试更多不同的架构和 hyper-parameter 与较小的图像相比全分辨率图像上的模型更少。

无论您选择什么尺寸,您都必须根据您想要的图像尺寸来设计网络。如果您使用的是卷积层,更大的图像将需要更大的步幅,过滤器大小 and/or 层。每个卷积的参数数量将保持不变,但特征数量会增加(如果您正在使用它,还会增加批量归一化参数)。

当然不要求您的图像是 2 的幂。在某些情况下,它可能会加快速度(例如 GPU 分配),但这并不重要。

较小的图像会训练得更快,甚至可能收敛得更快(所有其他因素保持不变),因为您将能够训练更大的批次(例如,一次传递 100-1000 张图像,您可能无法做到这一点在具有高分辨率图像的单台机器上完成)。

至于是否调整大小,您需要问问自己图像中的每个像素是否对您的任务至关重要。通常情况并非如此 - 您可能可以将公交车照片的尺寸缩小到 128x128,但仍能认出这是一辆公交车。

使用较小的图像也可以帮助您的网络更好地泛化,因为可以过拟合的数据较少。

图像分类网络中经常使用的一种技术是对图像执行失真(例如随机裁剪、缩放和亮度调整)以 (a) 将 odd-sized 图像转换为恒定大小,(b) 合成更多数据和 (c) 鼓励网络进行概括。