当前位置:网站首页>AI服装生成,帮你完成服装设计的最后一步
AI服装生成,帮你完成服装设计的最后一步
2022-06-24 22:46:00 【飞桨PaddlePaddle】
本文已在飞桨公众号发布,查看请戳链接:
AI服装生成,帮你完成服装设计的最后一步

如何用AI赋能服装设计行业,这是飞桨开发者技术专家洪力一直在思考的事。设计师构思并绘制出一件衣服后,如果可以一键生成衣服整体的效果,就可以帮助其根据成品的版型、款式等因素做出更好的设计。项目的基本思路确定以后,洪力在AI Studio平台使用飞桨框架开始实践。目前本项目可以实现服装生成,期待与更多开发者一起探讨更多可优化的地方(例如设计呈现的多样性),以下是洪力的分享。
项目背景
为了确立服装生成项目的基本设计目标,我需要寻找相关的技术。服装生成任务和其他生成任务区别之一,就是要求输出一个“干净”的衣服,不能出现花里胡哨的背景——也即要求生成器把注意力放在衣服上,而不是生成出一个完整的图片。因此在loss设计的部分,我考虑了衣服的mask蒙版部分——对于模型来说,输入的是语义分割信息,而输出的是服装图片。我在视频网站上偶然看到了SPADE的展示效果,这种“马良神笔”一般的呈现效果让我感到十分亲切,并意识到SPADE架构满足了我对模型的大概需求。但当我使用SPADE训练的时候,发现模型训练比较困难,在机缘巧合下,我又发现了一篇新的论文Semantically Multi-modal Image Synthesis。
论文详细介绍
https://aistudio.baidu.com/aistudio/projectdetail/3454453
该论文基于SPADE架构,使用deep fashion数据集,表现出不错的效果。其中Encoder的输出保留了空间结构信息,我认为这一点是该模型更容易训练的原因。基于此,我得以比较轻松地修改了自己的初版项目,并生成了服装生成项目模型框架的雏形。
项目实践
点击GET项目详细地址
https://aistudio.baidu.com/aistudio/projectdetail/3405079
问题与数据调优
在模型训练的前期我主要遇到了两个问题:
一是训练集的选取问题。
二是模型训练很慢,1个batch需要耗费几十秒。
为了解决以上问题,我按照如下步骤进行了数据处理:
1. 选取FGVC6数据集。这一数据集提供了精准的衣服各部位划分标注区域,一共有46类,如图一所示。

图1 FGVC数据集展示[1]
2. 测试时,模型输入不再需要这个GT,只需要语义分割信息,这个部分具体细节有待下文详解。
3. 输入给模型语义分割的Tensor格式为[batch_size,class_num,H,W],分别具体为[4,46,256,256],46是具体有46个label,训练时batch_size为4。
4. 另外,loss计算时需要考虑到衣服的蒙版。
5. 由于我输入的数据格式要求是256*256,因此需要把图片和语义分割信息resize,让H和W都为256。原先数据集的图片尺寸过大,H和W值甚至上千,导致resize操作消耗了很多时间。如果有疑惑的朋友问我,为什么不用crop裁剪呢?在这里有几点原因:
首先,我设计的是服装生成项目,所以模型考虑的是衣服这个整体,要尽量少地给局部信息,防止管中窥豹,让模型有自己的“格局”。
其次,一张真实的图片中,衣服本身所占的位置并不大且位置不固定,很大概率在2500*2500上裁剪出一个256*256的区域是全黑的,无法提供信息。
最后,用crop裁剪的方式处理数据,很容易导致一些标签模型可见机率很小,比如鞋子所占比例很小,容易造成生成效果的不准确。
6. 针对模型训练过慢的问题,我尝试了两步调优方案。首先,我最初采用的是在线resize ,1个batch需要耗费几十秒。总结后发现,因为我输入的图片数据格式要求是256*256,所以不太可能是前向传播tensor计算量的问题,因此可以将问题定位到数据预处理部分。于是,在飞桨开发者激励师的指导下,我第一次尝试使用离线resize,保存成npy,保证了模型训练顺利开始。此外,在离线resize保存语义分割信息时,我最初设置的npy是 [256,256,class_num],过于稀疏,占据了很多内存,只能保存1000组左右。实际上,一个像素其实只有一个标签,因此,我调整存储方式,将其保存为[256,256,1],最后可以保存为10000组左右,大大提高了存储效率。
对模型训练及损失的思考
1. 我采取了GAN作为模型主体形式:生成器主体为Semantically Multi-modal Image Synthesis的模型架构;判别器使用的是Multihead Discriminator,这样可以支持判别器的特征对齐。
2. 判别器有三个任务,它需要判别Ground Truth为True,判别生成器生成出的图片为False,同时要求判别语义分割可视化为False(改进点),这是为了帮助生成器生成更加复杂真实的纹理。
3. 为了将模型中心侧重于有衣服的区域,生成器的featloss只考虑有衣服二值(0,1)mask的部分。
4. 我将spade.py中nn.conv2d(46,128)变成普通的卷积,没有使用分组卷积,理由是46不能除尽group_num = 4。

