Как исправить вывод 'пустого изображения' для модели с тензорным потоком модели Deeplab - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь обучить свой собственный набор данных так же, как ваш эксперимент (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 Ответ

0 голосов
/ 13 февраля 2019

Так что общее определение вашего набора данных мне подходит.Тем не менее, 250 тренировочных образов не так много.Я никогда не использовал набор данных такого размера, поэтому я не могу гарантировать, что следующее поможет вам ...

У меня есть несколько предложений / вопросов, которые могут быть полезны:

1)Какой ярлык предсказывает ваша сеть (== Что вы подразумеваете под "пустыми" изображениями)?Вы имеете в виду необработанные метки предсказания (которые должны быть «черными» в обоих случаях, так как 0 и 1 являются довольно черными значениями серой шкалы) или цветное изображение, тогда интересно, какую цветовую карту вы используете (Паскаль?) И какую из обеихметки представлены черным цветом.

2) Если ваша сеть всегда прогнозирует «передний план», то ваш весовой коэффициент 500 может быть слишком высоким.Ваша сеть может попытаться избежать прогнозов FN для переднего плана любой ценой, в результате чего образ будет полностью передним.

3) Для целей отладки: попробуйте, если ваша сеть способна выучить некоторые тренировочные образы наизусть (протестируйте и тренируйтесь содни и те же изображения).Если ваши метки и настройки обучения верны, ваша сеть сможет соответствовать некоторым примерам обучения.

4) Убедитесь, что основополагающая истина, которую вы передаете в сеть, действительно имеет две допустимые метки: 0 и 1. Если выбудет передавать присоединенное изображение в качестве основного в сеть, метка 0 будет выучена, а «белый» объект будет игнорироваться, поскольку 255 - игнорируемая метка

5) В случае с Deeplab убедитесь, что вы используетепредварительно обученная инициализация для магистрали!Кроме того, было бы интересно, какую магистральную сеть вы используете?Я ожидаю, что использование небольшой / компактной сети (Deeplab с MobileNet, начальная и т. Д.) Будет полезно для обучения, основанного на 250 изображениях.

Я надеюсь, что одно из предложений поможет вам.Ура;)

...