摘要:


  1. 模型介绍
  2. 工作细节
  3. 测试
  4. 总结


一、模型介绍

Neural-Texture-Extraction-Distribution是一种用于可控人物图像合成的神经纹理提取和分布操作。它可以用于控制参考图像的姿势和外观,从而实现对人物图像的精细控制。该方法使用了一种称为“分布式纹理表示”的技术,可以将人物图像分解为多个部分,并对每个部分进行纹理提取和分布操作。这种方法可以在保留人物图像细节的同时,实现对图像的高度可控性。该方法已经在CVPR2022会议上发表的论文中进行了详细介绍,并在多个可控人物图像合成任务中取得了令人印象深刻的结果。

Neural-Texture采用UNet设计,具有下采样、瓶颈和上采样路径以及跳过连接。它用DenseNet体系结构中的Dense块取代了卷积层和最大池化层。密集块包含像ResNet中一样的残差连接,只是它们连接而不是求和先前的特征图。

这就能够看出他的优越性,不会重复利用相同的特征,减少了资源的占用和模型的参数。

对于模型参数,下图可以看到,模型除了一个Layer之外,其他两个层则是该模型的创新之处了,首先是一个Transition Down也就是TD层,以及最后一个TU层,通过这么一些参数便构成了我们模型的核心。

基于Gan的穿搭变换模型_图像合成


二、工作细节

1.核心训练输出

运行源代码文件中的训练代码,可以得到部分的输出如下,我们可以看到各个评估模型优劣的指标
Epoch 0 took 83+24 sec. loss = 7.43885 | jacc = 0.24205 | acc = 0.55149 || loss = 6.79203 | jacc = 0.25670 | acc = 0.56315 (BEST)
Epoch 1 took 84+25 sec. loss = 6.46792 | jacc = 0.29577 | acc = 0.64026 || loss = 6.33115 | jacc = 0.30504 | acc = 0.64557 (BEST)

2.损失函数设计

基于Gan的穿搭变换模型_API_02


第二个比较关键的就是该模型的损失函数设计,我选用的是交叉熵作为损失函数,该模型训练800次的模型损失曲线如图所示

三、测试

可以看到,通过一个参考的图片,我们可以生成新的人穿上这件衣服的样子,并且还可以通过简单绘制肢体来调整pose


四、总结


基于Gan的穿搭变换模型_损失函数_03


上图是第一次跑出来的结果,我非常的激动。

在模型训练和测试过程中,我遇到过很多困难,但是随着自己的不断思考和不断学习他人先进的经验,我逐渐的走出了属于自己的一条路。非常感谢这一次宝贵的经验,我不仅仅构建了Neural-Texture模型,更是构建了我今后的学习深度学习的道路


当然其中也少不了Intel公司的支持,我在比赛中使用了:


Intel® oneAPI Base Toolkit:这个工具包是 oneAPI 其他产品的基础,包含了几个在 Parallel Studio中常用的软件以及 icc 编译器、MPI、DPCPP 等。


使用实例:

import torch

from intel_extension import IntelAPI

from neural_texture_extraction import NeuralTextureExtractionModel


# 创建NeuralTextureExtractionModel实例

model = NeuralTextureExtractionModel()


# 创建IntelAPI实例

intel_api = IntelAPI()


# 加载预训练模型权重

model.load_state_dict(torch.load('pretrained_model.pth'))


# 设置输入图像

input_image = torch.randn(1, 3, 256, 256) # 以示例为目的,使用随机生成的输入图像


# 使用Intel API进行加速

input_image = intel_api.preprocess(input_image)


# 使用模型进行推理

output_image = model(input_image)


# 使用Intel API进行后处理

output_image = intel_api.postprocess(output_image)


# 处理输出图像,例如保存或显示

output_image.save('output_image.jpg')


对于我模型的构建和训练有莫大的帮助。再次表示感谢。