Мультиклассовая сегментация в Керасе

Я пытаюсь реализовать мультиклассовую сегментацию в Keras:

  • входное изображение в оттенках серого (т. е. 1 канал)
  • наземное правдивое изображение имеет 3 канала, каждый пиксель представляет собой горячий вектор длиной 3
  • прогнозирование является стандартным, обученным U-Net с categorical_crossentropy выводом 3 каналов (softmax-ed)

Что не так с этой настройкой? У потери тренировки есть странное поведение:

  • в моих удачных случаях он ведет себя так, как ожидалось (уменьшается)
  • 90% времени он застревает на уровне ~ 0,9

Мою реализацию можно найти здесь

Я не думаю, что с кодом что-то не так: если моя основная правда 1-канальная (то есть 0 везде и где-то 1) и использую binary_crossentropy + sigmoid в качестве финальной активации, я не вижу странного поведения.


person sirfoga    schedule 05.12.2020    source источник


Ответы (1)


Я отвечу на свой вопрос. Решение состоит в том, чтобы взвесить каждый класс, то есть использовать взвешенную кросс-энтропийную потерю.

person sirfoga    schedule 05.12.2020