Я надеюсь обучить Unet сегментировать очень простые данные изображения (примеры ввода, ожидаемый прогноз и окончательный прогноз с пороговым значением ниже).
Кажется, Unet также изучает величины пикселей. Например, если я передаю ему изображение из другого источника, который использовал более высокое время экспозиции (поэтому объекты выглядят одинаково, но интенсивность пикселей может сильно различаться по величине), то алгоритм с треском проваливается.
Я пробовал разные методы предварительной обработки ad ho c, чтобы решить эту проблему. Я пробовал z-скоринг изображений перед тренировкой, ie:
img = (img - np.mean(img)) / np.std(img)
Я также пытался использовать keras ImageDataGenerator для увеличения своих данных. У меня нет четкого представления о том, что происходит под капотом каждого из этих вычислений (и особенно о том, как они взаимодействуют друг с другом). Я также обнаружил, что когда я выполняю стандартизацию, такую как приведенная выше, это искажает входное изображение, и я больше не уверен, как интерпретировать вывод. Как мне восстановить первоначальную структуру, которая меня интересует?
Я бы очень признателен за любые указания на базовые c способы решения этой проблемы. Моя конечная цель - обеспечить подачу входных изображений, как показано ниже, с разным распределением пикселей, но с очень стабильной морфологией объекта, и обучить Unet прогнозировать 2 класса, как показано ниже (по существу, только передний план и фон).
Примечание. Я адаптирую эту реализацию Kaggle для Unet: https://www.kaggle.com/keegil/keras-u-net-starter-lb-0-277