Как исправить вывод 'пустого изображения' для модели с тензорным потоком модели Deeplab
Я пытаюсь обучить свой собственный набор данных так же, как ваш эксперимент (2 КЛАССА включают фон), но я получаю пустой вывод. Изображение метки было изображением в формате PNG с 2 цветами (0 для фона и 1 для переднего плана)
SEG_INFORMATION = DatasetDescriptor(
splits_to_sizes={
'train': 250, # number of file in the train folder
'trainval': 255,
'val': 5,
},
num_classes=2, # number of classes in your dataset
ignore_label=255, # white edges that will be ignored to be class
not_ignore_mask = tf.to_float(tf.equal(scaled_labels, 0)) * 1 + tf.to_float(tf. equal(scaled_labels, 1)) * 500 + tf.to_float(tf.equal(scaled_labels, ignore_label)) * 0
! https://user-images.githubusercontent.com/23016323/52344967-fb472600-2a13-11e9-8841-0d0c5c7dde72.png
это конфигурация, которую я попробовал, и пример изображения метки
я ожидал вывод как сегментированный но получил пустое изображение
1 ответ
Так что общее определение вашего набора данных выглядит хорошо для меня. Тем не менее, 250 тренировочных образов не так много. Я никогда не использовал набор данных такого размера, поэтому я не могу гарантировать, что следующее поможет вам...
У меня есть несколько предложений / вопросов, которые могут быть полезны:
1) Какой ярлык предсказывает ваша сеть (== Что вы подразумеваете под "пустыми" изображениями)? Вы имеете в виду необработанные метки предсказания (которые должны быть "черными" в обоих случаях, так как 0 и 1 являются довольно черными значениями серой шкалы) или цветное изображение, тогда интересно, какую цветовую карту вы используете (Паскаль?) И какую из обеих метки представлены черным цветом.
2) Если ваша сеть всегда прогнозирует "передний план", то ваш весовой коэффициент 500 может быть слишком высоким. Ваша сеть может попытаться избежать прогнозов FN для переднего плана любой ценой, что приведет к полному изображению на переднем плане.
3) Для целей отладки: попробуйте, если ваша сеть способна выучить некоторые тренировочные образы наизусть (тестируйте и тренируйтесь с одинаковыми изображениями). Если ваши метки и настройки обучения верны, ваша сеть сможет соответствовать некоторым примерам обучения.
4) Убедитесь, что заземление, которое вы передаете в сеть, действительно имеет две допустимые метки: 0 и 1. Если вы передадите прикрепленное изображение как заземление в сеть, пометка 0 будет изучена, а "белый" объект будет игнорироваться как 255 - игнорируемая метка
5) В случае Deeplab, убедитесь, что вы используете предварительно обученную инициализацию для магистрали! Кроме того, было бы интересно, какую магистральную сеть вы используете? Я ожидаю, что использование небольшой / компактной сети (Deeplab с Mobilenet, начальный и т. Д.) Будет полезно для обучения на 250 изображений.
Я надеюсь, что одно из предложений поможет вам. Ура;)