You need to enable JavaScript to run this app.
导航
veImageX-豆包智能生图最佳实践
最近更新时间:2024.11.28 13:49:17首次发布时间:2024.11.08 11:15:13

本文旨在解决豆包大模型视觉模型生成的图片能够友好的全链路使用,解决用户在使用中的调用、存储、分发、后处理相关的问题。

使用最佳实践底层的能力和模型均由 火山方舟 提供,因为提供的能力、效果均由对齐火山方舟 视觉模型 的效果,并基于该模型做了能力扩展。

能力扩展对比

类型能力对比直接调用豆包 APIveImageX-豆包 AIGC 生图

Doubao-文生图模型-智能绘图
(同步 or 异步)

通用 2.0L-文生图(CVProcess)

通用 2.0S-文生图(HighAesSmartDrawing)
通用 XL pro-文生图(Text2ImgXLSft)
通用 1.4-文生图(CVProcess)
通用 1.3-文生图(HighAesSmartDrawing)
通用 1.2-文生图(HighAesSmartDrawing)
动漫 1.3.X-文生图/图生图(CVProcess)
通用XL pro-图生图(Img2ImgXLSft)
通用 2.0S-角色特征保持(CVProcess)

通用 1.4-角色特征保持(CVProcess)

单图写真(pv版)(HighAesSmartDrawing)
outpainting智能扩图(Img2ImgOutpainting)
通用 2.0L-指令编辑(SeedEdit)(CVProcess)
动漫 1.3.X-文生图/图生图异步
通用 2.0L-文生图异步
通用 2.0S-文生图异步

Doubao-图生图模型-AIGC图像风格化

AIGC 图像风格化(CVProcess)

Doubao-文生图模型-智能绘图(漫画版)

人像保持同步(CVProcess)

人像保持异步
调用形式APIAPI+SDK
数据流传输公网下载,再上传通过内网直接存入 veImageX 存储中

扩展能力

无损压缩存储

-

常规存储存储-
压缩分发-
盲水印-
智能人像裁剪-
智能超分辨率-
水印添加-
智能审核-
画质增强-
输入限制输入的图片体积-单图扩展到 35MB,使用时会转码
输入的图片分辨率-超额分辨率会做前处理

输出限制

输出限制

  1. 返回图片 base64 资源
  2. 返回临时图片的 URL

返回 veImageX 的永久 URL 和存储 URI

通过 veImageX 提供的 OpenAPI 调用 Doubao 大模型的过程中,传入的大模型参数几乎完全透传。

注意事项

每次调用 API 仅会生成 1 张图,如需获取多张图,请分批调用接口。

前提条件

操作准备

开通豆包大模型

  1. 登录火山方舟控制台,进入开通管理页面。

  2. 点击并进入视觉大模型页签,依次完成以下三个豆包模型的开通。开通后,您就能通过 veImageX 的 OpenAPI 接入豆包的 API 服务。

开通授权

  1. 登录 veImageX 控制台,进入附加组件

  2. 智能处理页签下,选择 ImageX-豆包 AIGC 方案组件后单击产品体验按钮。

  3. 切换为基础配置页签,单击前往授权按钮,完成授权。

获取 veImageX 配置信息

在正式开始使用前,您还需要在 veImageX 侧提前获取以下信息。

  1. 获取图像处理服务的服务 ID:进入控制台的服务管理页面,查看并记录正常状态的图像处理服务的服务 ID。

  2. 获取服务内正常可用的域名:进入上面服务的基础配置页面,在分发配置页签下查看并记录正常且 CNAME 已解析的域名。

  3. 获取图片处理模板的模板配置:进入上面服务的处理配置页面,查看并记录图片处理模板的模板配置(不带~)。如tplv-xxxxxxx-6.image

调用示例

在调用前,您已参考操作准备在 veImageX 侧获取到了以下配置信息。

ak=ak
sk=sk
Domain=imagex.example.com           // 仅为示例
ServiceId=n9xxxxxxxz3               // 仅为示例
Template=tplv-n9xxxxxxxz3-69.jpeg   // 仅为示例

