Pytorch Pyrotch Gridsample-Can';我不能让玩具的例子起作用

Pytorch Pyrotch Gridsample-Can';我不能让玩具的例子起作用,pytorch,Pytorch,我试图理解如何使用Pytorch的网格示例函数。我知道我们通过一个[B*通道*H*W]和一个由UV像素组成的流场[B*H*W*2] 但它似乎不起作用 import numpy as np import torch import torch.nn.functional as F from torch import nn from torch.autograd import Variable import time import cv2 rgbimg = np.ones((100,100,3))

我试图理解如何使用Pytorch的网格示例函数。我知道我们通过一个[B*通道*H*W]和一个由UV像素组成的流场[B*H*W*2]

但它似乎不起作用

import numpy as np
import torch
import torch.nn.functional as F
from torch import nn
from torch.autograd import Variable
import time

import cv2

rgbimg = np.ones((100,100,3)).astype(np.float32)*0.5
rgbimg[0:50,0:50,:] = 0

rgbimg_tensor = torch.tensor(rgbimg.transpose(2,0,1)).unsqueeze(0)


flowfield = torch.ones((1,rgbimg.shape[0], rgbimg.shape[1], 2))*0

rgbimg_tensor_trans = F.grid_sample(rgbimg_tensor, flowfield)


rgbimg_trans = rgbimg_tensor_trans[0,:,:,:].numpy().transpose(1,2,0)

print(rgbimg_trans.shape)

cv2.namedWindow("fimage")
cv2.moveWindow("fimage", 2500, 50)
cv2.imshow("fimage", rgbimg_trans)
cv2.waitKey(0)
在这里,我将流场设置为零,但它似乎只是将最终图像设置为相同的值。我做错了什么

变成


添加插值参数怎么样

e、 g.,x=F.网格_样本(img, 网格, 模式='双线性',
好的,它看起来像网格中的样本,如果我设置了0,它将从图像中间的所有位置采样。所以问题是,我如何将我拥有的流场(物理上表示uv变化)改写为pytorch所期望的?