图2 Semantically Multi-modal Image Synthesis 模型架构
loss可视化
最后对loss进行可视化,如图3所示,其中:
d_real_loss:判别器判别真实的图片为True;
d_fake_loss:判别器判别生成器生成的图片为False;
d_seg_ganloss:判别器判别语义分割可视化为False;
d_all_loss: d_real_loss + d_fake_loss + d_seg_ganloss;
g_ganloss:要求生成器生成的图片能被判别器判别为True;
g_featloss:在判别器中生成器生成的图像和真实图像特征对齐;
g_vggloss:生成器生成的图片和GT通过VGG算感知损失;
g_styleloss:生成器和GT通过Gram矩阵算风格损失;
kldloss:算一个与标准正太分布的kl散度;
g_loss:g_ganloss+g_featloss+g_vggloss+g_styleloss+kldloss。

图3 loss可视化
效果展示
It’s show time!从左往右分别为模型生成效果、Ground Truth(可以理解为模型参考答案)、模型输入的语义分割可视化。
图4 效果展示
回顾与思考
本项目还有很多值得改进的地方,如是否可以通过模型框架的优化,给衣服提供更细腻的特征控制,或者更好地提高所生成模型的多样性。我会继续在图像生成这个领域学习研究,期待未来带来更好的公开项目,也欢迎大家与我交流。
参考文献
[1] Semantic Image Synthesis with Spatially-Adaptive Normalization
[2] Semantically Multi-modal Image Synthesis
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~
边栏推荐
- Explanation of FTP protocol
- Full arrangement ii[duplicate removal of the same elements + standard backtracking]
- 当人们用互联网式的思维和视角来看待产业互联网的时候,其实已陷入到了死胡同
- Search two-dimensional matrix [clever use of bisection + record solution different from inserting bisection]
- ida中交叉引用的解析
- 02 common codes for Epicor secondary development
- Please run IDA with elevated permissons for local debugging.
- Sumati gamefi ecological overview, element design in the magical world
- 2022年云计算应用关键威胁调查
- 折叠屏将成国产手机分食苹果市场的重要武器
猜你喜欢

Pit entry machine learning: I. Introduction

How to quickly familiarize yourself with the code when you join a new company?

门店无线音箱造假?索尼回应:产品预留了有线连接接口 复杂场景下可以使用

元宇宙的生态圈

Folding screen will become an important weapon for domestic mobile phones to share the apple market

Rod and Schwartz cooperated with ZhongGuanCun pan Lianyuan Institute to carry out 6G technology research and early verification

3年测试经验,连简历上真正需要什么都没搞明白,张口就要20k?

EasyCVR国标协议接入的通道,在线通道部分播放异常是什么原因?

File system - basic knowledge of disk and detailed introduction to FAT32 file system

Intégration de la plate - forme de test continu open source de metersphere avec Alibaba Cloud Effect devops
随机推荐
Convert string array to list collection
What are the reasons for the abnormal playback of the online channel of the channel accessed by easycvr national standard protocol?
Multimodal emotion recognition_ Research on emotion recognition based on multimodal fusion
中文地址与英文地址
Left hand dreams right hand responsibilities GAC Honda not only pays attention to sales but also children's safety
【Proteus仿真】Arduino UNO+数码管显示4x4键盘矩阵按键
探索C语言程序奥秘——C语言程序编译与预处理
转行软件测试2年了,给还在犹豫的女生一点建议
Dataease template market officially released
【Proteus仿真】Arduino UNO+继电器控制照明设备
MeterSphere開源持續測試平臺與阿裏雲雲效DevOps的集成
Fake wireless speakers in stores? Sony responded: the product has reserved a wired connection interface, which can be used in complex scenarios
罗德与施瓦茨与中关村泛联院合作开展6G技术研究与早期验证
How to quickly familiarize yourself with the code when you join a new company?
算力服务网络:一场多元融合的系统革命
2个NPN三极管组成的恒流电路
Sumati gamefi ecological overview, element design in the magical world
beescms网站渗透测试和修复意见「建议收藏」
Day 04 - file IO
[day 26] given the ascending array nums of n elements, find a function to find the subscript of target in nums | learn binary search