U-net низкоконтрастные тестовые изображения, прогнозируемый вывод - серый квадрат - PullRequest
0 голосов
/ 23 октября 2018

Я запускаю unet с https://github.com/zhixuhao/unet, но когда я запускаю unet, все предсказанные изображения становятся серыми.Я получаю сообщение об ошибке, в котором говорится о низкоконтрастном изображении для моих тестовых данных. Кто-нибудь имел или решил эту проблему?

Я тренируюсь с 50 ультразвуковыми изображениями и получаю около 2000/3000 после увеличения, на 5 эпохах с 300 шагами вэпоха и размер партии 2.

Большое спасибо заранее Елена

1 Ответ

0 голосов
/ 04 января 2019

После того, как вы убедились, что ваш конвейер данных правильный.Здесь есть несколько вещей, на которые стоит обратить внимание, я надеюсь, что одна из упомянутых ниже поможет:

1.Выберите правильную функцию потерь Двоичная кросс-центропия может привести вашу сеть в направлении оптимизации для всех меток, теперь, если у вас есть несбалансированное количество меток на вашем изображении, она может нарисовать вашу сеть, чтобы вернуть либо белый, серый илипредсказания черного изображения.Попробуйте использовать коэффициент потери кубика

2.Измените строку в testGenerator В data.py существует проблема, которая, по-видимому, является проблемой, а метод testGenerator - это следующая строка:

img = img / 255

Измените ее на:

img /=255. 

3.Уменьшите скорость обучения , если ваша скорость обучения слишком высока, вы можете сходиться в неоптимальной оптиме, которая также имеет тенденцию оптимизировать только для серых, черных или белых предсказаний.Попробуйте скорость обучения около Adam(lr = 3e-5) и обучайтесь достаточному количеству эпох, вы должны напечатать потерю костей, а не точность, чтобы проверить вашу конвергенцию.

4.Не используйте функции активации для последнего набора сверток Для последнего набора сверток, то есть 128-> 64 -> 64 -> 1, функция активации не должна использоваться!Функция активации приводит к исчезновению значений!

5.Ваш метод сохранения может иметь «ошибку» , убедитесь, что вы масштабируете изображение до значений от 0 до 255 перед сохранением.Skimage обычно предупреждает вас с низким уровнем контрастности изображения.

from skimage import img_as_uint

io.imsave(os.path.join(save_path,"%d_predict.tif"%(i)),img_as_uint(img))
...