图像内容风控解决方案

在线上业务的内容生产过程中,为了及时识别其中的高风险内容,PAI提供了图像内容风控解决方案。该方案使用Designer预置模板,基于人工智能算法快速构建符合业务场景的风控模型,并部署为EAS在线服务,助力您快速识别高风险内容,进而对其进行拦截。

背景信息

在诸多生产内容的场景(例如使用图像进行评论、发布短视频、直播等)中,由于生产内容的范围不受限,因此难免出现高风险内容,您需要识别这些高风险内容,并及时拦截。针对该问题,阿里云PAI提出了如下解决方案,借助人工智能算法,帮助您快速判断风险内容:

  • 解决方案

    1. 基于iTAG平台和PAI数据集管理,对目标场景的图像进行快捷标注和样本管理。

    2. 基于PAI提供的预训练模型,针对自己的图像风控场景,在可视化建模平台Designer上进行模型微调,从而基于Resnet50构建图像分类模型或目标检测模型。

    3. 将模型部署至EAS,形成完整的端到端流程,从而自动识别生产过程中的风险内容。

  • 方案架构

    图像内容风控解决方案的架构图如下所示。

    image

前提条件

使用限制

由于OSS不能跨地域访问数据,因此存储数据的OSS Bucket与构建模型的Designer工作流必须在同一地域。

操作流程

基于阿里云PAI平台,构建图像内容风控解决方案的流程如下:

  1. 准备数据

    首先将原始图片数据存储在OSS,然后利用PAI数据集管理将原始数据扫描生成索引文件,最后通过iTAG进行数据标注,从而获得标注结果数据集,用于后续的模型训练。

    PAI提供了原始数据集,您可以直接使用它进行数据准备。关于数据集的下载方式,请参见内容风控领域的图像分类数据集内容风控领域的目标检测数据集

  2. 构建用于图像内容风控的模型。

    在可视化建模(Designer)中,基于预训练模型,您可以构建Resnet50图像分类模型或目标检测模型进行风险识别。实际应用中,您需要结合业务场景选择构建合适的模型:

    • 图像分类训练(torch)

      如果您的业务场景是将图像整体进行风险类别分类,则构建图像分类模型。

    • 图像检测训练

      如果您的业务场景是将图像中的某些高风险的实体进行框选检测,则构建目标检测模型。

  3. 部署及调用模型服务

    通过EAS,您可以将训练好的内容风控模型部署为在线服务,并在实际的生产环境中调用,从而进行推理实践。

准备数据

本方案使用PAI公共数据集,您也可以参照以下操作步骤准备数据集。

  1. 将原始图片分为训练数据集和测试数据集,分别上传至已创建的OSS Bucket。关于如何将文件上传至OSS,请参见上传文件

  2. 利用PAI数据集管理将原始数据扫描生成.manifest索引文件,详情请参见创建数据集:扫描文件夹创建数据集

  3. 通过iTAG管理员控制台,创建标注任务,详情请参见创建标注任务

  4. 通过iTAG标注员控制台,进行数据标注,详情请参见处理标注任务

  5. 智能标注(iTAG)页面的任务中心页签,单击标注完成的任务操作列下的获取标注结果,得到存放在指定OSS目录下的标注结果数据集。

构建模型

本方案使用Designer预置的模板构建图像分类模型或图像目标检测模型,您需要结合业务场景选择构建合适的模型。

构建图像分类模型

  1. 进入Designer页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型开发与训练 > 可视化建模(Designer),进入Designer页面。

  2. 基于预置模板,创建图像分类工作流。

    1. 可视化建模(Designer)页面,单击预置模板页签。

    2. 单击CV页签。

    3. 图像分类区域,单击创建

    4. 新建工作流对话框,配置参数,并单击确定

      其中:工作流数据存储建议配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。

  3. 进入工作流,并配置组件参数。

    1. 可视化建模(Designer)页面,单击工作流列表页签。

    2. 选中刚才创建好的模板工作流,并单击进入工作流

    3. 系统根据预置的模板,自动构建工作流。本方案使用默认配置。如果您需要对模板预置的参数进行调整,可以参考图像分类训练组件文档。

  4. 在画布左上方,单击运行按钮image.png,运行工作流。

