一键部署阶跃星辰 Step1X-Edit模型

Step1X-Edit是阶跃星辰推出的先进开源图像编辑模型,致力于提升编辑精度和图像保真度。通过整合多模态语言技术与扩散图像解码器,该模型在多种编辑任务中展现出卓越性能,能够满足专业图像编辑的需求。PAI已全面支持该模型,您可以在PAI-Model Gallery中轻松进行一键部署和调用。

模型简介

阶跃星辰正式发布并开源了图像编辑大模型Step1X-Edit。该模型结合了多模态大型语言模型(MLLM)与扩散图像解码器(DiT),在图像编辑领域实现了显著的性能提升。Step1X-Edit的总参数量达到19B,具备高精度的编辑能力和图像保真度,在技术上展现出多方面的优势:

  • 语义精准解析:模型能够精确理解用户的编辑指令,并进行语义层面的解析,从而确保编辑结果符合用户的意图。

  • 身份一致性保持:在进行编辑时,模型能够保持图像中的身份一致性,确保主体特征不受影响。

  • 高精度区域级控制:支持对图像特定区域进行精确控制和编辑,实现细粒度的图像修改。

  • 丰富的任务支持:支持多达11类高频图像编辑任务类型,包括文字替换、风格迁移等,满足用户在多样化图像编辑中的广泛需求。

  • 卓越的性能表现:在最新的图像编辑基准GEdit-Bench中,Step1X-Edit在语义一致性、图像质量和综合得分三项指标上均表现优异,展现了其在图像编辑领域的领先地位。

更多关于Step1X-Edit信息,请参见stepfun-ai/Step1X-Edit

运行环境要求

部署阶跃星辰 Step1X-Edit模型,建议使用显存容量为48GB或以上的卡型。

模型部署

  1. 进入Model Gallery页面。

    1. 登录PAI控制台

    2. 在顶部左上角根据实际情况选择地域。

    3. 在左侧导航栏选择工作空间列表,单击指定工作空间名称,进入对应工作空间。

    4. 在左侧导航栏选择快速开始 > Model Gallery

  2. Model Gallery页面右侧的模型列表中,搜索阶跃星辰 Step1X-Edit,并单击该模型卡片,进入模型详情页面。

  3. 单击右上角部署,配置推理服务名称以及部署使用的资源信息,即可将模型部署到EAS推理服务平台。

    image

模型调用

已部署的阶跃星辰 Step1X-Edit模型支持Web应用和API调用两种方式:

Web应用

在模型服务详情页单击右上角查看WEB应用,进入WebUI页面。

image

上传图片和输入Prompt之后,单击Generate,即可生图。

daf55879bf7aeed0c1695928c5452aa9

API调用

在模型服务详情页单击查看调用信息,即可获取服务地址和Token信息。

image

通过以下Python示例代码即可实现API调用:

import requests
import time

EAS_URL = "<YOUR_EAS_URL>"
EAS_TOKEN = "<YOUR_EAS_TOKEN>"


class TaskStatus:
    PENDING = "pending"
    PROCESSING = "processing"
    COMPLETED = "completed"
    FAILED = "failed"


response = requests.post(
    f"{EAS_URL}/generate",
    headers={
        "Authorization": f"{EAS_TOKEN}"
    },
    json={
        "prompt": "A spaceship orbiting Earth",
        "seed": 42,
        "neg_prompt": "low quality, blurry",
        "infer_steps": 28,
        "cfg_scale": 6,
        "size":1024,
        "image": "<您图片的Base64编码>"
    }
)
task_id = response.json()["task_id"]
print(f"Task ID: {task_id}")

while True:
    status_response = requests.get(
        f"{EAS_URL}/tasks/{task_id}/status",
        headers={
            "Authorization": f"{EAS_TOKEN}"
        })
    status = status_response.json()

    print(f"Current status: {status['status']}")

    if status["status"] == TaskStatus.COMPLETED:
        print("Image ready!")
        break
    elif status["status"] == TaskStatus.FAILED:
        print(f"Failed: {status['error']}")
        exit(1)

    time.sleep(5)

image_response = requests.get(
    f"{EAS_URL}/tasks/{task_id}/image",
    headers={
        "Authorization": f"{EAS_TOKEN}"
    })
with open("generated_image.jpg", "wb") as f:
    f.write(image_response.content)

print("Image downloaded successfully!")

注:代码中EAS_URLEAS_TOKEN的值需替换为已获取的服务地址和Token。

相关参考