语义分割推理-大图像分割成多patch推理后拼接的方法----探究

参考1:https://www.zhihu.com/question/453750066/answer/1828121763

参考2:https://blog.csdn.net/weixin_43162240/article/details/105137693#comments_16943083

当业务场景中碰到较大图像时,如遥感图像、医疗图像等,图像大小会达到数百M或者几个G甚至更大。此时将图片打开放入内存都会比较卡顿,直接将原图放入GPU推理,显然显存会爆掉。所以需要先将原图像按patchsize进行切割分成多个patchsize大小的小块图,再进行推理预测。然后将推理得到的结果图按下面的方法进行拼接融合。

方法:

1.确定patchsize:首先根据训练时的patchsize大小,确定推理时需要将原图切成patchsize大小的小块图。(此句是废话)

2.像素填充:用原图的宽除以patchsize得到一个余数,用patchsize减去刚才计算得到的余数,得到的差值就是在横向(宽)方向需要填充的像素个数,此时将差值像素数填充在原图最右边。同理,用原图的高除以patchsize得到一个余数,用patchsize减去刚才计算得到的余数,得到的差值就是在纵向(高)方向需要填充的像素个数,此时将差值像素数填充在原图最下边。此时经过填充后的图命名为A。

3.边缘膨胀(四周填充):假设我们的patchsize是1024,步长为512,那我们需要在上下左右四个边上各填充,步长 / 2即512 / 2= 256个的像素,,这样就能以1024*124的大小切原图,移动步长是256,这样就能把经过2次填充后的原图切成整数个。

4.推理后的拼接:将这些patch放入模型推理后得到的结果图,每一个按照顺序取中心512*512的区域进行拼接,就能完整的得到经过第一次填充后大小,即第二步图A的大小,再将右边第一步右边新加的部分和下面新加的部分采取,即可得到原图大小的结果图。

示意图,下面例子详见本博文开头的参考1:

语义分割推理-大图像分割成多patch推理后拼接的方法----探究_第1张图片

你可能感兴趣的:(计算机视觉_深度学习)