随着8月份 Qwen-Image 的开源发布,以及后续 Qwen-Image-Edit ,Qwen-Image- Edit-2509的接连更新,短短三个月的时间里,Qwen-Image系列已经成为开源社区首选的的图片生成、图像编辑模型。Qwen-Image系列模型在复杂文本渲染场景下,尤其是中文字符的排版、字体还原与语义一致性方面,表现远超同类模型,能真正实现“所写即所得”。
ModelScope社区除了支持了Qwen-Image模型的开源首发,也在第一时间将Qwen-Image系列模型的生图,以及微调训练等能力,上线到了平台的AIGC专区(https://www.modelscope.cn/aigc/)。我们也看到,社区开发者的创作热情被Qwen-Image所点燃,围绕着一系列模型的LoRA层出不穷,包括最近在Hugging Face上强势出圈的多角度转换模型,也都来自于ModelScope AIGC的模型训练平台:
下面是近期使用ModelScope AIGC专区训练出来的一些优秀的社区LoRA:
| 模型名称 | 模型功能简介 | 示例效果图 |
| Qwen-Edit-2509-Multiple-angles | 支持摄像头多角度视角变换控制 | |
| Qwen-Image-Edit-2509-Light_restoration | 光线增强,去除阴影 | |
| Qwen-Image-Edit-2509-Fusion | 矫正产品透视和光影,将物品无缝融入背景 | |
| Qwen-Image-Edit-2509-Relight | 重新照明图像,模拟窗帘漫射光等效果 | |
| Multiple-characters LoRA | 支持单张图生成多人物角色,同场景多角度呈现 | |
| Qwen-Image-Edit-2509-White_to_Scene | 将白底产品图转换为真实场景图,让物品融入场景 | |
| Qwen-Edit-2509-Workflow | 多功能编辑工作流合集:扩图、修图、虚拟试穿、姿态控制等 |
除了在AIGC专区能直接页面生图以外,ModelScope的AIGC专区同样通过API-Inference的接口,对外开放。为包括Qwen-Image在内的所有AIGC模型提供了API调用的支持。除了 Qwen-Image、Qwen-Image-Edit 、Qwen-Image- Edit-2509 这几个基础模型以外,ModelScope还为在平台上衍生的庞大LoRA模型家族,也提供了通过 API 接口,实现开箱即用的用户体验。
这里我们主要介绍 Qwen-Image 模型系列家族通过ModelScope API-Inference 调用。更多通过AIGC专区的页面使用方式,欢迎访问AIGC专区(https://www.modelscope.cn/aigc/)。
开启API-Inference使用
- 已注册 ModelScope 账号并完成实名认证
- 已获取访问令牌(Access Token):https://modelscope.cn/my/myaccesstoken
- 已绑定阿里云账号
快速开始
所有Qwen-Image系列的模型调用API的范例代码,都可以直接在模型页面上直接找到。以Qwen/Qwen-Image-Edit-2509为例:
https://www.modelscope.cn/models/Qwen/Qwen-Image-Edit-2509
从页面上即可看到通过API调用来实现包括多图编辑在内的典型使用场景所需的代码:
Qwen-Image 文生图调用示例
import requests import time import json from PIL import Image from io import BytesIO base_url = 'https://api-inference.modelscope.cn/' api_key = "<MODELSCOPE_SDK_TOKEN>" # 请替换为您的 ModelScope Access Token common_headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } # 提交图像生成任务 response = requests.post( f"{base_url}v1/images/generations", headers={**common_headers, "X-ModelScope-Async-Mode": "true"}, data=json.dumps({ "model": "Qwen/Qwen-Image", "prompt": "一只可爱的金色小猫在阳光下玩耍,毛发细节清晰,背景是温馨的家居环境,超清,4K,电影级构图", }, ensure_ascii=False).encode('utf-8') ) response.raise_for_status() task_id = response.json()["task_id"] # 轮询任务状态 while True: result = requests.get( f"{base_url}v1/tasks/{task_id}", headers={**common_headers, "X-ModelScope-Task-Type": "image_generation"}, ) result.raise_for_status() data = result.json() if data["task_status"] == "SUCCEED": image = Image.open(BytesIO(requests.get(data["output_images"][0]).content)) image.save("qwen_image_result.jpg") print("图像生成成功!") break elif data["task_status"] == "FAILED": print("图像生成失败") break time.sleep(5)
Qwen-Image-Edit-2509 图像编辑示例
import requests import time import json from PIL import Image from io import BytesIO base_url = 'https://api-inference.modelscope.cn/' api_key='<MODELSCOPE_TOKEN>'# ModelScope Token common_headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", } response = requests.post( f"{base_url}v1/images/generations", headers={**common_headers, "X-ModelScope-Async-Mode": "true"}, data=json.dumps({ "model": 'Qwen/Qwen-Image-Edit-2509', # ModelScope Model-Id, required "prompt": "给图中的狗戴上一个生日帽", "image_url": [ "https://modelscope.oss-cn-beijing.aliyuncs.com/Dog.png" ] # multiple-image edit can be done by passing in multiple images: # "prompt": "写实风格,生成一张图片,图一中的狗,去追图二中的飞盘", # "image_url": #[ # "https://modelscope.oss-cn-beijing.aliyuncs.com/Dog.png", # "https://modelscope.oss-cn-beijing.aliyuncs.com/Frisbee.png" #] }, ensure_ascii=False).encode('utf-8') ) response.raise_for_status() task_id = response.json()["task_id"] whileTrue: result = requests.get( f"{base_url}v1/tasks/{task_id}", headers={**common_headers, "X-ModelScope-Task-Type": "image_generation"}, ) result.raise_for_status() data = result.json() if data["task_status"] == "SUCCEED": image = Image.open(BytesIO(requests.get(data["output_images"][0]).content)) image.save("result_image.jpg") break elif data["task_status"] == "FAILED": print("Image Generation Failed.") break time.sleep(5)
通过 API 探索Qwen-Image 丰富的LoRA生态
除了Qwen-Image系列基础模型以外,其衍生的LoRA同样可以通过同样的API接口使用,只需要将基础模型的名字,改成LoRA模型对应的model id即可。依托ModelScope AIGC专区服务的基础设施,平台会自动加载LoRA模型所需的基础模型来实现图片的生成:
# 修改上述示例中的response部分即可 response = requests.post( f"{base_url}v1/images/generations", headers={**common_headers, "X-ModelScope-Async-Mode": "true"}, data=json.dumps({ "model": "MoYouuu/MYHuman-QWen", # LoRA ModelId on ModelScope "prompt": "生成九宫格表情包,包含吐舌头、微笑、托腮、眨眼、大笑、比V手势等多种表情,保持人物身份一致,纯白背景,专业摄影棚光线" }, ensure_ascii=False).encode('utf-8') )
这个能力使得开发者在ModelScope平台上训练的数千个LoRA模型,使得不同风格和场景的图像生成,都都能通过API实现开放:
https://modelscope.cn/aigc/models?filter=QWEN_IMAGE_20_B&page=1
API 参数说明
Qwen-Image 文生图(包括衍生LoRA)API 参数
| 参数名 | 参数说明 | 是否必须 | 参数类型 | 示例 | 取值范围 |
| model | 模型 ID | 是 | string | Qwen/Qwen-Image | Qwen-Image 系列模型 ID |
| prompt | 正向提示词,支持中英文 | 是 | string | 一只可爱的金色小猫 | 长度小于 2000 字符 |
| negative_prompt | 负向提示词 | 否 | string | 模糊,低质量,变形 | 长度小于 2000 字符 |
| size | 生成图像分辨率 | 否 | string | 1024x1024 | 支持多种宽高比,详见下表 |
| seed | 随机种子 | 否 | int | 42 | [0, 2³¹-1] |
| steps | 采样步数 | 否 | int | 50 | [1, 100] |
| guidance | 提示词引导系数 | 否 | float | 4.0 | [1.5, 20] |
Qwen-Image-Edit-2509 图像编辑(包括衍生LoRA)API 参数
| 参数名 | 参数说明 | 是否必须 | 参数类型 | 示例 | 取值范围 |
| model | 模型 ID | 是 | string | Qwen/Qwen-Image-Edit-2509 | Qwen-Image-Edit 系列模型 ID |
| images | 输入图像列表(base64) | 是 | array | [[base64], [base64]] | 多图像编辑,1-3 张 |
| prompt | 编辑指令 | 是 | string | 改变服装为旗袍 | 长度小于 2000 字符 |
| negative_prompt | 负向提示词 | 否 | string | 模糊,低质量 | 长度小于 2000 字符 |
| steps | 采样步数 | 否 | int | 40 | [1, 100] |
| guidance | 提示词引导系数 | 否 | float | 4.0 | [1.5, 20] |
| seed | 随机种子 | 否 | int | 42 | [0, 2³¹-1] |
更多
在过去3个月的时间里,我们目睹了Qwen-Image系列模型从发布,到迅速成长为AIGC领域头部的开源模型。社区生态的LoRA层出不穷,数量迅速从数百增加到数千,乃至逼近万的量级。从我们的AIGC专区训练微调产生的诸多模型,除了在ModelScope社区,也已经在包括Hugging Face在内的不同社区和平台上屡屡出圈。
我们期待通过社区的支持以及围绕ModelScope API-Inference接口开放的能力,能够进一步推进整个视觉生成领域开源社区生态的进一步丰富。一方面ModelScope会持续保障下一代的基础模型第一时间的接入,此外在API支持方面,包括多LoRA链式加载在内的诸多高阶能力以及更灵活的参数配置,我们也计划后续在API层面做更好的支持和透出,敬请期待!