Я реализовал предложенную модель GAN из Paper Edge-Connect (https://github.com/knazeri/edge-connect) в Керасе и провел несколько тренингов по набору данных KITTI. Сейчас я пытаюсь выяснить, что происходит внутри моей модели, и поэтому у меня есть несколько вопросов.
1. Начальное обучение (100 эпох, 500 партий / эпоха, 10 образцов / партия)
Сначала я обучил модель, как предложено в статье (включая потерю стиля, восприятия, L1 и состязательности)
На первый взгляд модель сходится к хорошим результатам:
![text](https://i.stack.imgur.com/3D7Tl.png)
Это выход генератора (слева) для маскированного входа ( справа)
Большинство графиков с тензорной доски также выглядят довольно неплохо: (Это все значения из GAN-модели, содержащие общие потери генератора (GENERATOR_Loss), различные потери на основе сгенерированного изображения (L1, на c, стиль), а также состязательная потеря (DISCRIMINATOR_loss)
![](https://i.stack.imgur.com/RsXD9.png)
При внимательном рассмотрении дискриминатора все выглядит иначе. Дискриминатор для сгенерированных изображений постоянно увеличивается. Потери при обучении дискриминатору (50/50 фальшивых / реальных примеров) не меняются вообще:
![](https://i.stack.imgur.com/o5jCA.png)
И при взгляде на Гистограмма активаций выхода дискриминатора всегда выдает значения около 0,5.
![](https://i.stack.imgur.com/y3fjd.png)
Подходя к моим вопросам / выводам, где я буду признателен за ваши отзывы:
- Итак, я предполагаю сейчас То, что моя модель многому научилась, но ничего не узнала от дискриминатора, верно? Все результаты основаны на потерях, отличных от состязательных потерь?
- Похоже, что дискриминатор не смог угнаться за генератором, генерирующим лучшие изображения. Я думаю, что активация дискриминаторов должна как-то рано переходить к двум пикам около 0 (фальшивые ярлыки) и 1 (реальные ярлыки) и оставаться там?
- Я знаю, что моя конечная цель заключается в том, чтобы дискриминатор выдает 0,5 вероятности как для реального, так и для поддельного ... но что это значит, когда это происходит с самого начала и не меняется во время тренировки?
- Я тоже прекратил обучение рано? Может ли дискриминатор догнать (так как выходной сигнал генератора больше не меняется) и устранить последние крошечные неисправности генератора?
2. Таким образом Я начал вторую тренировку , на этот раз только используя состязательные потери в генераторе! (~ 16 эпох, 500 партий / эпоха, 10 образцов / партия)
![](https://i.stack.imgur.com/XfLwh.png)
На этот раз дискриминатор, по-видимому, способен различать реальное и поддельное через некоторое время. (prob_real - это средняя вероятность, присвоенная реальным изображениям и наоборот) Гистограмма активаций также выглядит хорошо:
![enter image description here](https://i.stack.imgur.com/Boa4S.png)
Но как-то после примерно 4 тыс. образцов все начинает меняться, и примерно в 7К он расходится ... Также все сэмплы из генератора выглядят так:
![enter image description here](https://i.stack.imgur.com/0LxwP.png)
По моей второй части вопросы / выводы:
- Должен ли я провести предварительную подготовку дискриминатора, чтобы он получил преимущество? Я предполагаю, что нужно как-то уметь различать реальное и фальшивое (выводя большие вероятности для реального и наоборот), чтобы генератор мог извлечь из него полезные вещи? Должен ли я тренировать дискриминатор несколько раз, обучая генератор на один шаг по той же причине?
- Что произошло во второй тренировке? Была ли скорость обучения для дискриминатора слишком высокой? (Опция: ADAM, lr = 1.0E-3)
- Многие подсказки в inte rnet для тренировок GAN направлены на увеличение сложности задания дискриминаторов (шум метки / переворот метки, шум экземпляра, сглаживание метки и т. д. c). Здесь я думаю, что дискриминатор скорее нужно усилить? (-> Я также обучил Dis c, не меняя генератор, и он хорошо сходится)
Спасибо, ребята, за ваш вклад!