Попиксельная потеря для сегментации изображения со случайными сдвигами в наземных данных истинности - PullRequest
0 голосов
/ 21 октября 2019

Принимая во внимание проблему сегментации изображения дистанционного зондирования, когда на изображениях высокого разрешения генерируются двоичные маски наземных истин, а входными данными являются изображения низкого разрешения, между источниками данных может существовать сдвиг в 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

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

Мой вопрос:

  • Существуют ли какие-либо функции расстояния или варианты функций потерь, которые можно использовать для вознаграждения за счет / форму, а не только за идеальные по пикселям маски?
...