各模型的调用示例如下。

Doubao-文生图模型-智能绘图

# coding:utf-8
from volcengine.imagex.v2.imagex_service import ImagexService

if __name__ == '__main__':
    service = ImagexService()
    
    service.set_socket_timeout(30)                 # 设置请求超时时间
    service.set_ak('ak')                           # 传入账号的 AK
    service.set_sk('sk')                           # 传入账号的 SK

    query = {
    # 以下为火山引擎 veImageX 获取到的配置
    # 参数 ServiceId,表示 veImageX 的服务 ID,需要为图像处理服务,可参考操作准备获取
    'ServiceId': 'n9xxxxxxxz3'                      
    }
    body = {
        # 以下为火山引擎 veImageX 获取到的配置
        # 参数 Domain,表示 veImageX 的服务下的域名,可参考操作准备获取
        # 参数 Template,表示 veImageX 的图片处理模板配置,可参考操作准备获取
        # 参数 Outputs,表示自定义的结果图文件名
        "Domain": "imagex.example.com",              
        "Template": "tplv-n9xxxxxxxz3-69.jpeg",   
        "Outputs": [                                
            "demo1.png"
        ],
        
        # 以下是火山方舟豆包 API 的参数,SDK 会进行透传
        # 参数 ModelAction,表示所用豆包 API 的接口 Action,同步类型的取值有:
        #     1. CVProcess:[通用 2.0L-文生图](https://www.volcengine.com/docs/6791/1339374),[通用 1.4-文生图](https://www.volcengine.com/docs/6791/1278096),[动漫 1.3.X-文生图/图生图](https://www.volcengine.com/docs/6791/1213131)、[通用 2.0S-角色特征保持](https://www.volcengine.com/docs/6791/1361423)、[通用 1.4-角色特征保持](https://www.volcengine.com/docs/6791/1354010)、[通用 2.0L-指令编辑(SeedEdit)](https://www.volcengine.com/docs/6791/1384311)
        #     2. HighAesSmartDrawing:[通用 2.0S-文生图](https://www.volcengine.com/docs/6791/1333839),[通用 1.3-文生图](https://www.volcengine.com/docs/6791/1213132),[通用 1.2-文生图](https://www.volcengine.com/docs/6791/1213130)、[单图写真(pv版)](https://www.volcengine.com/docs/6791/1213737)
        #     3. Text2ImgXLSft:[通用 XL pro-文生图](https://www.volcengine.com/docs/6791/1330195) 
        #     4. Img2ImgOutpainting:[outpainting智能扩图](https://www.volcengine.com/docs/6791/1223722)
        #     5. Img2ImgXLSft:[通用XL pro-图生图](https://www.volcengine.com/docs/6791/1330203)
        # 参数 ModelVersion,表示所用豆包 API 的接口 Version,取值固定为 2022-08-31
        # 参数 ReqJson,表示所用豆包 API 的接口的请求参数。需要根据对应接口文档参数描述进行传值,每个接口各不相同。
        
        "ModelVersion": "2022-08-31",           
        "ModelAction": "CVProcess",                 
        "ModelVersion": "2022-08-31",               
        "ReqJson": {                                
            "req_key": "high_aes_general_v20_L",    
            "prompt": "雨后,出现一道彩虹,飞过一群鸟儿" 
        },      
    }

    resp = service.get_cv_text_generate_image(query, body)
    print(resp)

Doubao-图生图模型-AIGC图像风格化

# coding:utf-8
from volcengine.imagex.v2.imagex_service import ImagexService

