PyTorch grid_sample возвращает нулевой массив - PullRequest
0 голосов
/ 12 марта 2019

Я хочу сэмплировать прямоугольный патч из моего изображения по affine_grid / grid_sample Я создал массив, который содержит только 255 значения

canvas1 = np.zeros((128, 128), dtype=np.uint8)
canvas1[:] = 255

Также я создал сетку

theta = torch.FloatTensor([[
    [11/2, 0, 63],
    [0, 11/2, 63],
]])
grid = F.affine_grid(theta, (1, 1, 11, 11))

Сетка содержит значения типа

     [[57.5000, 57.5000],
      [58.6000, 57.5000],
      [59.7000, 57.5000],
      [60.8000, 57.5000],
      [61.9000, 57.5000],
      [63.0000, 57.5000],
      [64.1000, 57.5000],
      [65.2000, 57.5000],
      [66.3000, 57.5000],
      [67.4000, 57.5000],
      [68.5000, 57.5000]],
...............

После этого я вызвал grid_sample

canvas1_torch = torch.FloatTensor(canvas1.astype(np.float32))
canvas1_torch = canvas1_torch.unsqueeze(0).unsqueeze(0)
sampled = F.grid_sample(canvas1_torch, grid, mode="bilinear")

К сожалению sampled содержит нулевые значения (но canvas1_torch[0, 0, 63, 65]) составляет 255

Что я делаю не так?

1 Ответ

1 голос
/ 13 марта 2019

Ваши значения сетки находятся за пределами [-1, 1].

В соответствии с https://pytorch.org/docs/stable/nn.html#torch.nn.functional.grid_sample, такие значения обрабатываются в соответствии с определением padding_mode.

По умолчанию padding_modeэто «нули», то, что вы, вероятно, хотите, «граница»: F.grid_sample(canvas1_torch, grid, mode="bilinear", padding_mode="border") возвращает все значения 255.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...