Я недавно изучал GAN. Тем не менее, мне было любопытно, почему GAN не максимально использовал возможности трансферного обучения, которое является обычной практикой при обнаружении объектов, semanti c segmentation et c.,
Насколько далеко как я знаю, по крайней мере, в случае трансляции изображений входом генератора обычно является случайный шум, который полностью отличается от предварительно обученной классификации CNN.
Однако я обнаружил, что классификатор используется в ACGAN, который применяет многозадачность в дискриминаторе. т.е. ожидается, что дискриминатор выполнит предсказание реального / поддельного и класса данного изображения. Таким образом, ACGAN доказал свою эффективность для повышения качества сгенерированных изображений, хотя в части классификации не использовалась предварительно обученная CNN, потому что это многозадачная ветвь внутри дискриминатора.
Поэтому я подумал использовать предварительно обученную CNN например Ale xnet для замены ветки классификации в дискриминаторе ACGAN. Однако другой проблемой является диапазон входных данных.
Например, в PyTorch вход FCN8, который использует предварительно обученный VGG16, находится между 0 и 1, и каждый канал вычитается на соответствующее среднее значение ([103.939 / 255., 116.779 / 255., 123.68 / 255.] В порядке BGR). Однако вход генератора обычно нормализуется до [-1,1] путем вычитания интенсивности каждого пикселя 0,5 и деления на 0,5. Последний уровень генератора обычно - «tanh», который также равен [-1,1]. Как мы можем поступить с выходом генератора, чтобы впоследствии передать его классификатору? Мы могли бы, конечно, изменить масштаб до [0,1] и выполнить для него среднее вычитание, но мне было интересно, будет ли нарушен градиентный поток.
Есть ли кто-нибудь, кто поделится преимуществом использования предварительно обученного CNN в GAN обучение? Спасибо!
Да, раз уж ACGAN пытался, думаю, кто-то пробовал это раньше и не получил хороших результатов.