Я пытаюсь понять, как использовать функцию выборки сетки Pytorch. Я понимаю, что мы передаем [B * Channel * H * W] и поле потока [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)
Здесь я установил поле потока на ноль, но кажется, что конечное изображение везде одинаково. Что я делаю не так
становится