AIGC在天猫商品海报生成上的探索

fe12a5483e24f3b56154d8d43a538ee8.gif

灵感艺术家项目,旨在通过AIGC绘图能力,联合商家打造低门槛+高趣味性的宣传海报设计大赛,本文分享我们的方案和优化方向。建议对AIGC感兴趣的工程、算法方向的同学阅读。

e866cd7f9faafb19ef20372295321626.png

项目背景

灵感艺术家项目,旨在通过AIGC绘图能力,联合商家打造低门槛+高趣味性的宣传海报设计大赛,为新品进行宣传和造势。同时也是为了给消费者提供参与新品宣发的通道。

f3a24bf8e877333e55b4f9b94ff862e2.jpeg

5274037a5fb99a31bcc9aa221280d885.png

目标拆解

GPT部分采用通义千问大语言模型,详见其技术文档。本文重点介绍海报风格的图像生成部分,分为商品海报、皮克斯,二次元,写实四种风格:

32d27701287b87655fb0b8185ee1f473.jpeg

fc4cca1eb42b7cac408fad4bb3bbd822.jpeg

9ad7483216da2359b0bc9076442cad8d.jpeg

9d265c23d755585ca6d64a94d7893e11.jpeg

皮克斯、二次元、写实三个风格,实现思路比较清晰,属于标准的文生图,基于MJ、SD都可以实现。分析MJ和SD的优缺点的文章有很多,不做赘述,我们最终选择SD作为文生图的算法方案,核心在于SD开源,可塑性强。基于diffusers,我们重写了一套SD实现,支持VAE、ControlNet、Lora、Embedings等功能,根据业务特点,定制了warmup、auto_predict等能力。比较轻松的解决了这三个风格的生成问题。

算法的难点在于商品海报的风格生成,品牌方要求商品高度还原,并且生成的海报,像素清晰、细节丰富、具备高级感。要求是丰满的,而现实是骨感的。商品细节复杂,特别是带有文字时,很难生成。并且绘图灵感由用户文字随机输入,出图效果几乎是不可控的。为此,我们进行了大量调研,并做了一些优化尝试。

3f8cac0596550442ad276128fa6a6699.png

方案调研

以香奈儿5号香水为例,初步尝试了4套方案。

  方案一 SD + Outpainting

简述:固定商品位置,重绘商品之外的区域。

优点:不会影响香水的外观。

缺点:图片中人物、背景与香水的位置关系很难控制,有比较明显的违和感。d9f92837c5758a925227cb3c2c637de6.jpeg

  方案二 SD Inpainting + Reference Only

简述:以商品图信息注入attention层中,来控制unet生成相似的图像。

优点:可以完全保留预生成的背景。

缺点:香水还原度低。

6b7b69779f588f36932fd104e9af49e6.png

  方案三 基于Reference的Diffusion算法

简述:基于一张参考商品图,生成较相似的商品

代表:PBE, IP Adapter, Anydoor…

优点:泛化性强,无需对每个商品单独训练

缺点:商品细节依旧不够还原copy&paste过于严重

6637e2329d080d07d215a248bc330fb6.jpeg5fe99eea0b98efeef7c545513f6cbb5f.jpeg

cc2a8b4750323e8a093aee0af6dea435.jpeg

  方案四 SD + Lora/Dreambooth

简述:微调模型,注入商品外貌信息

优点:商品外貌还原度较高,且出图率较稳定

缺点:文字等细节还原度仍然不够高;且细节部分越小,其扭曲失真程度就越严重

f1ec4df0becb2a01bab66e316f55c10c.jpeg

方案四最接近想要的效果,但距离我们的要求,还有很大的差距。

ea82fde8e9a1c89db023b10400f9ab15.png

优化方向

  探索一 VAE增强

对LDM(SD的主要引用论文)模型的结构进行分析,初步怀疑细节还原不足的核心原因在于VAE从像素空间到隐空间相互转换过程中,丢失了细节信息。412fe8154ecf9fa8345d098ec3981edd.jpeg

