我最近正在学习GAN。但是,我对GAN不能充分利用转移学习功能的原因感到好奇,这是对象检测,语义分割等中的常见做法。
据我所知,至少在图像平移的情况下,生成器的输入通常是随机噪声,这与预训练的分类CNN完全不同。
但是,我发现ACGAN中使用了分类器,该分类器将多任务应用到了鉴别器中。即,期望鉴别器执行真实/伪造的预测以及给定图像的类别。因此,尽管分类部分不使用预先训练的CNN,但事实证明ACGAN可有效提高生成图像的质量,因为分类部分是鉴别器内部的多任务分支。
因此,我正在考虑使用像Alexnet这样的经过预训练的CNN来替换ACGAN的区分符中的分类分支。但是,另一个问题是输入范围。
例如,在PyTorch中,使用预训练的VGG16的FCN8s的输入介于0和1之间,并且每个通道都减去相应的平均值(in。[103.939 / 255。,116.779 / 255。,123.68 / 255。] BGR订单)。 但是,发生器的输入通常通过将每个像素的强度减去0.5并除以0.5来归一化为[-1,1]。生成器的最后一层通常是“ tanh”,也是[-1,1]。 我们如何处理生成器的输出,以后再将其输入分类器? 我们当然可以将其重新缩放为[0,1]并对其进行均值减法,但是我想知道梯度流是否会受到干扰。
有没有人可以分享在GAN学习中使用预训练的CNN的优势? 谢谢!