2

Скачайте и запустите по умолчанию infer.py скрипт FCN от github.Почему по умолчанию скрипт FCN infer.py выводит только 1-канальный Mat, как получить выход RGB?

Выход "score" слоя только 1-канальный Mat и не может быть преобразован в RGB IMG, я знаю, что сырьевая выход комок бального слоя [1, 21, W, H], но как я могу получить 3-канальный RGB выход с вместо 1 -channel img?
Я пробовал изменить уровень входных данных от [1,3,W,H] до [3,3,W,H] и использовать PIL.Image.convert('RGB'), однако оба отказались.

Я начала обучающийся в Image Сегментация, любое предложение является полезным и спасибо ~

Исходный код в infer.py, который out.shape = [W, H] (а именно 1-канал не 3):

out = net.blobs['score'].data[0].argmax(axis=0) 
+0

1-канальный выход правильный, зачем вам нужен RGB-выход? –

ответ

0

Выход, который вы получаете, действительно является одним числом на пиксель (2D, а не 3D). Число, которое вы получаете, это номер класса (0 = «фон», 1 = «самолет» и т. Д.). Чтобы преобразовать с индексированным выходным изображением, вам нужно RGB, вам нужно сопоставить (вручную) ярлык каждого класса с цветом. У вас должна быть карта из индекса 0..20 -> (R, G, B).

См. voc_helper.py для класса, реализующего это преобразование.

+0

Я получаю вашу точку зрения, действительно благодарю вас за помощь. Причина, почему я удивляюсь этому, заключается в том, что один из моих друзей, который несколько месяцев назад запускал скрипт fcn, сказал мне, что его результат - формат RGB, который отличается от того, что я получаю недавно. Поэтому я озадачен, услышав это. Во всяком случае, спасибо большое ~ –

+0

@ YanhaoGE, применяя карту - результат RGB, это детерминированный этап. Поэтому в некотором смысле вы можете сказать, что выход RGB. – Shai

0

СКЛС обучается выполнять сегментацию. Таким образом, в последнем слое на каждом пикселе из 21 выходов он выбирает один с максимальным значением и использует этот индекс для маркировки пикселя. Таким образом, мы получаем выход 1-канальной сегментации.

Невозможно получить изображение RGB, если вы не тренируете сеть с самого начала, чтобы выводить изображения RGB (что не является сегментацией).

+0

Текущий вход Imgs, посланный в conv_1, уже RGB, в соответствии с ответом @ Shai, если я хочу визуализировать вывод в RGB, тогда мне нужна карта для сопоставления каждого класса с определенным цветом. Итак, дело в том, что я не могу напрямую получить RGB-выход из любых выходных капли правильно? –

+0

Нет. Я не думаю, что ты можешь. – malreddysid

+0

Благодарим вас за помощь! –