Я тренируюсь Deeplab v3 , создавая пользовательский набор данных в трех классах, включая фон
Затем Мой класс - это фон, панда, бутылка и 1949 изображений.
и я использую moblienetv2 модель
и segmentation_dataset.py была изменена следующим образом.
_MYDATA_INFORMATION = DatasetDescriptor(
splits_to_sizes={
'train': 975, # num of samples in images/training
'trainval': 1949,
'val': 974, # num of samples in images/validation
},
num_classes=3,
ignore_label=0,
)
train.py был изменен следующим образом.
flags.DEFINE_boolean('initialize_last_layer', False,
'Initialize the last layer.')
flags.DEFINE_boolean('last_layers_contain_logits_only', True,
'Only consider logits as last layers or not.')
train_utils.py не был изменен.
not_ignore_mask = tf.to_float(tf.not_equal(scaled_labels, ignore_label)) * loss_weight
Я получаю некоторые результаты, но не идеальные.
Например, цвета маски панды и бутылок одинаковы или не различаются
Результат, который я хочу получить,красная панда и зеленая бутылка
Итак, я решил, что была проблема с весом.
На основании вопросов других людей, train_utils.py был настроенследующим образом
irgore_weight = 0
label0_weight =1
label1_weight = 10
label2_weight = 15
not_ignore_mask =
tf.to_float(tf.equal(scaled_labels, 0)) * label0_weight +
tf.to_float(tf.equal(scaled_labels, 1)) * label1_weight +
tf.to_float(tf.equal(scaled_labels, 2)) * label2_weight +
tf.to_float(tf.equal(scaled_labels, ignore_label)) * irgore_weight
tf.losses.softmax_cross_entropy(
one_hot_labels,
tf.reshape(logits, shape=[-1, num_classes]),
weights=not_ignore_mask,
scope=loss_scope)
У меня есть вопрос здесь.
Каковы критерии для веса?
Мой набор данных состоит из следующих.
введите описание изображения здесь
Оно генерируется автоматически, поэтому я не знаю точно, какой из них больше, но это аналогичная сумма.
И еще, я использую цветную карту Паскаля.
Это первый черный фон, а второй красный третий зеленый.
Я хочу обозначить панд красными, а бутылки - зелеными.Что мне делать?