Rearrange('b c (h p1) (w p2) -> b (h w) (p1 p2 c)', p1 = patch_height, p2 = patch_width)
上面的代码来自vit-pytorch的第96行,做的处理是将图片变成许多个patch。下面写一下对该函数的说明:
b c (h p1) (w p2) -> b (h w) (p1 p2 c) 是关键,我们假设原来的输入为:(B, C, H, W),则这里就可以写出
这样,我们的输出就可以通过上式计算出来,为 。
以ViT为例,假设batch size=1,就是将输入的(1, 3, 224, 224)的图片,patchsize=p1=p2=16,变成了(1, 196, 768),进行了patch操作。