if __name__ == '__main__':
    service = ImagexService()

    service.set_socket_timeout(30)                 # 设置请求超时时间
    service.set_ak('ak')                           # 传入账号的 AK
    service.set_sk('sk')                           # 传入账号的 SK

    query = {
        # 以下为火山引擎 veImageX 获取到的配置
        # 参数 ServiceId,表示 veImageX 的服务 ID,需要为图像处理服务,可参考操作准备获取
        'ServiceId': 'n9xxxxxxxz3'                 
    }
    body = {
        # 以下为火山引擎 veImageX 获取到的配置
        # 参数 Domain,表示 veImageX 的服务下的域名,可参考操作准备获取
        # 参数 Template,表示 veImageX 的图片处理模板配置,可参考操作准备获取
        # 参数 Outputs,表示自定义的结果图文件名
        "Domain": "imagex.example.com",             
        "Template": "tplv-n9xxxxxxxz3-69.jpeg",     
        "ImageUrl": "http://test.img.com/A.png",   
        "Outputs": [                               
            "demo2.png"
        ],
        
        # 以下是火山方舟豆包 API 的参数,SDK 会进行透传 
        # 参数 ModelAction,表示所用豆包 API 的接口 Action,取值固定为 CVProcess    
        # 参数 ModelVersion,表示所用豆包 API 的接口 Version,取值固定为 2022-08-31
        # 参数 ReqJson,表示所用豆包 API 的接口的请求参数。需要根据对应接口文档参数描述进行传值,每个接口各不相同。
        
        "ModelAction": "CVProcess",                
        "ModelVersion": "2022-08-31",               
        "ReqJson": {                                
            "req_key": "img2img_water_ink_style",   
            "image_urls": [                        
                "http://test.img.com/B.jpeg"]
        }

    }

    resp = service.get_cv_image_generate_result(query, body)
    print(resp)

Doubao-文生图模型-智能绘图(漫画版)

# coding:utf-8
from volcengine.imagex.v2.imagex_service import ImagexService

if __name__ == '__main__':
    service = ImagexService()

    service.set_socket_timeout(30)                 # 设置请求超时时间
    service.set_ak('ak')                           # 传入账号的 AK
    service.set_sk('sk')                           # 传入账号的 SK

    query = {
        # 以下为火山引擎 veImageX 获取到的配置
        # 参数 ServiceId,表示 veImageX 的服务 ID,需要为图像处理服务,可参考操作准备获取
        'ServiceId': 'n9xxxxxxxz3'                
    }
    }
    body = {
        # 以下为火山引擎 veImageX 获取到的配置
        # 参数 Domain,表示 veImageX 的服务下的域名,可参考操作准备获取
        # 参数 Template,表示 veImageX 的图片处理模板配置,可参考操作准备获取
        # 参数 Outputs,表示自定义的结果图文件名
        "Domain": "imagex.example.com",            
        "Template": "tplv-n9xxxxxxxz3-69.jpeg",    
        "Outputs": [                              
            "demo3.png"
        ],
        
        # 以下是火山方舟豆包 API 的参数,SDK 会进行透传 
        # 参数 ModelAction,表示所用豆包 API 的接口 Action,同步类型的取值固定为 CVProcess     
        # 参数 ModelVersion,表示所用豆包 API 的接口 Version,取值固定为 2022-08-31
        # 参数 ReqJson,表示所用豆包 API 的接口的请求参数。需要根据对应接口文档参数描述进行传值,每个接口各不相同。
        
        "ModelAction": "CVProcess",               
        "ModelVersion": "2022-08-31",            
        "ReqJson": {                             
            "req_key": "img2img_anime_accelerated_maintain_id_for_smart_drawing_anime",                
            "image_urls": ["http://test.img.com/A.png"]  
        }

    }

    resp = service.get_cv_anime_generate_image(query, body)
    print(resp)

服务端 SDK

veImageX 提供了多种语言的服务端 SDK,具体如下所示:

常见问题

如何处理调用服务端 SDK 时出现的请求超时问题?

您可通过设置超时时间来处理,以下为各语言设置超时的代码:

  • Python:service.set_socket_timeout(30)

  • Go:instance.Client.SetTimeout(30)

  • Java:instance.setSocketTimeout(30)

  • Node.js:通常在接口第二个参数进行设置,如const res = await Client.GetCVTextGenerateImage(requestParam, params:{timeout: 30})