有奖:语音产品征文挑战赛火热进行中> HOT

概述

Serverless应用中心 提供了 stable-diffusion-webui 项目的 Serverless 化部署能力。该应用创建成功后,您可以使用 stable diffusion webui 的全部能力,例如文生图、图生图,以及 Lora、ControlNet 等高阶能力。本文将介绍如何通过图片审核服务对应用生成的图片做内容合规检测。

准备工作

登录 Serverless 应用控制台,开通 Serverless 产品服务。
开通对象存储产品服务,并创建一个存储桶,详见新手指引
进入 数据万象控制台,开通数据万象服务。

操作步骤

步骤一:通过 Stable Diffusion AI 应用生成图片

创建 Stable Diffusion AI 应用

1. 登录 Serverless 控制台,选择左侧导航栏中的 Serverless 应用,在 Serverless 应用页面,单击新建应用。



2. 新建应用页面,根据页面相关信息提示进行配置:
创建方式:选择应用市场
模板:选择 Stable Diffusion AI 绘画自定义模型版。如下图所示:



3. 单击下一步,根据页面相关信息提示进行配置:
应用名:例如 “aigc-auditing-server”。
地域:例如 “北京”。
应用类型:选择 SD API(无Web UI)的方式,通过API调用。



4. 单击完成,即可完成应用创建、函数创建以及 API 网关触发器创建。函数服务显示正常,即创建完成,如下图所示:




使用 Stable Diffusion AI 应用生成图片

您可以使用平台测试模板或API接口两种方式生成图片:
使用平台测试模板生成图片
通过控制台中的应用测试页面,您可以测试生成图片,按如下配置:
请求方式:POST
path: /sdapi/v1/txt2img
Content-Type: application/json
body: 传入绘图的参数,如prompt



使用API接口生成图片(以Python为例)
url:设置函数服务的访问路径
body: 设置绘图参数
图像转换可以安装pillow,使用 pip 安装(推荐)。
pip install pillow
代码示例:
import json
import requests
import io
import base64
from PIL import Image, PngImagePlugin

url = "https://service.*********.tencentcs.com/release/"

# 文生图接口
path='sdapi/v1/txt2img'

# 绘图参数
body = {
"prompt": "1 girl, upper body, look at viewer",
"steps": 20
}

# API请求
response = requests.post(url=f'{url}{path}', json=body)
r = response.json()

# 保存生成的图片
if 'images' in r:
for i in r['images']:
image = Image.open(io.BytesIO(base64.b64decode(i.split(",",1)[0])))
png_payload = {
"image": "data:image/png;base64," + i
}
response2 = requests.post(url=f'{url}sdapi/v1/png-info', json=png_payload)
pnginfo = PngImagePlugin.PngInfo()
pnginfo.add_text("parameters", response2.json().get("info"))
image.save('output.png', pnginfo=pnginfo)
生成图片示例如下所示:






步骤二:通过数据万象图片审核接口进行审核

图片审核概述

图片批量审核接口 支持同步、异步请求方式,您可以通过本接口对多个图片文件进行内容审核,该接口属于 POST 请求。

图片审核调用示例(以Python为例)

依赖 qcloud_cos 使用 pip 安装(推荐)。
pip install -U cos-python-sdk-v5
代码示例:
import sys import os import logging import base64 from qcloud_cos import CosConfig from qcloud_cos import CosS3Client from qcloud_cos.cos_comm import CiDetectType

# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成。
secret_id = os.environ['COS_SECRET_ID'] # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见:https://cloud.tencent.com/document/product/598/37140
secret_key = os.environ['COS_SECRET_KEY'] # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见:https://cloud.tencent.com/document/product/598/37140
region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看:https://console.cloud.tencent.com/cos5/bucket token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见:https://cloud.tencent.com/document/product/436/14048
scheme = 'https' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填
bucket_name='test' # 指定cos桶中bucket的名称
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme) client = CosS3Client(config) # 创建 cos client
img_path='./output.png' # 生成的图片路径
with open(img_path, 'rb') as file: data = file.read() base64_data = base64.b64encode(data).decode("utf-8") # 将数据转换为Base64编码 response = client.ci_auditing_image_batch( # 调用审核接口 Bucket=bucket_name, DetectType=CiDetectType.PORN, Input=[ { 'Content':base64_data, #图像数据的base64编码 } ] ) print(response)
其他细节,请参考 图片批量审核

图片审核结果