为了验证猜想,我们做了一个测试,对一张图片进行十次encoder和decoder操作,文字等图像细节已经开始模糊。我们想了一个方法,对VAE丢失的信息进行补偿,还原度有比较可观的增强。

670ae4bf26301ea6f88e8c231f10738f.jpeg

但距离完美还原,依然还有差距。

  探索二 图像超分

既然细节难以还原,那么把细节放大,是否还原度就可以提升?为了验证这个猜想,我们做了如下的实验。
在256 * 256分辨率下,文字几乎无法辨认。

65ee0d422725109b61c2d36f73691d01.jpeg

在512  512分辨率下,相对256  256有明显改善,而且 2.X版本的还原度优于1.X版本。

210eb4a6ae9f74cd80906d24ffaadbb7.jpeg

升级到SDXL后,文字还原度进一步增强。
53053b01a425d41866066a52712ad011.jpeg

像素提升,还原度确实有提升。很自然的,我们想到可以在生成的图像上,对文字等细节部分进行超分,然后在refiner阶段,训练专属的 controlnet,进一步提升还原度。
bbbc72e606b388d5ed01139b1a464d23.jpeg

经过多次调整,细节还原度能达到90%以上。但距离完美还原,依然还有一点差距。

  探索三  贴图

既然文字等细节非常难还原,那么是否可以直接把文字部分复制粘贴回去?0d9bb0a40844478c460f31d716899569.jpeg
通过提取原始商品的文字区域,贴图到生成商品的对应区域,完美还原文字细节。

1ac24364899be65fabc18d86a9c4f4cd.jpeg

线上方案

经过上述几个方向的探索,初步解决了香水等商品的海报生成问题,但对复杂图文的商品依然很难还原,例如:

971ed1bdc2487a985a542f08796d58b5.png

既要完美还原,又要增加泛化性,索性,全图贴回去【狗头】。方案如下:

de3d6027de0edd3d4e0afd6c0f7e5443.jpeg

  1. 离线模块通过文生图产生一个背景图库。

  2. 离线模块预置多角度商品图,解决商品角度的多样性问题。

  3. 从背景图库中选择一张跟当前商品最相关的图作为引导图。解决商品和背景不协调的问题,提高出图率。

  4. 由商品图和背景图一起,生成线框图和商品白底图以及对应的mask。

  5. 通过Stable Diffusion+Canny Controlnet+Reference生成初步的商品海报。

  6. 使用SAM和LAMA抹除商品,防止后面贴图时,边缘出现对不齐的情况。

  7. 将抹去商品的图和步骤4中的商品白底图、对应的mask作为输入,合成新的图像。

  8. 提取步骤5中的生成商品的光影信息,投射到步骤7的商品上,生成最终的商品海报。

总结一下:

  1. 通过Copy&Paste的方式,保证无差别还原。

  2. 通过预置引导图解决了完全随机性,提高了出图率。

  3. 通过两步生成解决了倒影等问题。图像精美,具备高级感。

  4. 通过擦除重建以及图像融合技术,缓解了商品边缘的毛刺问题。

  5. 通过从生成图上提取光影,映射到贴图,解决了光影不和谐的问题。

4be374fdcfa7089272b704790f7a7c67.jpeg

测试效果

ba18764f76fca370b5fe79e5471b21d8.png

d391752646e992810bb66b1b82d52280.jpeg

线上效果

112f07bc51bed55cefa27c5ea65c8db3.jpeg

出图率95%以上,基本每张图都能看,大部分图能抗打。A10 GPU上,单卡出图速度3-5秒。

c694413e85b99b3896c5e66ff8f67072.jpeg

下一步探索方向

初步看,效果可以接受了,但依然还有一些可以提升的空间,比如:

如何进一步提升复杂海报的生成效果,增加遮挡关系?

