我使用 TensorFlow 2.x 在 320x240x3 分辨率图像上训练了一个用于图像分割任务的模型。我想知道是否有办法使用相同的模型或调整模型以使其在不同的分辨率下工作?
我必须使用在 320x240 分辨率上训练的模型来处理全高清 (1920x1080) 和标清 (1280x720) 图像,但由于 GPU 内存不足以使用我的架构在指定分辨率下训练模型,因此我在 320x240 上对其进行了训练图像。
我正在寻找一种适用于所有分辨率的可扩展解决方案。有什么建议吗?
您的问题的答案是否定的:您不能将在特定分辨率下训练的模型用于不同的分辨率;从本质上讲,这就是我们在不同分辨率下训练模型的原因,以检查性能并可能改进它。
下面的建议忽略了一个关键方面:根据手头的任务,提高分辨率可以显着改善
object detection
和 image segmentation
的结果,特别是如果您有小物体。
考虑到 GPU 内存限制,解决问题的唯一方法是尝试将初始图像分割成更小的部分(或者可能是图块),并对每个部分进行训练(例如
320x240
),然后重建初始图像;否则,除了增加 GPU 内存以便以更高分辨率进行训练之外,没有其他解决方案。
确实有一些架构可以让您在幕后发送不同分辨率的图像(缩小和放大(用于显示目的))<->例如在某些 YOLO 模型中),确实在后台执行调整大小操作 - -- 不要误以为您实际上是在以不同的大小进行推理。
PS:看了几遍就明白你的问题了;我建议您稍微修改一下分辨率的细节。
是的,您可以使用高分辨率图像来完成。但小分辨率容易训练,模型也容易找到图像的特征。小分辨率模型的训练可以节省您的时间,并使您的模型更快,因为它的参数数量较少。高清图像包含大量像素,因此如果您在更高分辨率的图像中训练模型,它会使您的训练和模型变慢,因为由于存在大量像素,它包含大量参数,并且使您的模型难以寻找高分辨率图像中的特征。因此,大多数情况下建议您使用较低的分辨率而不是较高的分辨率。