Как правильно преобразовать выходные данные модели сегментации изображения из 2D (количество классов, количество пикселей) в последние изображения канала 3D - PullRequest
0 голосов
/ 06 мая 2019

Я использую keras и python для сегментации спутниковых изображений.Насколько я понимаю, чтобы получить (уровень пикселей) прогнозы для сегментации изображения, модель изменяет слой измерения (-1, num_classes, высота, ширина), чтобы сформировать (-1, num_classes, высота * ширина). Затем следует применениефункция активации, как softmax или сигмовидная.Мой вопрос заключается в том, как восстановить изображения после этого шага обратно в формате первого канала или последнего канала?пример кода

o = (Reshape((  num_classes , outputHeight*outputWidth)))(o)
o = (Permute((2, 1)))(o)
o = (Activation('softmax'))(o)

Я попытался добавить следующий слой к модели в конце

o = (Reshape((outputHeight, outputWidth, num_classes)))(o)

Это правильно?это переориентирует пиксели изображения в том же порядке, что и оригинал или нет?Другой альтернативой может быть использование следующего кода на отдельных изображениях.

array.reshape(height, width, num_classes)

Какой метод следует использовать для получения результата сегментации на уровне пикселей?

1 Ответ

0 голосов
/ 06 мая 2019

Нет, если вас интересует сегментация изображения, вы должны , а не , сгладить, а затем изменить ваши тензоры.Вместо этого используйте полностью сверточную модель , например U-Net .Вы можете найти множество примеров его реализации на github, например здесь

...