图片精修生成效果
基于AI试衣服务生成初步试衣效果图后,我们利用OutfitAnyone的图像处理技术对其进行精修处理,输出还原度更高、更加逼真的试衣效果图,确保细节更加精确、色彩更加饱满,为用户带来身临其境的试衣体验。
生成效果示意:
AI试衣生成效果 | 图片精修生成效果 |
API 接口
1. 试衣Refiner的pipeline提交任务接口调用(POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis/)
功能描述:
因为算法属于时间相对较长的算法调用,通常情况下,1张图片大概需要 45 秒左右的生成时间,所以需要采用异步调用的方式提交任务,任务提交之后,系统会返回对应的作业 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-refiner |
input.top_garment_url | String | Body | 是 | 用户上传的上半身服饰图片的原图 URL,应与用户上传的第一阶段试衣输入top_garment_url相同, 图片大小应在5KB~5MB,图像格式限于jpg/png/jpeg/bmp,最大边长小于等4096,最小边大于150。 尽量保持服饰是单一主体且完整,背景干净,四周不宜留白过多。 | http://aaa/bbb.jpg |
input.bottom_garment_url | String | Body | 否 | 用户上传的下半身服饰的原图 URL, 应与用户上传的第一阶段试衣输入bottom_garment_url相同, 图片大小应在5KB~5MB,图像格式限于jpg/png/jpeg/bmp,最大边长小于等4096, 最小边大于150。当不需要下装时(比如上装是连衣裙),该值置为空。 尽量保持服饰是单一主体且完整,背景干净,四周不宜留白过多。 | http://aaa/bbb.jpg |
input.person_image_url | String | Body | 是 | 用户上传的模特人物图片的原图 URL, 应与用户上传的第一阶段试衣输入person_image_ur相同,图片大小应在5KB~5MB,图像格式限于jpg/png/jpeg/bmp,最大边长小于等4096,最小边大于150。 | http://aaa/bbb.jpg |
input.coarse_image_url | String | Body | 是 | 用户上传的第一阶段试衣结果图的 URL, 图片大小应在5KB~5MB,图像格式限于jpg/png/jpeg/bmp,最大边长小于等4096,最小边大于150。 在试衣第一阶段生成时,应设参数resolution为-1,restore_face为true。 | http://aaa/bbb.jpg |
parameters.gender | String | Body | 是 | 用户上传person_image中人物的性别,内容是woman或man,辅助提升refiner效果。 | man |
出参描述:
字段 | 类型 | 描述 | 示例值 |
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-refiner",
"input": {
"top_garment_url": "https://dashscope-swap.oss-cn-beijing.aliyuncs.com/aa-test/sample-top.jpg",
"bottom_garment_url": "https://dashscope-swap.oss-cn-beijing.aliyuncs.com/aa-test/sample-bottom.jpg",
"person_image_url": "https://dashscope-swap.oss-cn-beijing.aliyuncs.com/aa-test/sample-person.png",
"coarse_image_url": "https://dashscope-swap.oss-cn-beijing.aliyuncs.com/aa-test/result.png"
},
"parameters": {
"gender": "woman"
}
}'
响应示例
{
"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 | 被查询作业的作业状态 | 任务状态:
|
output.image_url | Array | 如果作业成功,包含模型生成的结果 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>
响应示例
{
"output":{
"task_id":"a8532587-fa8c-4ef8-82be-0c46b17950d1",
"task_status":"SUCCEEDED",
"submit_time": "2024-xx-xx xx:xx:xx.xxx",
"scheduled_time": "2024-xx-xx xx:xx:xx.xxx",
"end_time": "2024-xx-xx xx:xx:xx.xxx",
"image_url":"<YOUR_RESULT>",
},
"usage":{
"image_count": 1
},
"request_id":"7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
异常响应示例
{
"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. | 上传图片大小不符合要求 |
400 | InvalidParameter | The size of person image and coarse_image are not the same. | coarse_image分辨率和person_image不一致,应保持一致 |