📢 转载信息
原文作者:Amandine Annoye, Kevin Polossat, Leopold Cheval, and Rania Khemiri
在本系列的第一篇文章中,我们将探讨零售商如何实施虚拟试穿以改善客户体验。在第 2 部分,我们将进一步探讨这项创新技术的实际应用和优势。
在线购买的四分之一的服装最终被退回给零售商,导致美国在 2024 年面临高达 8900 亿美元的退货问题。在这些数字背后,隐藏着一个简单的事实:购物者无法通过屏幕判断服装的合身度和款式。退货时装的主要原因包括:合身度差、尺码错误或款式不匹配。
零售商面临一项严峻的挑战,即他们最有价值的客户往往退货最多,这迫使他们维持慷慨的退货政策,尽管处理成本高昂且对环境影响巨大。每次退货产生的碳排放量比首次配送高出 30%,并且在商品重新入库之前,就代表着一次错失的销售机会。随着数字购物的加速,虚拟试穿技术已成为减少退货同时保持客户便利性的解决方案,但早期实施在准确性、可扩展性和保留服装垂坠感、图案和标志等关键细节方面遇到了困难。
Amazon Nova Canvas 通过其虚拟试穿功能解决了这些挑战,该功能使用两个二维图像输入:一个显示人物或生活空间的源图像,以及一个产品参考图像。该系统通过自动屏蔽功能提供自动产品放置,并提供手动控件以进行精确调整。在此过程中,它会仔细保留标志和纹理等重要细节,同时提供全面的造型控件以进行自定义。
虚拟试穿可以部署到多个客户参与渠道,从电子商务网站和移动购物应用程序到店内信息亭、社交媒体购物平台和虚拟展厅。想象一下访问一个电子商务网站,上传您的个人图像,并在该网站上的服装和配饰产品上看到该图像的应用。
下图显示了源图像、参考图像、蒙版图像以及最终的试穿图像。

在本文中,我们将探讨 Amazon Nova Canvas 中现有的虚拟试穿功能,包括快速入门的示例代码以及帮助获得最佳输出的技巧。
解决方案概述
通过虚拟试穿功能,零售商和电子商务公司可以将服装和产品可视化直接集成到他们现有或新的客户触点中。仅通过上传照片和选择产品,客户就可以看到商品穿在自己、模特或其他场景上的效果。您可以在 Amazon Bedrock 的 Amazon Nova Canvas 中体验虚拟试穿。我们将引导您在自己的 Amazon Web Services (AWS) 环境中实现围绕此功能的完整解决方案。以下部分提供了部署的详细说明和最佳实践。
其核心是,该解决方案利用了 Amazon Bedrock 中 Amazon Nova Canvas 的新虚拟试穿功能。该模型提供快速推理速度,使其适用于电子商务等实时应用程序。同时,它保留了参考产品的高保真细节,包括图案、纹理和标志。该模型在场景中保持准确的语义操作。
我们的解决方案将 AWS 无服务器服务与 AI 处理能力相结合,构建了一个事件驱动的架构。Amazon DynamoDB Streams 触发 AWS Step Functions 工作流,而 Amazon Simple Storage Service (Amazon S3) 事件用于管理结果交付。Amazon Bedrock 中的 Amazon Nova Canvas 负责生成蒙版和姿态检测。该解决方案遵循异步处理管道,并提供实时状态更新,其中 WebSocket 连接可与客户端保持实时通信,从而在整个过程中实现持续的用户参与。有关详细的实施指南和最佳实践,请参阅我们的指南。
架构详解
请求的启动遵循以下流程:
- Amazon S3 存储上传的客户模型照片和产品图像。
- 每次上传都会生成一条消息发送到 Amazon Simple Queue Service (Amazon SQS) 队列。AWS Lambda 函数创建相应的元数据和 S3 路径,并将其存储在 DynamoDB 产品表中以供后续检索。
- Amazon API Gateway 管理用于客户端和虚拟试穿之间实时状态更新的 WebSocket 连接。
- Lambda 通过检索 DynamoDB 产品表中的产品信息并创建 DynamoDB 作业条目来处理初始请求。
- Amazon DynamoDB:产品表(
vto-products)存储虚拟试穿的可用目录项,特别是 Amazon S3 图片位置。 - 虚拟试穿作业 DynamoDB 表(
vto-jobs)跟踪每个试穿请求的状态。
虚拟试穿的生成遵循以下流程:
- DynamoDB Streams 异步触发 AWS Step Functions 工作流,以便在创建作业时处理试穿请求。
- AWS Step Functions 编排虚拟试穿的生成。它会触发一个 Lambda 函数,该函数通过 Amazon Bedrock 调用 Amazon Nova Canvas 模型。DynamoDB 作业表会更新虚拟试穿的状态。
结果的交付遵循以下流程:
- Amazon S3 存储带有作业 ID 元数据的生成的试穿图像。
- Amazon SQS 处理已完成试穿图像的 S3 事件通知。
- AWS Lambda 函数通过 WebSocket 将结果的 Amazon S3 URL 发送回用户。
下图说明了解决方案的架构。

