大图像的语义分割

use*_*609 5 machine-learning computer-vision deep-learning caffe tensorflow

我正在处理数量有限的大尺寸图像,每个图像都可以有3072*3072像素。为了使用FCN或U-net训练语义分割模型,我构造了大量训练集样本,每个训练图像为128*128

在预测阶段,我要做的是将大图像切成小块,与128*128的训练集相同,然后将这些小块输入训练后的模型中,得到预测的蒙版。然后,我将这些小补丁缝在一起,以得到整个图像的蒙版。这是对大图像执行语义分割的正确机制吗?

pie*_*etz 8

您的解决方案经常用于解决此类问题。然而,我认为这是否真正有意义取决于数据。让我给你举两个你仍然可以在 Kaggle 上找到的例子。

如果您想屏蔽卫星图像的某些部分,您可能会采用这种方法,而不会降低准确性。这些图像高度重复,并且分割区域与原始图像中的拍摄位置之间可能没有相关性。

如果你想从背景中分割出一辆汽车,那么将其分成几个部分是不可取的。通过多个层,网络将了解框架中汽车的全局分布。掩模很可能在图像的中间为正,在图像的角落为负。

由于您没有给出您要解决的任何具体问题,因此我只能给出一般性建议:尝试将输入图像保持在硬件允许的范围内。在许多情况下,我宁愿对原始图像进行缩减采样,也不愿将其分解为补丁。

关于 curio1729 的推荐,我只能建议不要在小补丁上进行训练并在原始图像上进行测试。虽然由于完全卷积网络,这在技术上是可能的,但您正在扩展数据,这很可能会损害性能。CNN 因其提取局部特征而闻名,但通过多层抽象可以学到大量全局信息。


cur*_*729 2

输入图像数据:我不建议将大图像(3072x3072)直接输入caffe。批量小图像将更好地适合内存,并行编程也将发挥作用。数据增强也将是可行的。

大图像的输出:对于大图像的输出,最好在测试阶段将FCN的输入大小重新调整为3072x3072。因为,FCN 的层可以接受任何大小的输入。然后你将得到 3072x3072 分割图像作为输出。