计算机视觉总用三波段RGB影像做分类,代码也是三波段影像作为输入做的。
对多波段影像处理需要做一些代码改进。其实也不难,pytorch包兼容性很高,所以只是对自编代码修改就可以解决问题。
这次改的是vision transformer的官方代码,就是论文里附的代码GitHub - google-research/vision_transformer
将三波段改为四波段,也会备注n波段怎么改。首先做的就是现有四波段影像,替换路径直接运行,依次会遇到三个BUG,一个个修就好,其实没有很难:
1
UnidentifiedImageError: cannot identify image file
有文章说PIL图像库不支持的16位图像(uint16)。本以为需要将tif转为png,拉伸到0-255,但其实发现PIL只是不支持16位TIF影像,直接将16位TIF转为16位png就可以了。
2
The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0:
修改augdata.py:
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
=>
transforms.Normalize([0.5, 0.5, 0.5, 0.5], [0.5,