解决方案流程
本节解释了解决方案的端到端流程。解决方案指南提供了有关如何复制解决方案的更多详细信息和信息。
当您的客户发起试穿请求时,他们首先登录 Amazon Cognito,然后上传他们的照片并存储到 Amazon S3。提供了一个工作流,通过 Amazon S3 事件自动填充 DynamoDB 中的产品表。客户端通过 API Gateway 建立 WebSocket 连接,创建一个用于实时更新的持久通道。客户端发送他们想要虚拟试穿的产品的 ID 以及他们想要使用的静态模型的 S3 URL。Lambda 函数通过从 DynamoDB 检索产品图像 URL 并创建包含两个图像 URL 的作业条目来处理此请求,并返回一个唯一的作业 ID 进行跟踪。
DynamoDB 流随后触发一个 Step Functions 来协调 DynamoDB 表中的各种写入和更新。Step Functions 还调用 Amazon Nova Canvas 虚拟试穿功能。该模型以以下输入为基础:(1)源图像,即您想要修改的基础图像(例如,客户的图像);(2)参考图像,即包含您想要插入到基础图像中的产品(产品)的图像。对于服装,参考图像可以包含穿在或脱下的服装,甚至可以包含代表不同服装组件的多个产品(例如,同一张图片中的衬衫、裤子和鞋子)。
默认情况下,使用辅助输入(maskType: "GARMENT" 或 maskType: "PROMPT")自动计算蒙版。蒙版图像可以直接由开发人员提供(maskType: "IMAGE")。
当指定蒙版类型为 “GARMENT” 时,Amazon Nova Canvas 将根据您指定的 garmentClass 输入参数值创建一种对服装有感知的蒙版。在大多数情况下,您将使用以下高级别服装类别之一:
"UPPER_BODY"– 创建包含手臂全长的蒙版。"LOWER_BODY"– 创建包含腿部全长且腿部之间无缝隙的蒙版。"FOOTWEAR"– 创建一个适合源图像所示鞋子轮廓的蒙版。"FULL_BODY"– 创建一个相当于"UPPER_BODY"和"LOWER_BODY"组合的蒙版。
下表显示了带有 maskType: "GARMENT" 的示例输入。
| 源 | 参考 | 服装类别 | 输出 |
![]() |
![]() |
|
![]() |
下表显示了带有 maskType: "PROMPT" 的示例输入。
| 源图像 | 蒙版提示 | 参考图像 | 输出 |
![]() |
![]() |
![]() |
![]() |
还有更精细的子类,在某些边缘情况下可能很有用。通过使用 “PROMPT” 蒙版类型,您可以使用自然语言来描述源图像中您想要替换的项目。这对于非服装的图像很有用。此功能使用 Nova Canvas “INPAINTING” 任务中存在的相同自动屏蔽功能,并使用 maskPrompt 参数。
通过使用蒙版并了解哪些服装区域需要替换,产品图像将被插入到用户照片中作为输入。然后,模型会生成试穿图像,该图像存储在 Amazon S3 中,并带有作业 ID 作为元数据。在此过程中,系统会通过 WebSocket 连接发送进度更新。Amazon S3 事件通知通过 Amazon SQS 触发 Lambda 函数。该函数为结果图像生成一个预签名 URL,并通过建立的 WebSocket 连接将其交付给客户端。这完成了整个过程,通常需要 7-11 秒。
实施细节
本节详细介绍了我们在虚拟试穿解决方案中使用的表和模式,以帮助您进一步了解每个 DynamoDB 表的作用。
此解决方案使用了四个 DynamoDB 表。products_table 存储了虚拟试穿的可用商品目录。virtual_try_on_jobs 表维护每个试穿请求的状态和跟踪信息。vto-models 表存储用于虚拟试穿的客户图像目录。WebSocket 连接表(vto-connections)跟踪活动的 WebSocket 连接,用于实时作业状态更新。该解决方案假定产品表已预先填充了零售商的库存。
产品表(vto-products)存储虚拟试穿的可用商品目录。当图像上传到 /products/ S3 文件夹时,产品会自动填充。产品表的架构如下:
- product_id (string, 分区键) – 产品的唯一标识符
- product_picture_s3_url (string) – 产品原始图像的 Amazon S3 URL
- name (string) – 产品显示名称
- category (string) – 用于组织的类别
- description (string) – 产品详细信息,包括款式、颜色和尺码选项
- auto_imported (Boolean) – 指示产品是否通过 Amazon S3 上传自动导入的标志
- created_at (string) – 产品添加时的 ISO 时间戳
- updated_at (string) – 最后修改时的 ISO 时间戳
模型表(vto-models)存储用于虚拟试穿的客户图像目录。当图像上传到 /models/ S3 文件夹时,模型会自动填充。模型表的架构如下:
- model_id (string, 分区键) – 模型的唯一标识符
- model_picture_s3_url (string) – 模型图像的 Amazon S3 URL
- name (string) – 模型显示名称
- category (string) – 用于组织的类别
- description (string) – 模型详细信息和特征
- auto_imported (Boolean) – 指示是否通过 Amazon S3 上传自动导入模型的标志
- created_at (string) – 模型添加时的 ISO 时间戳
- updated_at (string) – 最后修改时的 ISO 时间戳
虚拟试穿作业表(vto-jobs)在整个处理工作流中维护每个试穿请求的状态和跟踪信息。虚拟试穿作业表的架构如下:
- id (string, 分区键) – 每个试穿作业的唯一标识符
- model_id (string) – 对所用模型的引用
- product_id (string) – 对正在试穿的产品的引用
- model_picture_s3_url (string) – 客户上传照片的 Amazon S3 URL
- product_picture_s3_url (string) – 正在试穿的产品图像的 Amazon S3 URL
- result_s3_url (string) – 生成的虚拟试穿结果图像的 Amazon S3 URL
- status (string) – 当前作业状态(created、processing、completed 或 error)
- parameters (map) – 虚拟试穿 API 参数(例如
maskType、mergeStyle或garmentClass) - connection_id (string) – 用于实时更新的 WebSocket 连接 ID
- error_message (string) – 作业失败时的错误详细信息
- created_at (string) – 作业创建时的 ISO 时间戳
- updated_at (string) – 最后状态更新时的 ISO 时间戳
WebSocket 连接表(vto-connections)跟踪活动的 WebSocket 连接,用于实时作业状态更新。有关如何使用 WebSocket API 的更多信息,请参阅使用 WebSocket API、Lambda 和 DynamoDB 创建 WebSocket 聊天应用程序教程。架构如下:
- connection_id (string, 分区键) – WebSocket 连接标识符
- connected_at (string) – 连接建立时的 ISO 时间戳
- ttl (number) – 用于自动清理陈旧连接的生存时间
结论
在本文中,我们介绍了如何大规模实施虚拟试穿,涵盖了主要构建块。为了快速上手,我们提供了一个完整的GitHub 示例,包含先决条件、部署脚本、示例代码和一个全面的解决方案指南文档,其中包含最佳实践和配置详细信息。使用本指南,您可以立即开始尝试该解决方案。
随着电子商务的持续增长,降低退货率同时保持客户满意度对于零售商的盈利能力和可持续性变得越来越重要。此虚拟试穿解决方案展示了如何将 AWS 无服务器服务与生成式 AI 相结合,以应对重大挑战。通过使用 Amazon Nova Canvas 和强大的无服务器架构,零售商可以为客户提供准确的产品可视化和姿态保留,同时保持其最忠实客户所期望的无缝购物体验。实施注意事项超出了技术架构的范围。成功的部署需要仔细关注服务配额、监控和成本优化。我们的解决方案指南提供了有关管理 WebSocket 连接、实施重试策略和优化资源利用率的更多详细建议。这些运营方面对于在高峰购物时段保持可靠的性能和有效管理成本至关重要。
关于作者
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。







评论区