概述
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 jsonimport requestsimport ioimport base64from PIL import Image, PngImagePluginurl = "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)
生成图片示例如下所示:
步骤二:通过数据万象图片审核接口进行审核
图片审核概述
图片审核调用示例(以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/37140secret_key = os.environ['COS_SECRET_KEY'] # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见:https://cloud.tencent.com/document/product/598/37140region = 'ap-beijing' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看:https://console.cloud.tencent.com/cos5/bucket token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见:https://cloud.tencent.com/document/product/436/14048scheme = '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 clientimg_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)
图片审核结果