图片违规检测

图片违规检测用于检测图片是否违规,帮助用户提高审核效率,降低安全风险。本文介绍图片违规检测的应用场景、使用限制和示例代码等。

应用场景

图片违规检测通常用于社区帖子、社交应用和用户头像等场景的内容审核。关于图片违规检测支持的检测内容,请参见图片违规检测

社区帖子图片审核

对社区、论坛等平台中的图片进行审核,过滤色情、违禁、恶意推广等内容,降低平台违规风险、提升内容质量。

社交应用图片审核

在社交应用中存在大量的色情、广告图片,让应用面临监管风险,对实时聊天中的敏感图像进行高效过滤审核,降低业务违规风险。

用户头像审核

针对用户头像进行审核,检测图像是否含有色情、违禁、微商广告联系方式等内容,保障用户使用体验。

使用限制

图片违规检测的使用限制如下表所示:

限制项

限制

图片格式

支持检测的图片格式如下:

  • PNG

  • JPG

  • JPEG

图片大小

支持检测的图片大小限制如下:

  • 图片大小不超过20 MB

  • 图片高度或宽度不超过3万像素(px)

  • 图片总像素不超过2.5亿像素(px)

前提条件

检测过程

调用CreateImageModerationTask - 创建图片合规检测任务接口创建异步检测任务,检测图片是否违规。

重要

任务开始执行后,任务信息只保存7天,超过7天则无法再获取。您可以通过以下几种方式及时获取任务信息:

检测信息

  • 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"
    ]
}
说明

Suggestionblock表示该图片违规,Categories中有porn表示图片触发色情违规。

示例代码

以Python SDK 1.27.3版本为例,图片违规检测的完整示例代码如下。

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
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(
            # 必填,填写AccessKey ID。
            access_key_id=access_key_id,
            # 必填,填写AccessKey Secret。
            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泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式,更多鉴权访问方式请参见https://help.aliyun.com/document_detail/378659.html。
        client = Sample.create_client('accessKeyId', 'accessKeySecret')
        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泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的STS方式,更多鉴权访问方式请参见https://help.aliyun.com/document_detail/378659.html。
        client = Sample.create_client('accessKeyId', 'accessKeySecret')
        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:])
阿里云首页 智能媒体管理 相关技术圈