Как обрабатывать образцы с несколькими изображениями в модели обработки изображений pytorch?

Моя модель обучения включает в себя кодирование нескольких вариантов одного и того же изображения, а затем суммирование полученного представления по всем вариантам изображения.

Загрузчик данных создает тензорные пакеты формы: [batch_size,num_variants,1,height,width]. 1 соответствует цветовым каналам изображения.

Как я могу тренировать мою модель с помощью мини-батчей в pytorch? Я ищу правильный способ пересылки всех изображений batch_size × num_variant через сеть и суммирования результатов по всем группам вариантов.

Мое текущее решение включает сглаживание первых двух измерений и выполнение цикла for для суммирования представлений, но я чувствую, что должен быть лучший способ, и я не уверен, что градиенты все запомнят.


person hamza keurti    schedule 11.11.2020    source источник
comment
Вы рассматривали модели 3D-свертки? Они рассчитаны на такие подходы. Вы могли подумать о том, что нет. вариантов как depth в 3D свертке. Вход в nn.Conv3d имеет форму batch_size*channels*depth*height*width.   -  person planet_pluto    schedule 11.11.2020
comment
@planet_pluto Я не думаю, что трехмерные свертки - это то, что я ищу. Операции с изображениями разделяются на варианты. Это одна и та же модель, работающая на всех вариантах изображения.   -  person hamza keurti    schedule 12.11.2020


Ответы (1)


Не уверен, что я правильно вас понял, но я думаю, это то, что вы хотите (скажем, тензор пакетного изображения называется image):

Nb, Nv, inC, inH, inW = image.shape

# treat each variant as if it's an ordinary image in the batch
image = image.reshape(Nb*Nv, inC, inH, inW)

output = model(image)
_, outC, outH, outW = output.shape[1]

# reshapes the output such that dim==1 indicates variants
output = output.reshape(Nb, Nv, outC, outH, outW)

# summing over the variants and lose the dimension of summation, [Nb, outC, outH, outW]
output = output.sum(dim=1, keepdim=False)

Я использовал inC, outC, inH и т. Д. На случай, если входные и выходные каналы / размеры отличаются.

person ihdv    schedule 15.11.2020