Как сделать пакетное заполнение в pytorch - PullRequest
0 голосов
/ 05 октября 2019

Мне нужно заполнить изображения другими патчами изображений во время тренировки. Поскольку я тренируюсь с мини-серией, есть ли эффективный способ сделать это?

Например, у меня есть мини-серия изображений размером [B, 3, 128, 128]. У меня также есть патчи размером [B, 4, 3, 32, 32], где 4 - количество патчей. Кроме того, у меня есть ограничивающая рамка, указывающая расположение патчей размером [B, 4, 4]. Как я могу заполнить патчи пакетным способом? Вы можете игнорировать перекрытие между патчами.

1 Ответ

0 голосов
/ 05 октября 2019
import torch

B = 1 # num of batches
C = 3 # num of channels
S = 16 # size of img
img = torch.zeros(B,C,S,S)

s = 4 # size of patch
n_patch = 4 # num of patches
patches = torch.arange(B*C*n_patch*s*s).view(B,n_patch,C,s,s)

# generate 4*B boxes
# boxes: x_min,y_min,x_max,y_max. Here, we take four corner patches. Also, we simply set all batch share the same patch coordinates. 
base_boxes = torch.tensor([[0,0,s,s],[S-s,0,S,s],[0,S-s,s,S],[S-s,S-s,S,S]])
bboxes = base_boxes.view(1,-1,4).repeat(B,1,1)

for batch_id in range(B):
    for patch_id in range(n_patch):
        bbox = bboxes[batch_id,patch_id,:]
        img[batch_id,:,bbox[0]:bbox[2],bbox[1]:bbox[3]] = batches[batch_id,patch_id,...]

img
# tensor([[[[  0.,   1.,   2.,   3.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,  96.,  97.,  98.,  99.],
#           [  4.,   5.,   6.,   7.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 100., 101., 102., 103.],
#           [  8.,   9.,  10.,  11.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 104., 105., 106., 107.],
#           [ 12.,  13.,  14.,  15.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 108., 109., 110., 111.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [ 48.,  49.,  50.,  51.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 144., 145., 146., 147.],
#           [ 52.,  53.,  54.,  55.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 148., 149., 150., 151.],
#           [ 56.,  57.,  58.,  59.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 152., 153., 154., 155.],
#           [ 60.,  61.,  62.,  63.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 156., 157., 158., 159.]],

#          [[ 16.,  17.,  18.,  19.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 112., 113., 114., 115.],
#           [ 20.,  21.,  22.,  23.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 116., 117., 118., 119.],
#           [ 24.,  25.,  26.,  27.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 120., 121., 122., 123.],
#           [ 28.,  29.,  30.,  31.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 124., 125., 126., 127.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [ 64.,  65.,  66.,  67.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 160., 161., 162., 163.],
#           [ 68.,  69.,  70.,  71.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 164., 165., 166., 167.],
#           [ 72.,  73.,  74.,  75.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 168., 169., 170., 171.],
#           [ 76.,  77.,  78.,  79.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 172., 173., 174., 175.]],

#          [[ 32.,  33.,  34.,  35.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 128., 129., 130., 131.],
#           [ 36.,  37.,  38.,  39.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 132., 133., 134., 135.],
#           [ 40.,  41.,  42.,  43.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 136., 137., 138., 139.],
#           [ 44.,  45.,  46.,  47.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 140., 141., 142., 143.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,   0.,   0.,   0.,   0.],
#           [ 80.,  81.,  82.,  83.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 176., 177., 178., 179.],
#           [ 84.,  85.,  86.,  87.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 180., 181., 182., 183.],
#           [ 88.,  89.,  90.,  91.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 184., 185., 186., 187.],
#           [ 92.,  93.,  94.,  95.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0., 188., 189., 190., 191.]]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...