6cbaf7795fec61d5e2ebe363cabfb637.jpeg

如何解决商品与背景的比例和谐,GLIGEN可能是答案?

ae50fbb2adc503c1e03ec98c60913907.jpeg

贴图总显得不那么算法,是否有机会继续提升VAE的能力,或者去掉VAE。Consistency Decoder可以试试?

5987cc62ba0d8fab28691d773f74ae51.jpeg

最后,探索从未停止,AIGC永不眠。

e96d6976040952d979c3111989ed4876.jpeg

引用

[1] IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models
[2] Paint by Example: Exemplar-based Image Editing with Diffusion Models
[3] AnyDoor: Zero-shot Object-level Image Customization
[4] High-Resolution Image Synthesis with Latent Diffusion Models
[5] SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
[6] GLIGEN: Open-Set Grounded Text-to-Image Generation
[7] https://github.com/openai/consistencydecoder

244e1528af6f3dac296aa6d2c6ad8c02.png

团队介绍

我们是大淘宝FC技术智能策略团队,负责手机天猫搜索、推荐、拍立享等业务研发和技术平台建设,综合运用搜推算法、机器视觉、AIGC等前沿技术,致力于依靠技术的进步支持场景的提效和产品的创新,为用户带来更好的购物体验。

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/218582.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:评估 RAG - 指标之旅

作者:Quentin Herreros,Thomas Veasey,Thanos Papaoikonomou 2020年,Meta发表了一篇题为 “知识密集型NLP任务的检索增强生成” 的论文。 本文介绍了一种通过利用外部数据库将语言模型 (LLM) 知识扩展到初始训练数据之外的方法。 …

07、pytest指定要运行哪些用例

官方用例 # 目录结构 | |----test_mod.py | |----testing||----test_dir.py# content of test_mod.py import pytestdef func(x):return x 1def test_mod():print("test_mod function was invoked")assert func(3) 5def test_func():print("test_func was in…

力扣每日一题:2477. 到达首都的最少油耗(2023-12-05)

力扣每日一题 题目:2477. 到达首都的最少油耗 日期:2023-12-05 用时:34 m 15 s 时间:37ms 内存:84.8MB 思路:分别计算每条路上通过的城市数量(数量/座位数,向上取整)&…

1.qml-3D入门讲解介绍

本章我们来学习QML 3D教程,QML 3D能够支持windows linux等多平台跨平台并且显示效果大部分一致,非常方便,学习的qt版本最低为qt6.5。 要使用qml 3D类,需要导入QtQuick3D模块。 这是使用空间渲染器和场景图的 QML 前端。目前&…

【C/PTA —— 14.结构体1(课外实践)】

C/PTA —— 14.结构体1(课外实践) 一.函数题6-1 选队长6-2 按等级统计学生成绩6-3 学生成绩比高低6-4 综合成绩6-5 利用“选择排序算法“对结构体数组进行排序6-6 结构体的最值6-7 复数相乘运算 二.编程题7-5 一帮一7-6 考试座位号 一.函数题 6-1 选队长…

【React + Typescript】使用WebPack包管理、各种扩展插件组成的初始模板,开源协议:CC-BY-4.0

React Typescript Webpack 模板 模板展示项目结构使用的部分扩展包页面配置代码Layout 公共容器组件路由Jspackage.json 开源模板下载TIP 模板展示 项目结构 使用的部分扩展包 📂 System ├── 📂 Plugin │ ├── 📄 file-loader | 在处…

Java---异常

文章目录 1. 异常概述2. try...catch3. Throwable成员方法4. 编译时异常和运行时异常区别5. 异常处理之throws6. 自定义异常7. throws和throw的区别 1. 异常概述 1. 异常:就是程序中出现了不正常的情况。 2. Error:严重问题,不需要处理。Exce…

基于Java SSM框架实现美食推荐管理系统项目【项目源码+论文说明】

基于java的SSM框架实现美食推荐管理系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

