AI试衣生成效果
AI试衣(OutfitAnyone)是通义实验室自主研发的虚拟试衣模型服务产品。用户无需亲临实体店或经历繁琐的试穿过程,仅需上传服装平铺图以及正面全身人像照,便能生成高质量试衣效果,精准展现衣物穿着后的实际观感。
生成方式及效果示意:
输入全身正面照 | 输入服装平铺图 | 生成试衣效果 |
人物照片上传要求 | |
基本要求 |
|
照片要求 |
|
正确示例:
错误示例:
非正面全身照 (避免上传侧身、坐姿、躺姿、半身照片) | 多人照片 | 人物服装遮挡 (避免手持物、包等) | 光线过暗/模糊不清 |
服装平铺图上传要求 | |
基本要求 |
|
照片要求 |
-上传清晰平整的服装平铺图; -背景简约、干净、光线良好; -图片中只可展示单件服装; -不可叠加其他服装一起拍摄; -服装在图片中的占比尽可能大。 |
正确示例:
错误示例:
多件服装 | 非正面照 | 折叠遮挡 | 服装褶皱 |
API 接口
1. 试衣的pipeline提交任务接口调用
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis
功能描述:
因为算法属于时间相对较长的算法调用,通常情况下,1张图片大概需要 15 秒左右的生成时间,所以需要采用异步调用的方式提交任务,任务提交之后,系统会返回对应的task_id,随后客户通过对应的异步作业查询接口获取任务状态以及在作业结束后取回对应结果。
入参描述:
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
Content-Type | String | Header | 是 | 请求类型:application/json | application/json |
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a |
X-DashScope-Async | String | Header | 是 | 使用 enable,表明使用异步方式提交作业。 | enable |
model | String | Body | 是 | 指明需要调用的模型。 | aitryon |
input.top_garment_url | String | Body | 是 | 用户上传的上半身服饰图片的原图 URL, 图片大小应在5KB~5MB,图像格式限于jpg/png/jpeg/bmp,最大边长小于等4096,最小边大于150。 尽量保持服饰是单一主体且完整,背景干净,四周不宜留白过多。 | http://aaa/1.jpg |
input.bottom_garment_url | String | Body | 否 | 用户上传的下半身服饰的原图 URL, 图片大小应在5KB~5MB,图像格式限于jpg/png/jpeg/bmp,最大边长小于等4096, 最小边大于150。 尽量保持服饰是单一主体且完整,背景干净,四周不宜留白过多。 若不输入下装图片,下装效果将随机生成。 若不需要下装(如上装是连衣裙),应将该值置空。 | http://aaa/2.jpg |
input.person_image_url | String | Body | 是 | 用户上传的模特人物图片的原图 URL, 图片大小应在5KB~5MB,图像格式限于jpg/png/jpeg/bmp,最大边长小于等4096,最小边大于150。 需要保持待换装的人物图片中有且仅有一个完整的人。 | http://aaa/3.jpg |
parameters.resolution | Int | Body | 否 | 输出图片的分辨率控制。包含3个选项,值为-1代表还原到原图大小,值为1024代表(576x1024),值为1280代表(720x1280)。默认为-1。 若后续还需调用AI试衣图片精修API,必须选-1。 | -1 |
parameters.restore_face | Bool | Body | 否 | 输出图片模特脸部的还原控制。包含2个选项,值为true时会还原原图人脸,值为false时会生成新的人脸。默认为true。 若后续还需调用AI试衣图片精修API,必须选true。 | true |
出参描述:
字段 | 类型 | 描述 | 示例值 |
output.task_id | String | 提交异步任务的作业id,实际作业结果需要通过异步任务查询接口获取。 | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 提交异步任务后的作业状态。 | PENDING |
request_id | String | 本次请求的系统唯一码 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例:
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis/' \
--header 'X-DashScope-Async: enable' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "aitryon",
"input": {
"top_garment_url": "http://xxx/1.jpg",
"bottom_garment_url": "http://xxx/2.jpg",
"person_image_url": "http://xxx/3.jpg"
},
"parameters": {
"resolution": -1,
"restore_face": true
}
}'
响应示例
{
"output": {
"task_id": "a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status": "PENDING"
}
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
2. 异步任务查询接口
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
功能描述:
异步任务接口在任务提交之后就可以获取到对应的 task_id,随后客户可以通过标准的任务查询接口查询作业的状态以及获取到最终任务的生成结果;其中生成的图片将会存储在 OSS 中以 URL 的形式返回给客户供客户下载。
入参描述:
字段 | 类型 | 传参方式 | 必选 | 描述 | 示例值 |
Authorization | String | Header | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a |
task_id | String | Url Path | 是 | 需要查询作业的 task_id | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
出参描述:
字段 | 类型 | 描述 | 示例值 |
output.task_id | String | 查询作业的 task_id | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | 被查询作业的作业状态 | 任务状态: PENDING 排队中 RUNNING 处理中 SUCCEEDED 成功 FAILED 失败 UNKNOWN 作业不存在或状态未知 |
output.results.image_url | String | 如果作业成功,包含模型生成的结果 object,然后每个 object 中包含按照要求生成的结果地址 | {"image_url":"https://xxx/1.jpg"} |
usage.image_count | Int | 本次请求生成图片张数 | "image_count": 1 |
request_id | String | 本次请求的系统唯一码 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例:
curl -X GET \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
'https://dashscope.aliyuncs.com/api/v1/tasks/<YOUR_TASK_ID>'
响应示例:
{
"request_id": "xxx",
"output": {
"task_id": "xxx",
"task_status": "SUCCEEDED",
"submit_time": "2024-07-30 15:39:39.918",
"scheduled_time": "2024-07-30 15:39:39.941",
"end_time": "2024-07-30 15:39:55.080",
"image_url": "YOUR_IMAGE_URL"
},
"usage": {
"image_count": 1
}
}
异常响应示例:
{
"request_id": "6bf4693b-c6d0-933a-b7b7-f625d098d742",
"output": {
"task_id": "e32bd911-5a3d-4687-bf53-9aaef32213e9",
"task_status": "FAILED",
"code": "InvalidInputLength",
"message": "The image resolution is invalid, please make sure that the largest length of image is smaller than 4096, and the smallest length of image is larger than 150. and the size of image ranges from 5kb to 5mb"
}
}
状态码说明
大模型服务通用状态码请查阅:错误码
同时本模型还有如下特定错误码:
HTTP 返回码 | 错误码(code) | 错误信息(message) | 含义说明 |
400 | InvalidParameter | The request is missing required parameters or in a wrong format, please check the parameters that you send. | 入参格式不对 |
400 | InvalidURL | The request URL is invalid, please check the request URL is available and the request image format is one of the following types: JPEG, JPG, PNG, BMP, and WEBP. | 图片URL访问失败,请检查URL或文件格式 |
400 | InvalidPerson | The input image has no human body or multi human bodies. Please upload other image with single person. | 输入图片中没有人或多人主体 |
400 | InvalidInputLength | The image resolution is invalid, please make sure that the largest length of image is smaller than 4096, and the smallest length of image is larger than 150. and the size of image ranges from 5KB to 5MB | 上传图片大小不符合要求 |
常见问题
为什么一定要上传服装平铺图?
服装平铺图可以清晰展示服装的版型及图案,能够让AI更好的识别服装和人体的关系,从而更好的还原服装上身效果。
如果没有现成的服装平铺图怎么办?
可以在光线较好处,找身边的同事或朋友穿着服装进行拍摄,或者将服装放置人台上进行拍摄。
为什么生成的图片没有细节没有质感?
需要输入高清完整的服装平铺图,如果缺失服装细节或角度,可能会导致AI“自由发挥”,从而无法生成想要的效果。
如何生成单件连体/套装服装的试衣图?
当不需要下装时,在调用input.bottom_garment_url接口时保持该值置为空即可。
如何选择合适的模特图?
需要正面清晰完整的人物全身照或半身照,避免遮挡;人物服饰应尽量简洁(如短袖+短裤),保证人物双手双脚均清晰可见,避免选择长裙、多件叠穿、宽袍大袖以及有丝巾/伞/包等配饰物的模特图片。
如果没有现成的模特图怎么办?
可以点击链接下载官网模特图生成试衣图片。