Работа с функцией потерь SSIM в тензорном потоке для изображений RGB - PullRequest
0 голосов
/ 14 октября 2018

Я хочу использовать SSIM метрика в качестве функции потерь для модели, над которой я работаю, в tenenflow .SSIM должен измерить сходство между моим восстановленным выходным изображением моего шумоподавляющего автоэнкодера и входным неповрежденным изображением (RGB) .

Насколько я понял, для использования метрики SSIM в тензорном потоке изображения должны быть нормализованы к [0,1] или [0,255], а не [-1,1].После преобразования моих тензоров в [0,1] и применения SSIM в качестве функции потерь, восстановленное изображение становится черно-белым, а не цветным RGB-изображением.

tf.reduce_mean(tf.image.ssim(reconstructed, truth, 1.0))

Моя модель работает нормально с MSE (среднеквадратическая ошибка), восстановленные изображения являются красочными (RGB) .

с использованием tf.losses.mean_squared_error(truth, reconstructed) восстановленное изображение будет изображением RGB, в то время как использование SSIM даст мнеодномерное изображение.

Почему использование SSIM в качестве функции потерь дает мне результат, отличный от MSE (с точки зрения восстановленных каналов изображения) в тензорном потоке?

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Я смог решить проблему, изменив динамический диапазон изображений на 2.0 , поскольку у меня есть изображения, масштабированные от [- 1, 1] до:

loss_rec = tf.reduce_mean(tf.image.ssim(truth, reconstructed, 2.0))

И поскольку более высокое качество изображения проявляется при более высоком значении SSIM , мне пришлось минимизировать отрицательную моей функции потерь (SSIM) чтобы оптимизировать мою модель:

optimizer = tf.train.AdamOptimizer(learning_rate).minimize(-1 * loss_rec)

0 голосов
/ 26 июня 2019

В документации TensorFlow говорится, что преобразование цветового пространства не применяется.

https://www.tensorflow.org/api_docs/python/tf/image/ssim

"Примечание. Истинный SSIM определен только в оттенках серого. Эта функция не выполняет преобразование цветового пространства. (Если входное значение уже YUV, оно будет вычисленоYUV SSIM средний.) "

0 голосов
/ 16 ноября 2018

SSIM предназначен только для измерения разницы между двумя сигналами яркости.Изображения RGB преобразуются в оттенки серого перед измерением сходства.Если бы это было передано обратно в функцию потерь, он не знал бы, теряет ли изображение насыщенность цвета, потому что оно не будет отображаться в метрике ошибки.Это просто теория.

...