数智化招采平台档案管理的功能、价值与亮点

2005年4月,《中华人民共和国电子签名法》正式实施,明确电子签名与手写签名具有同等的法律效力。 2013年5月,《电子招标投标办法》正式实施,明确电子招标投标交易平台应当具备电子归档功能。 2021年1月,《中华人民共和…

web前端开发HTML/css用户登录界面

代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equi…

基于Java SSM框架实现农产品供销服务系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现农产品供销服务系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识…

使用cmake构建的工程的编译方案

1、克隆项目工程 2、进入到工程目录 3、执行 mkdir build && cd build 4、执行 cmake .. 5、执行 make 执行以上步骤即可完成对cmake编写的工程进行编译 &#xff0c;后面只需执行你的编译结果即可 $ git clone 你想要克隆的代码路径 $ cd 代码文件夹 $ mkdir bu…

【Linux】编译器-gcc/g++与调试器-gdb的使用

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.gcc/g语法 2.gcc的使用及…

数据结构——二叉树(相关术语、性质、遍历过程)

遍历操作 二叉树的层次遍历-CSDN博客 二叉树的基本操作-CSDN博客 二叉树的先序遍历非递归实现-CSDN博客 后序遍历的非递归方式实现-CSDN博客 二叉树&#xff1a;已知先序中序求后序或者其他&#xff08;秒解&#xff09;-CSDN博客 因为之前发过一遍&#xff0c;我就不复制…

GEOVIS Earth Brain:LANDSAT_5/02/T1/RAW数据集

简介&#xff1a; LANDSAT_5/02/T1/RAW数据集是一种由美国国家航空航天局&#xff08;NASA&#xff09;和美国地质调查局&#xff08;USGS&#xff09;联合发布的遥感卫星影像数据集。它的数据格式为RAW&#xff0c;即未经过数据处理的原始数据。这个数据集是由LANDSAT 5号卫星…

Kubernetes安装ingress-nginx

Kubernetes安装ingress-nginx 1 、Ingress 简介 1.1 kubernetes访问方式 在Kubernetes中&#xff0c;服务和Pod的IP地址仅可以在集群网络内部使用&#xff0c;对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务&#xff0c;在Kubernetes 目前 提供了以下几…

基于PaddleSeg开发的人像抠图web api接口

前言 基于PaddleSeg开发的人像抠图web api接口&#xff0c;提取官方代码&#xff0c;适配各种系统&#xff0c;通过api的接口进行访问。 环境要求 1、Python3.7以上 2、源码&#xff08;文章最后下载&#xff09; 源码结构 测试module.py中添加如下代码&#xff1a; if __na…

MYSQL练题笔记-高级查询和连接-简单题3题

写了下面的前3道题。 一、每位经理的下属员工数量 看到题目就知道和之前的至少有5名下属的经理很相似&#xff0c;嘿嘿写对了就不做过多的讲解了。 二、员工的直属部门相关表和题目如下 刚开始觉得很简单&#xff0c;但是仔细想想这道题有两个输出&#xff0c;觉得想不出来&a…

【C语言】函数递归详解(二)

前言 在上一篇博客函数递归详解&#xff08;一&#xff09;中讲解了什么是递归&#xff0c;递归的思想及限制条件以及两个递归的例子&#xff0c;这一篇博客将讲解递归与迭代的关系。 递归与迭代 递归是一种很好的编程技巧&#xff0c;但是同很多技巧一样也是可能被误用的&…

深入剖析Java Web开发中的过滤器、拦截器和AOP

文章目录 1. 过滤器&#xff08;Filter&#xff09;1.1 过滤器的概念1.2 过滤器的应用场景1.3 过滤器的示例代码 2. 拦截器&#xff08;Interceptor&#xff09;2.1 拦截器的概念2.2 拦截器的应用场景2.3 拦截器的示例代码 3. AOP&#xff08;面向切面编程&#xff09;3.1 AOP的…