Closed beefbill closed 1 year ago
1.在小patch上训练,在大图上进行测试,这种做法在图像恢复领域其实很常见,不只是高光谱相关领域这么做。如果直接在大图上训练,一方面,对显存和时间要求都比较高;另一方面,真实图像往往是各种大小的,针对每个大小去训练一次也不太可能。所以往往采用小patch上训,大图/原图上测试的方法。当然,也可以使用96x96x31或者128x128x31甚至更大的patch去做训练,保证一个公平对比就可以。 2.1)如果网络结构只能处理固定大小的输入,可以将其进行分块进行测试 2)爆显存,其实也可以采用分块测试的方法,以我的经验,分块测试效果可能还是会比一整张图测试效果要差一些,边界会有一些block Artifact,你可以尝试划分成重叠的块再拼接的方式。
感谢您的回复,请问分块测试具体应该怎么做呢? 比如输入512×512x31的图像,将其拆分成64个64×64×31图像,然后每块单独做恢复最后再把这些图像拼接到一起再总体计算指标。是像这样的流程吗。
那么划分重叠的块针对重叠的部分又该怎么处理呢? 再次感谢您的回复。
您好,首先非常感谢您的工作。这是我首次看高光谱相关的文章,所以我对文章中提到的数据集的处理有些疑问。 您在论文之中提到训练数据集首先被裁切到1024x1024然后又经过处理得到了64x64x31的patches。但是测试的时候用的又是512x512x31的数据。 我疑惑的点有两个,第一为什么能用裁切得到的64x64x31的patches去做训练呢,理论上来说不应该输入正常图片做训练吗(虽然这个注意力所占显存可能会过大),第二就是用64x64x31的patches做训练,测试的时候为什么能泛化到使用512x512x31的输入做测试呢。因为我尝试在您的backbone上做改动,但是发现训练的时候可以正常训练,但是测试的时候由于采用512x512x31的输入,就会爆显存,导致没办法测试模型的性能。 个人对高光谱领域不是很懂,所以问的问题可能比较愚,希望能得到您的耐心解答。