图片违规检测
图片违规检测用于检测图片是否违规,帮助用户提高审核效率,降低安全风险。本文介绍图片违规检测的应用场景、使用限制和示例代码等。
应用场景
图片违规检测通常用于社区帖子、社交应用和用户头像等场景的内容审核。关于图片违规检测支持的检测内容,请参见图片违规检测。
社区帖子图片审核
对社区、论坛等平台中的图片进行审核,过滤色情、违禁、恶意推广等内容,降低平台违规风险、提升内容质量。
社交应用图片审核
在社交应用中存在大量的色情、广告图片,让应用面临监管风险,对实时聊天中的敏感图像进行高效过滤审核,降低业务违规风险。
用户头像审核
针对用户头像进行审核,检测图像是否含有色情、违禁、微商广告联系方式等内容,保障用户使用体验。
使用限制
图片违规检测的使用限制如下表所示:
限制项 | 限制 |
图片格式 | 支持检测的图片格式如下:
|
图片大小 | 支持检测的图片大小限制如下:
|
前提条件
- 已创建并获取AccessKey。具体操作,请参见创建AccessKey。
- 已开通OSS服务、创建存储空间并上传文件到存储空间。具体操作,请参见控制台上传文件。
- 已开通智能媒体管理服务。具体操作,请参见开通产品。
- 已通过智能媒体管理控制台创建项目。具体操作,请参见创建项目。说明
- 您也可以调用API接口创建项目。具体操作,请参见CreateProject - 创建项目。
- 您可以调用ListProjects - 列出所有项目信息的列表接口列出指定地域下已创建的所有项目信息。
检测过程
调用CreateImageModerationTask - 创建图片合规检测任务接口创建异步检测任务,检测图片是否违规。
任务开始执行后,任务信息只保存7天,超过7天则无法再获取。您可以通过以下几种方式及时获取任务信息:
调用GetTask - 获取任务信息或ListTasks - 列出任务接口获取返回的
TaskId
,查看任务信息。在与智能媒体管理相同的地域下开通MNS服务,并配置订阅关系,及时获取任务信息通知,异步通知消息格式请参见异步通知消息格式。关于MNS SDK的更多信息,请参见步骤四:接收和删除消息。
在与智能媒体管理相同的地域下开通RocketMQ服务,并创建RocketMQ 4.0实例、Topic、Group,及时获取任务信息通知,异步通知消息格式请参见异步通知消息格式。关于RocketMQ使用的更多信息,请参见调用HTTP协议的SDK收发普通消息。
在与智能媒体管理相同的地域下开通并接入事件总线EventBridge服务,及时获取任务信息通知。更多信息,请参见智能媒体管理IMM事件。
检测信息
IMM项目名称:test-project
图片路径:oss://test-bucket/test-object.jpg
检测结果:通过MNS消息返回
说明检测结果通过异步消息通知返回。异步消息通知Suggestion字段取值如下:
pass:通过,表示未检测到不合规内容。
block:检测到不合规内容,Categories字段为不合规分类。关于分类的更多信息,请参见内容安全检测结果。
review:需要人工二次审核,人工审核完成后会再发一条异步消息通知告知人工审核结果。
请求示例
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object.jpg",
// 您可以指定视频检测场景。如果不指定视频检测场景,则默认进行porn、terrorism、ad三个场景检测。
"Scenes": ["porn","terrorism","ad","live","qrcode","logo"],
"Notification": {"RocketMQ": {"Endpoint": "http://1023210024677934.mqrest.cn-beijing.aliyuncs.com", "TopicName": "topic-name", "InstanceId": "MQ_INST_ID"}}"
}
返回示例
{
"TaskId": "ImageModeration-1b77de73-ff9f-4c39-b254-****",
"RequestId": "D65E8038-C584-0809-9BF0-****",
"EventId": "392-1KlquE5TFnwOocgHx****"
}
MNS消息
{
"ProjectName": "test-project",
"DatasetName": "",
"RequestId": "D65E8038-C584-0809-9BF0-****",
"StartTime": "2022-07-04T23:19:12.282Z",
"EndTime": "2022-07-04T23:19:13.316Z",
"UserData": "test",
"TaskType": "ImageModeration",
"TaskId": "ImageModeration-1b77de73-ff9f-4c39-b254-****",
"Status": "Succeeded",
"Code": "",
"Message": "",
"URI": "oss://test-bucket/test-object.jpg",
"Suggestion": "block",
"Categories": [
"porn"
]
}
Suggestion为block
表示该图片违规,Categories中有porn
表示图片触发色情违规。
示例代码
以Python SDK 1.27.3版本为例,图片违规检测的完整示例代码如下。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
from typing import List
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> imm20200930Client:
"""
使用AccessKey ID&AccessKey Secret初始化账号Client。
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret
)
# 填写访问的域名。
config.endpoint = f'imm.cn-beijing.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
# 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
# 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
# 本示例通过从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/2361894.html。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
notification_rocket_mq = imm_20200930_models.RocketMQ(
endpoint='http://1023210024677934.mqrest.cn-beijing.aliyuncs.com',
topic_name='test-topic',
instance_id='test-instance'
)
notification = imm_20200930_models.Notification(
rocket_mq=notification_rocket_mq
)
create_image_moderation_task_request = imm_20200930_models.CreateImageModerationTaskRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
notification=notification
)
runtime = util_models.RuntimeOptions()
try:
# 复制代码运行请自行打印API的返回值。
client.create_image_moderation_task_with_options(create_image_moderation_task_request, runtime)
except Exception as error:
# 如有需要,请打印错误信息。
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
# 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
# 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
# 本示例通过从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/2361894.html。
imm_access_key_id = os.getenv("AccessKeyId")
imm_access_key_secret = os.getenv("AccessKeySecret")
client = Sample.create_client(imm_access_key_id, imm_access_key_secret)
notification_rocket_mq = imm_20200930_models.RocketMQ(
endpoint='http://1023210024677934.mqrest.cn-beijing.aliyuncs.com',
topic_name='test-topic',
instance_id='test-instance'
)
notification = imm_20200930_models.Notification(
rocket_mq=notification_rocket_mq
)
create_image_moderation_task_request = imm_20200930_models.CreateImageModerationTaskRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.jpg',
notification=notification
)
runtime = util_models.RuntimeOptions()
try:
# 复制代码运行请自行打印API的返回值。
await client.create_image_moderation_task_with_options_async(create_image_moderation_task_request, runtime)
except Exception as error:
# 如有需要,请打印错错误信息。
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])