构建目标检测模型

  1. 进入Designer页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型开发与训练 > 可视化建模(Designer),进入Designer页面。

  2. 基于预置模板,创建目标检测工作流。

    1. 可视化建模(Designer)页面,单击预置模板页签。

    2. 单击CV页签。

    3. 图像目标检测区域,单击创建。

    4. 新建工作流对话框,配置参数,并单击确定

      其中:工作流数据存储建议配置为OSS Bucket路径,用于存储工作流运行中产出的临时数据和模型。

  3. 进入工作流,并配置组件参数。

    1. 可视化建模(Designer)页面,单击工作流列表页签。

    2. 双击刚才创建好的模板工作流,进入工作流。

    3. 系统根据预置的模板,自动构建工作流。本方案使用默认配置,如果您需要对模板预置的参数进行调整,可以参考图像检测训练组件文档。

  4. 在画布左上方,单击运行按钮image.png,运行工作流。

部署及调用模型服务

通过EAS,您可以将训练好的图像分类模型或图像目标检测模型部署为在线服务,并在实际的生产环境中调用,从而进行推理实践。

  1. 进入模型在线服务(EAS)页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型部署 > 模型在线服务(EAS),进入模型在线服务(EAS)页面。

  2. 部署模型服务。

    1. 模型在线服务(EAS)页面,单击部署服务,在自定义模型部署区域,单击自定义部署

    2. 新建服务页面,配置以下参数(此处仅介绍与本案例相关的核心参数配置方法,其他参数的解释请参见控制台上传部署),参数配置完成后单击部署

    3. 参数

      描述

      服务名称

      自定义模型名称,建议结合实际业务进行命名,以区分不同的模型服务。

      部署方式

      选择模型+processor部署服务

      模型文件

      本案例中训练好的模型均存储在OSS中,因此选择OSS挂载。并在构建模型步骤中配置的工作流数据存储目录下,选择epoch_xx_export.pt模型文件所在的OSS目录。本方案以构建图像分类模型为例,选择图像分类模型文件所在的OSS路径。

      Processor种类

      选择EasyCV

      模型类别

      本方案选择图像分类

      • 如果部署图像分类模型,则选择图像分类

      • 如果部署目标检测模型,则选择目标检测

  3. 查看模型服务的公网地址和访问Token。

    1. 模型在线服务(EAS)页面,单击目标服务服务方式列下的调用信息

    2. 调用信息对话框的公网地址调用页签,查看公网调用的访问地址和Token

  4. 使用脚本进行批量调用。

    1. 在本地创建调用模型服务的Python脚本。

      • 图像分类的Python脚本cv_risk_cls.py

        import requests
        import base64
        import sys
        import json
        resp = requests.get('<image_url>')
        ENCODING = 'utf-8'
        datas = json.dumps( {
                    "image": base64.b64encode(resp.content).decode(ENCODING),
                    })
        head = {
           "Authorization": "YjdhYWRhYWZhYzNjZTFlMDZlNjAxxxxxxxxxxxxxxxxxxxx" # 服务的访问Token需要替换为实际值。
        }
        for x in range(0,1):
            # 下面的服务公网访问地址需要替换为实际值。
            resp = requests.post("<service_url>", data=datas, headers=head)
            print(resp.text)
        print("test endding")

        其中:<image_url>替换为图片URL地址,例如https://xxxx/1.jpgAuthorization配置为已获取的服务Token。<service_url>替换为已获取的服务访问地址。

      • 目标检测的Python脚本cv_risk_det.py

        import requests
        import base64
        import sys
        import json
        img_file = './xxx.jpg'
        ENCODING = 'utf-8'
        datas = json.dumps( {
                    "image": base64.b64encode(open(img_file, 'rb').read()).decode(ENCODING),
                    })
        head = {
           "Authorization": "NGVkMTVmZjNlNzA3ZGVlNWIzxxxxxxxxxxxxxx" # 服务的访问Token需要替换为实际值。
        }
        # 下面的服务公网访问地址需要替换为实际值。
        r = requests.post("<service_url>", data=datas, headers=head)
        print(r.text)

        其中:img_file配置为脚本所在目录下的图片文件名;Authorization配置为已获取的服务Token。<service_url>替换为已获取的服务访问地址。

    2. 将图像分类或目标检测的Python脚本上传至您的任意环境,并在脚本上传后的当前目录执行如下调用命令。

      $ python3 <cv_risk_xxx.py>

      其中<cv_risk_xxx.py>需要替换为实际的Python脚本名称。

      调用服务后,得到的预测结果示例如下图所示。预测结果示例

  5. 监控服务指标。

    调用模型服务后,您可以查看模型调用的相关指标水位,包括QPS、RT、CPU、GPU以及Memory。

    1. 模型在线服务(EAS)页面,单击已调用服务服务监控列下的image.png图标。

    2. 服务监控页签,即可查看模型调用的指标水位。

      image.png

相关文档