ResUNet Сегментация плохая, хотя значения точности и отзыва выше при обучении и проверке - PullRequest
1 голос
/ 17 октября 2019

Недавно я применил RESUNET для сегментации паразитов на изображениях образцов крови. Модель описана в этом документе, https://arxiv.org/pdf/1711.10684.pdf, а вот код https://github.com/DuFanXin/deep_residual_unet/blob/master/res_unet.py. Сегментарный вывод представляет собой двоичное изображение. Я тренировал модель с взвешенной бинарной кросс-энтропийной потерей, придавая больший вес классу паразитов, поскольку в моих изображениях существует дисбаланс классов. Последний выходной слой имеет сигмовидную активацию.

Я вычисляю значение точности, отзыва и коэффициента кости, чтобы проверить, насколько хороша сегментация при обучении. При обучении и проверке я получил хорошие числовые результаты:

Обучение dice_coeff: .6895, f2: 0,8611, точность: 0,6320, отзыв: 0,9563

Проверка val_dice_coeff: .6433, val_f2: 0,7752, val_precision: 0.6052, val_recall: 0.8499

Однако, когда я пытаюсь визуально увидеть сегментации набора проверки, мой алгоритм выводит весь черный. После анализа прогнозов, возвращаемых моделью, почти все значения близки к нулю, поэтому она не может правильно различать фон и передний план. Проблема в следующем: почему мои метрики показывают хорошие числовые значения, а выходной сегментации нет? Я имею в виду, метрики не дают мне хорошую информацию? Почему значение отзыва выше, даже если на выходе все черное? Я тренировался около 50 эпох, и мои тренировочные кривые показывают, что я постоянно учусь. Это потому, что проблема исчезающего градиента?

1 Ответ

1 голос
/ 28 октября 2019

Нет, у вас нет проблемы исчезновения градиента .

Я почти на 100% уверен, что проблема связана с тем, как вы тестируете.

Числа в вашем обучении / проверке не лежат .

Убедитесь, что вы используете точно такую ​​же предварительную обработку в вашем тестовом наборе данных, точно то же самое предварительная обработка, применяемая во время обучения.

Например: если вы используете параметр "rescale = 1/255.0" в Keras ImageDataGenerator(), убедитесь, что при загрузке тестового изображения делите его на 255,0, прежде чем прогнозировать его.

Обратите внимание, что вышесказанное является чистым примером;Ваше несоответствие в подготовке к обучению / тестированию может быть вызвано другими причинами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...