Принимая во внимание проблему сегментации изображения дистанционного зондирования, когда на изображениях высокого разрешения генерируются двоичные маски наземных истин, а входными данными являются изображения низкого разрешения, между источниками данных может существовать сдвиг в 1 пиксель. Например, я генерирую 10-метровые бинарные маски присутствия растительности на данных с разрешением 0,5 м и обучаю сеть на данных с разрешением 10 м. Сдвиг вызван несовершенным перекрытием данных 10 м и 0,5 м.
Я использую модифицированный UNet, который принимает в качестве входных данных спутниковые данные 10 × 16 м для прогнозирования двойных масок растительности 16 × 16. Я заметил, что случайные сдвиги на местах двоичных масок истинности заставляют обучаться разрушаться для небольших объектов, таких как ниже:
# ground truth
0 0 0
0 1 0
0 1 0
# predicted
0 0 0
0 0 1
0 0 1
Этот сценарий приводит к высокой перекрестной энтропии, нулевому количеству кубиков иноль долгов. Однако - прогнозы могут быть правильными из-за проблемы с наземными данными правды.
Я попытался создать сдвиги в один пиксель в маске предсказания и назначить функцию стоимости, чтобы смещенные предсказания использовались для вычисления кросс-энтропии, если это улучшает оценку костей, улучшается по некоторому порогу, например. (псевдокод)
def generate_shifts(arr):
# returns a list of arrays shifted by 1 px in each direction
def shift_bce(true, pred, cost = 0.2):
base_bce = binary_crossentropy(true, pred)
shifted_preds = generate_shifts(pred)
shifted_bces = tf.map_fn(binary_crossentropy, shifted_preds)
best_bce = tf.argmax(shifted_bces)
if shifted_bces[best_bce] < base_bce - cost:
# return the shifted BCE if it performs C better than base BCE
return shifted_bces[best_bce]
else:
return base_bce
Я думал, что это решит проблему, но это создает другие проблемы: эффекты границы, размытые результаты и нестабильные потери при обучении / проверке.
Мой вопрос:
- Существуют ли какие-либо функции расстояния или варианты функций потерь, которые можно использовать для вознаграждения за счет / форму, а не только за идеальные по пикселям маски?