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接口時保持該值置為空即可。
如何選擇合適的模特圖?
需要正面清晰完整的人物全身照或半身照,避免遮擋;人物服飾應盡量簡潔(如短袖+短褲),保證人物雙手雙腳均清晰可見,避免選擇長裙、多件疊穿、寬袍大袖以及有絲巾/傘/包等配飾物的模特圖片。
如果沒有現成的模特圖怎么辦?
可以點擊鏈接下載官網模特圖生成試衣圖片。