问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

StyleGAN论文笔记+修改代码尝试3D点云生成

创作时间:
作者:
@小白创作中心

StyleGAN论文笔记+修改代码尝试3D点云生成

引用
CSDN
1.
https://m.blog.csdn.net/yfy1127yfy/article/details/94627685

StyleGAN是NVIDIA提出的一种生成对抗网络(GAN)模型,通过引入"风格"的概念,实现了对图像生成过程的更精细控制。本文详细介绍了StyleGAN的核心贡献和网络结构,并展示了作者对源码的修改以尝试生成3D点云的效果。

一、介绍

虽然目前的GAN生成的图片质量和分辨率都有了很大提高,但还是存在一些问题:

  1. 生成器依然是个黑盒,对生成图片过程中的各个方面依然无法理解,比如随机特征的起源。
  2. 潜在空间的性质也没有得到很好的理解,已证明的潜在空间插值并没有提供定量的方法来比较不同的生成器。

本文设计的生成器,揭示了控制图像合成过程的新方法。我们的生成器,起始于学习到的常量输入,并且在之后的每个卷积层,基于潜在代码,调整图片的“风格”,因此直接控制图像特征在不同尺度下的强度。

二、主要内容

1、基于风格的生成器网络结构

右侧Noise部分,给生成图片带来细节上的多样性:

  • 高斯Noise先输入B
  • B是学习出的每通道scale系数,自动控制Noise对生成图片的影响大小
  • Noise在每次卷积之后输入(相当于bias)

左侧z,w部分,控制生成图片风格:

  • 把输入z映射到中间值w,z就是GAN网络常见的输入噪声。
  • 通过学习得到的仿射变换A,自动控制w变成图片的“风格”style
  • style输入到每个卷积+B之后的AdaIN(AdaIN是正则化,所以最后)中,每次输入都是对生成网络g的一次风格控制

中间生成网络g,是生成图片的主干:

  • 起始于常量Const,这个常量并不能控制图片风格。
  • g网络共18层,每两层2倍升采样一次,输出为高清的1024*1024
  • 最后输出为RGB

AdaIN的定义:
表示每个feature map
表示style值,

2、风格混合

在每次训练中,使用两个潜在值z1,z2,而不是一个z来训练数据。在生成图片时,替换输入两个不同的潜在值z1,z2,映射得到w1,w2,输入到AdaIN中的风格参数是两个不同的值,生成两个被z1、z2同时控制的图片。

图中,有两组图片source A 和 B,分别用潜在值z1(n=6)和z2(n=5)生成。然后用z1和z2混合生成图片,在生成网络g中,不同尺度的层处,使用z2,其余位置用z1,可以观察到不同尺度输入z2带来的效果。

  • Coarse行:
    在4x4、8x8处,输入z2,B 控制了高层次信息,比如姿态、发型、脸型、眼镜等。
    其余位置输入z1,A控制了中、低层次信息,比如颜色、皮肤细节。

  • Middle行:
    在16x16、32x32处,输入z2,B 控制了中层次信息,比如一部分发型、眼睛开闭等。
    其余位置输入z1,A控制了高、低层次信息,比如姿态、脸型、眼镜,以及颜色等细节。

  • Middle行:
    在64x64~1024x1024处,输入z2,B 控制了低层次信息,比如颜色、皮肤细节等。
    其余位置输入z1,A控制了高、中层次信息,比如姿态、发型、脸型、眼镜,以及眼睛开闭等细节。

3、 随机变化

人体肖像中有很多方面可以被认为是随机的,比如头发、胡茬、雀斑或皮肤毛孔的精确位置。本文通过在卷积层后加入像素级(特征值矩阵)的噪声来实现。

4、解纠缠

一个潜在空间,包含了多个线性子空间,这些子空间各自控制着变化的一个因素,潜在空间的采样概率应该与训练数据中对应的数据密度吻合,但是由于训练数据有限,这两者往往不吻合,这会导致一些问题。

(z这个噪声输入,根据不同的代码,是符合某一种分布的,但是训练数据有限,肯定无法覆盖z的分布,部分z是没有对应的训练数据的)

作者举了个例子,以头发长短和性别为特征:

  • 假设训练集里没有长发男性,那么训练集特征的分布就是(a),左上角长发男性缺失。
  • 缺失的训练数据,迫使从z到训练集特征的映射成为曲线,如(b),从而使缺失对应的部分在z中消失,以防止对无效的采样。
  • 使用f(z)=w的后,从z到w的学习映射能够“撤消”大部分的扭曲,如图中(c)

关于这z --> w 的映射详述,以及相关的两个评价指标,在文中第四章。

三、修改源码网络生成3D的图

核心思想,就是把人脸图当成是3D空间中的一张纸,每个像素对应的xyz也输入到网络中,和rgb一起训练,然后生成xyzrgb。

当然,训练就是用的3D数据,要是先用2D训练在用输出结果转换成3D就没意义了。试了试,效果如下:

左侧为生成的3D点云,右侧为生成的2D图。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号