参考:
1. interpolate函数
上下采样,直观理解就是resize,更具体的用法等用到了再详细看
2. grid_sample()函数
下图引用[2]中的代码,其实[2]表示的就是双线性插值
因此,可以得到上采样图中(0,1)位置对应原图的 (0,1)*3/7 = (0,0.4286),这个位置刚好插值为
0 + ( 0.4286 - 0 ) / ( 1 - 0 ) * (1 - 0) = 0.4286
上采样图中(1,0)位置对应原图 (1,0)*3/7 = (0.4286,0),(0.4286 - 0) / (1 - 0)表示长度比值
0 + (0.4286 - 0) / (1 - 0) * ( 4 - 0 ) = 1.7144
上面讲述了基本用法之后,就可以讲进阶的内容了。
grid_sample的参数align_corners的用法:
先来对比一下:
依旧是[1]中的例子,只不过里面的参数align_corners=True
align_corners = False
很明显结果不同了。
原因剖析:如下所示参考[5]
参考:
[1].torch.nn.functional.grid_sample — PyTorch 1.13 documentation
[2].[SOLVED]Torch.grid_sample? - vision - PyTorch Forums
[3].图像插值算法_AutoGalaxy的博客-CSDN博客