该应用是一款集成了先进技术的时尚应用,旨在为电商用户提供便捷、高效的虚拟试衣和穿搭助手服务。该应用通过OOTDiffusion实现虚拟试衣功能,同时结合ERNIE Bot和ERNIE Bot Agent技术打造Smart Styles穿搭助手,从而为用户提供个性化的时尚体验。 ![image.png](https://img-blog.csdnimg.cn/img_convert/a40c78832c622069ab647ecae0ab44ea.png) 一、 虚拟试衣 | 电商的得力助手 - 项目简介 💡 1.1 虚拟试衣功能
- 技术支撑:应用采用OOTDiffusion技术,这是一种基于潜在扩散模型的前沿技术,能够实现服装图像的高质量生成与融合,确保试穿效果的自然真实感。
- 试穿模式:提供半身与全身两种虚拟试穿模式。半身模型专为上半身服饰设计,如T恤、衬衫等;全身模型则覆盖全方位服装试穿,包括上身、下身及连衣裙等。
💡 1.2 Smart Styles穿搭助手
- AI搭配建议:通过ERNIE SDK和ERNIEBot Agent技术,穿搭助手能够智能分析用户的身材特征、肤色、脸型等,为用户推荐合适的服装搭配方案。
- 个性化推荐:穿搭助手还能根据用户的个人喜好和时尚趋势,提供个性化的穿搭建议,帮助用户打造独特的时尚风格。
💡 1.3 用户体验与互动性
- 真实感体验:虚拟试衣功能以高质量的图像生成技术为基础,为用户提供逼真的试衣效果,增强购物体验。
- 智能交互:通过ERNIE Bot Agent,用户可以与穿搭助手进行自然语言交互,轻松获取穿搭建议和反馈。
💡 1.4 电商助力
- 提升转化率:通过提供真实的试衣效果和个性化的穿搭建议,该应用有助于提高电商平台的购物转化率。
- 减少退货率:用户在购买前能够更准确地了解服装的上身效果,从而降低因尺寸或款式不合适而导致的退货率。
二、 虚拟试衣 | 电商的得力助手 - 快速开始 💡 2.1 环境安装 安装【ERNIE Bot】、【ERNIE Bot Agent】以及PaddleMIX中的【ppdiffusers】,详细信息请点击链接进行查看。 In [ ] ### 通过requirements一键安装本项目需要的所有环境
!pip install gradio_client
!pip install -r requirements.txt --user
💡 2.2 ERNIE Bot 和 ERNIE Bot Agent ERNIE SDK 仓库包含两个项目:ERNIE Bot Agent 和 ERNIE Bot。ERNIE Bot Agent 是百度飞桨推出的基于文心大模型编排能力的大模型智能体开发框架,结合了飞桨星河社区的丰富预置平台功能。ERNIE Bot 则为开发者提供便捷接口,轻松调用文心大模型的文本创作、通用对话、语义向量及AI作图等基础功能。 2.2.1 ERNIE Bot 在此使用ERNIE Bot的对话补全(Chat Completion)功能,为Smart Styles穿搭助手提供穿衣推荐功能,直接上代码。 In [ ] import erniebot
erniebot.api_type = "aistudio"
erniebot.access_token ="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 替换为自己在星河社区的access_token
def predict(prompt):
chat_completion = erniebot.ChatCompletion.create(
model='ernie-4.0',
messages=[{"role": "user", "content": prompt}]
)
return chat_completion.get_result()
'''
model支持如下:
# ernie-3.5 文心大模型(ernie-3.5)
# ernie-3.5-8k 文心大模型(ernie-3.5-8k)
# ernie-lite 文心大模型(ernie-lite)
# ernie-4.0 文心大模型(ernie-4.0)
# ernie-speed 文心大模型(ernie-speed)
# ernie-speed-128k 文心大模型(ernie-speed-128k)
# ernie-tiny-8k 文心大模型(ernie-tiny-8k)
# ernie-char-8k 文心大模型(ernie-char-8k)
# ernie-text-embedding 文心百中语义模型
# ernie-vilg-v2 文心一格模型
'''
def answer(question, history=[]):
history.append(question)
message = predict(question)
history.append(message)
responses = [(u,b) for u,b in zip(history[::2], history[1::2])]
print(responses)
return responses, history
2.2.2 ERNIE Bot Agent ERNIE Bot Agent 是由百度飞桨全新推出的大模型智能体(agent)开发框架。基于文心大模型强大的编排能力,并结合飞桨星河社区提供的丰富预置平台化功能,ERNIE Bot Agent 旨在成为功能全面且高度可定制的一站式大模型智能体和应用开发框架。在此使用ERNIE Bot Agent,为Smart Styles穿搭助手提供穿衣推荐以及理解用户服饰提供穿搭建议。 ![image.png](https://img-blog.csdnimg.cn/img_convert/828d2c4e0976784f4784eaf3b704ac1c.png) 1 编排能力 ERNIE Bot Agent 基于文心大模型的 Function Calling 能力实现了多工具编排和自动调度功能,并且允许工具、插件、知识库等不同组件的混合编排。除了自动调度,我们未来还将支持更多的编排模式,例如手动编排、半自动编排,为开发者提供更大的灵活性。 2 丰富的组件库
- 预置工具:只需一行代码,即可加载使用星河社区工具中心的30+预置工具。这些工具当前主要来自百度AI开发平台和飞桨特色PP系列模型。后续,我们会持续接入更多预置工具,也欢迎社区贡献。此外,工具模块也支持用户灵活自定义本地和远程工具。
- 知识库:提供了开箱即用的基于文心百中的平台化知识库, 并允许开发者在二次开发的场景下使用langchain、llama_index等主流开源库作为知识库。
- 文心一言插件:未来将支持通过调用文心一言插件商城中的插件(开发中)
3 低开发门槛
- 零代码界面:依托星河社区提供了零代码界面的智能体构建工具,通过简单的点击配置即可开发AI原生应用。
- 简洁的代码:10行代码就可以快速开发一个智能体应用。
- 预置资源与平台支持:大量的预置工具、平台级别的知识库,以及后续将推出的平台级别的记忆机制,都旨在加速开发过程。
**注:**具体实例代码详见agent_generate.py, 具体使用可见项目【Agent应用】营销大师 | 文案创作助手,在此不做过多详细介绍。 💡 2.3 虚拟试衣助手 虚拟试衣助手使用基于扩散模型全套试穿:Outfitting over Try-on Diffusion (OOTDiffusion),利用预训练的潜在扩散模型的力量(pretrained latent diffusion models),用于现实和可控的(realistic and controllable)虚拟试穿。在没有明确的衣物形变适应过程(warping process)的情况下,提出了一个outfitting UNet来学习服装细节特征,在扩散模型去噪过程中,通过提出的服装融合outfitting fusion将其与目标人体融合。 ![image.png](https://img-blog.csdnimg.cn/img_convert/8845c95b523fe83f67d125592379f12a.png) (1)在左侧,服装图像被 clip-vit-large-patch14 编码到潜在空间中,并输入到服装UNet中进行单步处理。 (2)与CLIP编码器生成的辅助调节输入一起,通过服装融合(outfitting fusion)将服装特征纳入去噪UNet。 (3)在训练过程中,为了实现无分类器的指导(classifier-free guidance),对训练过程进行了 outfitting dropout。 (4)在右侧,输入的人类图像通过掩码生成模块(mask generator, HumanParsing+OpenPose )将需要换衣以及相近的地方被遮盖为黑色(masked),并与高斯噪声连接在一起,作为多个采样步骤的去噪UNet的输入。 (5)去噪后,特征映射被解码回图像空间作为试戴结果。 在线体验地址:[url]https://huggingface.co/spaces/levihsu/OOTDiffusion[/url] In [8] ## 上半身试穿
from gradio_client import Client
client = Client("https://levihsu-ootdiffusion.hf.space")
result = client.predict(
vton_img='https://levihsu-ootdiffusion.hf.space/file=/tmp/gradio/2e0cca23e744c036b3905c4b6167371632942e1c/model_1.png',
garm_img='https://levihsu-ootdiffusion.hf.space/file=/tmp/gradio/180d4e2a1139071a8685a5edee7ab24bcf1639f5/03244_00.jpg',
n_samples=1,
n_steps=20,
image_scale=2,
seed=-1,
api_name="/process_hd"
)
print(result)
Loaded as API: [url]https://levihsu-ootdiffusion.hf.space/[/url] ✔
[{'image': '/tmp/gradio/3754318150864e3d2dc61874386ef9c88ee20e7d/image.webp', 'caption': None}]
In [ ] ## 全身试穿
from gradio_client import Client
client = Client("https://levihsu-ootdiffusion.hf.space")
result = client.predict(
vton_img='https://levihsu-ootdiffusion.hf.space/file=/tmp/gradio/aa9673ab8fa122b9c5cdccf326e5f6fc244bc89b/model_8.png',
garm_img='https://levihsu-ootdiffusion.hf.space/file=/tmp/gradio/17c62353c027a67af6f4c6e8dccce54fba3e1e43/048554_1.jpg',
category="Upper-body",
n_samples=1,
n_steps=20,
image_scale=2,
seed=-1,
api_name="/process_dc"
)
print(result)
试穿效果图: ![image.png](https://img-blog.csdnimg.cn/img_convert/9b7ee881a1bf180b1ca692cb9e8b7727.png) |