классификация с использованием 4-канальных изображений в pytorch - PullRequest
1 голос
/ 07 января 2020

У меня есть несколько оттенков серого и цветные изображения с надписью. Я хочу объединить эти серые и цветные изображения (4-канальные) и запустить обучение передаче с использованием 4-канальных изображений. Как это сделать?

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Если я правильно понимаю вопрос, вы хотите объединить 1-канальные изображения и 3-канальные изображения и получить 4-канальное изображение и использовать его в качестве входных данных.

Если это то, что вы хотите сделать, вы можете просто используйте torch.cat ().

Пример кода загрузки двух изображений и их объединения по размеру канала

import numpy as np
import torch
from PIL import Image

image_rgb = Image.open(path_to_rgb_image)
image_rgb_tensor = torch.from_numpy(np.array(image_rgb))
image_rgb.close()

image_grayscale = Image.open(path_to_grayscale_image))
image_grayscale_tensor = troch.from_numpy(np.array(image_grayscale))
image_grayscale.close()

image_input = torch.cat([image_rgb_tensor, image_grayscale_tensor], dim=2)

Я предположил, что изображение в градациях серого, которое вы хотите использовать, переведено в тензор с формой [..., ..., 1] и изображением RGB до [..., ..., 3].

0 голосов
/ 07 января 2020

ваша текущая модель ожидает вход RGB только с тремя каналами, таким образом, ее первый конвовый слой имеет in_channels=3, а форма weight этого первого слоя равна out_channels x 3 x kernel_height x kernel_width.
Для размещения 4-канального входа необходимо изменить первый слой на in_channels=4 и weight формы out_channels x 4 x kernel_height х kernel_width. Вы также хотите сохранить изученные веса, поэтому вы должны инициализировать новый weight таким же, как старый, за исключением крошечного шума в добавленных весах.

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