深度学习模型测试时图像层数的问题

背景:最近在做一个图像预测任务,图像并不是指常见的jpg等格式的图片,其实就是网格内每个像素点有数值的那种类似于热点图的图像,为raw文件;任务方面,按我的理解是一个风格迁移(本人新上手深度学习)。根据手头拿到的模型,我需要把多层(>64层,随机选择连续的64层)的原图像裁剪为(64,200,200)输入,输出与输入一致。

img

问题:模型训练完后,开始测试。假设原图尺寸为(130,224,224),我想把输出还原为原尺寸,再继续后续的评估。还原尺寸分两部分:
①(200,200)还原为(224,224):这个好办,原图周围本就是0,进行0填充就可;
②64层还原为130层:这个就是问题所在。我听到的建议是从头开始裁剪,然后将结果堆叠。那最后会有不足64层的部分该怎么办?

尝试:我尝试过将最后不足64层的部分填充0到64层再输入,将得出的结果裁掉填充的层数。但是这部分的预测结果是很差的。我的分析是:因为原图最后一层仍是有很大一部分像素点有值的,而下一层突变为全0层就会很突兀,从而对最后几层的预测结果有很大的影响。

搜网上也没找到类似的场景(也许是我自己不会浓缩表达这个问题),求解答!谢谢!!

你的模型是啥,怎么听你描述是类似LSTM这种RNN的网络,但是看你的图片处理啥的有都是CNN。

img


至于这个,你可以试试滑动窗口,窗口长度64,64*2=128<130,最后两张强制使用66-130的数据,而不是129-130+62空白

原始图像:130,224,224==》目标尺寸:(64,200,200)
这种3d数据的坐标系简单描述为dwh,因此你需要在d、w、h三个维度进行滑动切片。故此,不存在说是①(200,200)还原为(224,224),②64层还原为130层。
130,224,224==》(64,200,200):130-64=66; 224-200=24; 224-200=24,滑动一个像素后一个图像得到662424个。因此,针对d、w、h三个维度进行滑动切片时,步幅是不一样的。d、w、h三个维度维度的步幅可以是64,200,200,当像素超过图像边界时,进行回退即可。

同样,你训练的尺寸是(64,200,200),测试时原始数据为130,224,224,所以要进行重叠切片预测