Реализация CRF Loss для семантической сегментации - PullRequest
0 голосов
/ 04 ноября 2019

Я хотел бы реализовать потерю CRF в TensorFlow. Скажем, мой код выглядит следующим образом:

# input to the model and ground truth segmentation mask
image = tf.placeholder(tf.float32, [None, N, M, 1])
gt_mask = tf.placeholder(tf.float32, [None, N, M, n_classes])

# prediction:
pred_mask = my_cnn(image)
pred_mask = tf.nn.softmax(pred_mask)  # has shape = [None, N, M, n_classes]

# compute CRF loss 
crf_loss = ... ?

В частности, формулировка crf_loss должна быть дифференцируемой, чтобы я мог использовать SGD для обучения модели.

Я нашел эту статью, в которой говорится, что мы можем использовать квадратичную релаксацию модели Поттса (уравнение 4, стр. 4). Любая идея о том, как реализовать все это в TensorFlow в моем примере?

Спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 07 ноября 2019

Более подробно изучив литературу, я обнаружил, что CRF обычно реализуется в полностью сверточных сетях как RNN, как это предлагается в очень красивой статье ICCV 2015 от Zheng et al.

Они также поделились реализацией здесь , в то время как другая реализация (которая должна быть более гибкой) была распространена здесь .

@ Jindřich указалчто здесь должен быть какой-то полезный код .

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