热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AI服装生成,帮你完成服装设计的最后一步

本文已在飞桨公众号发布,查看请戳链接:AI服装生成,帮你完成服装设计的最后一步如何用AI赋能服装设计行业,这是飞桨开发者技术

本文已在飞桨公众号发布,查看请戳链接:
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】公众号

获取更多技术内容~


推荐阅读
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 本文深入探讨了 C# 中 `SqlCommand` 和 `SqlDataAdapter` 的核心差异及其应用场景。`SqlCommand` 主要用于执行单一的 SQL 命令,并通过 `DataReader` 获取结果,具有较高的执行效率,但灵活性较低。相比之下,`SqlDataAdapter` 则适用于复杂的数据操作,通过 `DataSet` 提供了更多的数据处理功能,如数据填充、更新和批量操作,更适合需要频繁数据交互的场景。 ... [详细]
  • Sapphire 测试网上线:首个支持 EVM 的隐私 ParaTime 环境
    Sapphire 测试网上线:首个支持 EVM 的隐私 ParaTime 环境 ... [详细]
  • MySQL 错误:检测到死锁,在尝试获取锁时;建议重启事务(Node.js 环境)
    在 Node.js 环境中,MySQL 数据库操作时遇到了“检测到死锁,在尝试获取锁时;建议重启事务”的错误。本文将探讨该错误的原因,并提供有效的解决策略,包括事务管理优化和锁机制的理解。 ... [详细]
  • 宏基因组学经典文献重现(一):利用ggplot2进行散点图可视化分析
    宏基因组学经典文献重现(一):利用ggplot2进行散点图可视化分析 ... [详细]
  • 如何在Android应用中设计和实现专业的启动欢迎界面(Splash Screen)
    在Android应用开发中,设计与实现一个专业的启动欢迎界面(Splash Screen)至关重要。尽管Android设计指南对使用Splash Screen的态度存在争议,但一个精心设计的启动界面不仅能提升用户体验,还能增强品牌识别度。本文将探讨如何在遵循最佳实践的同时,通过技术手段实现既美观又高效的启动欢迎界面,包括加载动画、过渡效果以及性能优化等方面。 ... [详细]
  • 本文详细介绍了图表图例的语法与配置方法,包括如何通过 `loc` 参数设置图例的位置。具体位置选项包括:'best'(自动选择最佳位置)、'upper right'、'upper left'、'lower left' 和 'lower right' 等。此外,还探讨了其他高级配置选项,如图例的字体大小、边框样式和透明度等,以帮助用户更好地定制图表图例。 ... [详细]
  • 在第七天的深度学习课程中,我们将重点探讨DGL框架的高级应用,特别是在官方文档指导下进行数据集的下载与预处理。通过详细的步骤说明和实用技巧,帮助读者高效地构建和优化图神经网络的数据管道。此外,我们还将介绍如何利用DGL提供的模块化工具,实现数据的快速加载和预处理,以提升模型训练的效率和准确性。 ... [详细]
  • 在Java应用中实现只读模式的切换方法与技巧 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 网站前端开发的核心理念与必备技能解析 ... [详细]
  • 老电影和图片变清晰的秘密!分辨率提升400%的AI算法
    老电影和图片变清晰的秘密!分辨率提升400%的AI算法-如上图,从100x133pix→400x532pix,除了肉眼可见的清晰,拥有可以将分辨率提升400%的技术到底意味着什么 ... [详细]
  • Jupyter 使用Anaconda 虚拟环境内核
    Anaconda虚拟环境中使用JupyterNotebook安装好Anaconda之后,进入AnacondaPrompt,创建虚拟环境, ... [详细]
author-avatar
淼淼L玖兰枢
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有