本周基本工作总结20211121
(一)stygan3预训练模型使用
本周主要对stylegan3发布的源代码和预训练模型进行简单复现。
实现了服务器上基本cuda、conda环境的搭建 - conda环境确实比较好用,相关过程在专栏里作了简单记录。
(二)stygan3运行结果分析
有一个很明显的现象,不知道gan2有没有类似现象




很特别的现象:在皮肤表面会有环形纹理或者说类似轮胎印记的痕迹。几乎在每一张图片中都有类似的表现,并且基本只在皮肤裸漏区域出现而在毛发覆盖区域并不会。
与stylegan2的结果对比 -> 2生成的图像更加真实,3改进了平移旋转不变性




分析原因:直观感觉stylegan3生成器对纹理、毛发等细节信息过分拟合,很大程度上超出了判别器的判定能力。或者说,生成器认为这样的图片在判别器中能得到高分。
(三)GAN网络的想法
基本思想是D、G相互博弈,理想状态让二者达到均衡。但实际运用中,貌似将这个阶段人为分成了两部分,即先优化D,再优化G,且训练过程中设置trueimage_label=1,fake=0,这样训练之后,生成器会倾向于生成判别器打分高的图片,所以生成器的生成高度依赖于判别器打分。也就是说,一旦生成器出现某种偏好或者误判,就会导致生成器生成某种极端图像。
考虑如何解决这一问题:(1)多个判别器打分-类似随机森林的思想,这样可以避免单一判别器偏好对生成器造成的极端影响;(2)限制判别器对fake数据的打分不能过高(低于某一阈值),并且考虑真实数据的label设置,可以在首次训练设置为1,之后逐步降低。这样或许一定程度能够隐藏判别器偏好。
还有一种思路:让D具有联想功能,比如上图中stylegan的结果,乍一看确实比较真实,但人脑的联想功能会让我们自动将每张图片放到一定的语义背景下,比如人在聚会吃饭等,这样乍一看真实的图片经过人脑分析后就会发现明显的不合理之处。
如果D具有这种联想功能,其实是对D判别真假的能力附加了buff,从而进一步提升生成器效果。这个功能可以通过上边多个判别器的情况实现,只需要对每个判别器用不同场景下的图片分别训练就可以。
GAN在对抗中生成足够真实的图片,但关于“真实”这一信息的来源仅仅来自于判别器的反馈,实质上神经网络并没有理解生成图片的语义信息,从而会出现一些我们看到的很“荒诞”的图片,但却被网络认为是真实的。
什么意思呢?就是说GAN的认知来源很狭隘——仅判别器,而没有更多的反馈信息。
这与现实并不符合,以豹子和羚羊为例,二者相互对抗的结果是在速度上的不断提升,但一昧增长速度带来体型上的变化可能会导致在觅食、休憩等方面的不适应,从而也会导致灭绝。
一方面,GAN只知道生成的图片得分低,想办法要提高,但得不到为什么得分低的信息
其二,就是只依赖于一个判别器,生成器一旦找到得分高的产物,会投其所好,生成大量类似的图片。

(四)GAN生成video
现有思路:假定每一帧的数据都包含在了隐空间里,需要做的是找一条路径,使生成的video比较真实。
实际中的video不止是开始到结束帧的简单插值,其中也会有重复帧、关联帧等各种各样的联系,所以对于生成video来说,单纯gan感觉并不会奏效,需要附加RNN之类的记忆属性,或者生成video的过程需要基于一定的语义指导。
需要找的是基于语义指导的path,并且每一步不一定都在变化,也有重复和倒退的情况出现(速度问题),结合前几天看的mh方法,可以对插值后的结果过滤,比如下一帧以一定的概率改变,也有一定的概率保持不变(类似马氏性)。
目前需要做的工作:
stylegan3复现 - √
隐空间嵌入 - 尚未实现
语义编辑 - 尚未实现(即将要做的工作)
————————————————————————————————
上边就是复现的工作,自己新的方法尝试
找path :基本找到方向之后,只需要在某一方向上变动基本都能实现属性变化的效果,关键就是使这个过程尽可能真实。
需要有一个衡量真实的标准,只要建立了这个标准,就能在现有方法基础上添加标准观察效果如何,而不需要自己再去重新找某一种特殊的路径,因为不同背景下“真实”路径并不一样,很难找到一条通路(“每个人通往成功的道路都是不同的”)
那我目前的思路:(这两个思路都需要在方向确定的情况下实现)
1)训练一个适用于video的判别网络 - 具体准备还需要结合"视频"相关概念确定
2)将视频看作一条马氏链,且状态转移只能走一步,利用转移概率对该问题进行建模。
每次只能停留或向前走一步(以一定的概率),且如果变动的话,相应幅度就是转移概率。
尝试能不能把这个马氏过程的模型建立出来! - 我今晚可以试一下,如果先能把语义编辑那个工作搞定的话~
------------------------------> 神经网络需要做的就是计算转移概率矩阵