Можно ли использовать GAN для заполнения только недостающей части изображения вместо генерации всего изображения? - PullRequest
0 голосов
/ 20 февраля 2019

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

Диапазон пикселей изображения от -7000 до 180000. Я нормализую его до [0,1].

Есть ли какое-нибудь решение для его улучшения?

1 Ответ

0 голосов
/ 20 февраля 2019

Это действительно возможно с GAN.На самом деле заполнение недостающих частей изображения является одним из самых крутых приложений GAN.Вы можете найти именно то, что вам нужно, в теме Изображение с изображениями этой превосходной статьи о приложениях GAN.

Вы можете найти реализованный код Inpainting для изображений здесь.https://github.com/pathak22/context-encoder

У вас может быть огромный (по крайней мере, порядка 10000 с) полный набор данных изображений.Функция потери, которую я бы предложил, заключается в следующем, где она может создать битву между генератором (G) и дискриминатором (D).

def loss_func(logits_in,labels_in):
    return tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=logits_in,labels=labels_in))


G = generator(z)
D_output_real,D_logits_real=discriminator(real_images)
D_output_fake,D_logits_fake=discriminator(G,reuse=True)

D_real_loss=loss_func(D_logits_real,tf.ones_like(D_logits_real)*0.94) #Smoothing for generalization
D_fake_loss=loss_func(D_logits_fake,tf.zeros_like(D_logits_real))
D_loss=D_real_loss+D_fake_loss

G_loss= loss_func(D_logits_fake,tf.ones_like(D_logits_fake))

Однако GAN являются чрезвычайно дорогими в вычислительном отношении.Поскольку битва между генератором и дискриминатором может длиться даже недели, чтобы получить желаемый результат, особенно если разрешение изображения высокое.Просто чтобы дать вам некоторую подсказку, GAN, который я запускал на своем RTX 2080 Ti GPU для генерации изображений, работал 3 недели, чтобы дать приемлемые результаты с 200000 (218 160) изображений размером.

Так что наберитесь терпения и удачи.

...