pix2pixHD模型设计详情

目录

pix2pixHD

提高真实性和分辨率

Generator

Discriminator

损失函数

改进输入

学习实例级别的特征编码


pix2pixHD took Pyramid Methods:

  1. First output low-resolution pictures.
  2. Use the previously output low-resolution picture as input to another network, and then generate a higher-resolution picture.

图一

pix2pixHD

如果用图形学的方法渲染真实场景的图像,需要对每个部分建模,非常昂贵、耗时。若能从数据中学习一个模型,即可将此过程转化为模型学习和推断,渲染新的场景只需要重新在数据集上训练;用户也可通过语义自定义,无需重新对几何形状、材质、光线建模。

pix2pix存在两个问题:1.用GAN很难生成高分辨率的图       2.高分辨率图中会损失细节
为支持交互语义操作,作者试图在两个方向上扩展模型:1.使用实例级别的目标分割信息,将相同类别的不同物体分为不同实例   2.为同一输入生成多种输出,方便改变物体的外观

此外,作者提出了新的损失函数和新的多尺度G和D,不仅可以使用条件GAN训练高分辨率的图像的过程稳定下来,也可以得到更好的结果。

提高真实性和分辨率

具体来说,作者对结构做出了以下三个部分的改动:

1.不断进行提纯的G(Coarse-to-fine generator)
2.多尺度D(Multi-scale discriminators)
3.对抗学习目标函数

Generator

将G分为两个子模块:全局G1和局部增强G2,全局G1操作1024x512大小的图像,局部增强G2 输出与其接受的输入相比,在宽和高上各扩大两倍的图像。要合成更高分辨率的图像,再往上加局部增强G2模块即可


在这里插入图片描述

训练时,先在低分辨率图像上训练残差网络G1,再和另一个残差网络G2在高分辨率图像上一起fine-tune。

Discriminator

为生成高分辨率的真假图像,D必须有大的感知野。因此须有更深的网络或更大的感知野。但这两个选项都可能会造成过拟合,且需要大量内存。

作者就此提出多尺度D,使用三个有相同网络结构但对不同大小图像进行操作的D,对真假高分辨率图像进行2或4的下采样。对最粗糙的图像(分辨率最小的)进行操作的D有最大的感知野,对图像有更全局的认识,指导G产生全局上一致的图像对最细致的图像(分辨率最大的)进行操作的D专门指导G生成细节。

这让训练提纯G更容易,因为将低分辨率的模型扩大到高分辨率只需要在增加一个额外的D,而无需从头开始训练。若没有多尺度D,生成图中会出现很多重复的图案。

损失函数

D是多尺度的,因此修改GAN的loss部分为一个多任务问题:
在这里插入图片描述
在上述loss基础上,因为模型结构中存在多尺度,所以增加一个特征匹配loss,用于稳定GAN的训练。从D的多个层中提取特征,学习匹配真实图像和合成图像的中间表示:
在这里插入图片描述

其中,k表示第k个D网络,i表示D网络中的第i层。s表示待转换图片,x表示转换目标图片,G(s)表示G网络生成的目标图片。


在这里插入图片描述

最后的总loss如上式所示。

下面是对于从语义标签图生成逼真图像的两个优化

改进输入

现有的图像合成方法只利用语义标签图(semantic label map)每个像素值代表其归属的目标的类别的图,但无法区分同一类别的不同物体而实例级的语义标签图通过赋予每个目标唯一的ID弥补这个不足

如何实现呢?一般来说有三种方法:

  • 直接传入网络
  • 使用one-hot向量
  • 为每个类预先分配固定数量的特征映射

但以上方法都有较明显的缺点,实施起来较为困难。作者分析,实例图提供的最重要的信息是物体的边界。为了提取该信息,首先计算出实例边界图(Instance boundary map,若某个像素的ID与周围四个像素中的任意一个不同则为1,否则为0)。
在这里插入图片描述

将实例边界图与用one-hot向量表示的语义标签图拼接作为G的输入。
D的输入是实例边界图,语义标签图,真/假图像在通道上的拼接


the instance map can be seen as the label map plus the boundary map, and these two are concatenated together to feed into the network.

学习实例级别的特征编码

图像合成是一个一对多映射问题(one-to-many)。现有的一对多模型关注图像的颜色、纹理的整体变化,无法解决对图像在物体级别上的控制作者提出加入额外的低维特征通道作为G的输入。由于特征通道是连续量,理论上可以生成无限个图像。

为了得到低维特征,需要训练一个编码器E,为每个实例生成与ground truth中的目标相对应的低维特征。为了保证在每个实例范围内的特征是一致的在编码器的输出处加入一个实例级的平均池化层,计算实例的平均特征,然后将平均特征向该实例的所有像素位置传播
在这里插入图片描述

训练好编码器后,在训练图像上的每个实例上跑一遍,记录下得到的特征,接着为每个语义类别的特征进行K均值集簇,每个簇为每个特征编码一个特定的风格,如一条路的材质是沥青还是卵石,这样就给自定义风格提供了方案。在inference阶段,随机选择一个簇作为编码的特征,与标签图拼接,作为G的输入。

与其他模型生成的高分辨率图像比较,该模型生成的图像细节更真实,更清晰。

To generate different outputs, we use a feature embedding scheme. First, during training, the original image is put into a feature encoder network to generate a feature map. Then we run instance-wise pooling on the output map. For each instance in the image(例如图中的一个小汽车), we average the features, then broadcast the averaged value to the entire instance(剩余的小汽车). We repeat the step for all the instances. This feature map is then concatenated with the label map, and go through the generation network to generate the final image. This whole process is trained end-to-end, so the feature map should encode appearances in the original image, like the color of a car or the texture of a road. Then, at inference time, we can just change the feature maps, and we are able to get different output images.

【论文阅读】从pix2pix到pix2pixHD_Gillian_z-CSDN博客

pix2pixhd是一种基于条件GAN的图像转换方法,可以将一种类型的图像转换成另一种类型的图像。在训练自己的数据集时,需要以下步骤: 1. 准备数据集:准备一组成对的图像,例如输入图像和对应的输出图像。这些图像应该尽可能地相似,以便模型可以学习到它们之间的映射关系。可以使用图像编辑软件手动创建这些图像,或者从现有的数据集中挑选相关的图像。 2. 将数据集转换成pix2pixhd所需的格式:pix2pixhd要求输入和输出图像分别存储在不同的文件夹中,并且文件名应该相同。可以使用脚本将数据集转换成这种格式。 3. 下载并安装pix2pixhd代码库:pix2pixhd是一个开源的代码库,可以在GitHub上找到。需要安装相关的依赖库和软件,例如PyTorch和CUDA。 4. 训练模型:使用pix2pixhd的训练脚本来训练模型。需要指定训练数据集的路径、模型参数和训练周期等参数。训练的过程可能需要几个小时或几天,具体时间取决于数据集的大小和计算机性能。 5. 测试模型:训练完成后,可以使用pix2pixhd的测试脚本来测试模型的效果。需要指定测试数据集的路径和模型参数等参数。测试的结果可以用来评估模型的性能和调整模型参数。 总之,训练自己的数据集需要一定的技术和计算机知识,需要花费一定的时间和精力来完成。但是,pix2pixhd是一种非常强大的图像转换方法,可以用于许多应用领域,例如图像编辑、人物卡通化、场景生成等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pengsen Ma

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值