首页 机器学习PAI 最佳实践 图像内容风控解决方案

图像内容风控解决方案

在线上业务的内容生产过程中,为了及时识别其中的高风险内容,PAI提供了图像内容风控解决方案。本文介绍如何基于人工智能算法,快速构建符合业务场景的风控模型,助力您快速识别高风险内容,进而对其进行拦截。

背景信息

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

  • 解决方案

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

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

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

  • 方案架构

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

前提条件

  • 已开通PAI(Designer、DSW、EAS)后付费,详情请参见开通并创建默认工作空间

  • 已为工作空间关联MaxCompute计算资源或DLC计算资源,详情请参见管理工作空间

  • 已创建OSS存储空间(Bucket),用于存储原始数据、标签列表文件及训练获得的模型文件。关于如何创建存储空间,请参见创建存储空间

  • 已创建PAI EAS专属资源组,本文训练好的模型会部署至该资源组。关于如何创建专属资源组,请参见创建专属资源组

使用限制

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

操作流程

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

  1. 准备数据

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

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

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

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

    • 图像分类训练(torch)

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

    • 图像检测训练

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

  3. 部署及调用模型服务

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

准备数据

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

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

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

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

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

构建图像分类模型

  1. 进入PAI-Designer页面。
    1. 登录PAI控制台
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
    3. 在工作空间页面的左侧导航栏选择模型开发和训练 > 可视化建模(Designer),进入Designer页面。
  2. 基于预置模板,创建图像分类工作流。

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

    2. 单击CV页签。

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

    4. 新建工作流对话框,先输入工作流名称描述、选择可见范围工作流数据存储位置,再单击确定即可创建工作流。

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

    1. 可视化建模(Designer)页面,单击工作流列表页签。
    2. 选中刚才创建好的模板工作流,并单击进入工作流
    3. 系统根据预置的模板,自动构建工作流。如果您需要对模板预置的参数进行调整,可以参考图像分类训练组件文档。

  4. 工作流执行完成后,在Designer画布上方,单击模型部署>单模型部署,将训练完成的模型部署为在线服务,详情请参见单模型部署在线服务

构建目标检测模型

  1. 进入PAI-Designer页面。

    1. 登录PAI控制台

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

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

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

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

    2. 单击CV页签。

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

    4. 新建工作流对话框,先输入工作流名称描述、选择可见范围工作流数据存储位置,再单击确定即可创建工作流。

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

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

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

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

部署及调用模型服务

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

  1. 进入PAI EAS模型在线服务页面。
    1. 登录PAI控制台
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
    3. 在工作空间页面的左侧导航栏选择模型部署 > 模型在线服务(EAS),进入PAI EAS模型在线服务页面。
  2. 部署模型服务。

    1. PAI EAS模型在线服务页面,单击部署服务

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

      参数

      描述

      服务名称

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

      资源组种类

      建议使用专属资源组部署模型服务,从而避免公共资源组资源有限时导致的服务排队。关于如何创建专属资源组,请参见使用专属资源组

      Processor种类

      选择EasyVision

      模型类型

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

      如果部署目标检测模型,则选择目标检测实例分割

      模型文件

      本案例中训练好的模型均存储在OSS中,因此选择OSS文件导入

      如果部署图像分类模型,则选择训练所用OSS目录export文件夹中的模型文件夹(其中包含assets文件夹、variables文件夹及saved_model.pb)。例如,对于下图中的模型目录结构,您需要将OSS路径选择到/1627044625/目录。模型文件

      如果部署目标检测模型,则选择训练所用OSS目录下的模型文件即可。例如选择epoch_50_export.pt

  3. 查看模型服务的公网地址和访问Token。
    1. PAI EAS模型在线服务页面,单击目标服务服务方式列下的调用信息
    2. 调用信息对话框的公网地址调用页签,查看公网调用的访问地址和Token
  4. 使用脚本进行批量调用。

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

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

      import requests
      import base64
      import sys
      import json
      resp = requests.get('https://tongxin-lly.oss-cn-hangzhou.aliyuncs.com/iTAG/pic_public/1.jpg')
      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("http://1664081855183111.cn-shanghai.pai-eas.aliyuncs.com/api/predict/cv_risk_cls001", data=datas, headers=head)
          print(resp.text)
      print("test endding")
      • 目标检测的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("http://1664081xxxxxxxxx.cn-shanghai.pai-eas.aliyuncs.com/api/predict/cv_risk_obj001", data=datas, headers=head)
        print(r.text)
    2. 将图像分类或目标检测的Python脚本上传至您的任意环境,并在脚本上传后的当前目录执行如下调用命令。

      $ python3 <cv_risk_xxx.py>

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

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

  5. 监控服务指标。

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

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

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

      从下面的服务监控水位图中可以看到,本案例部署的模型时延在50 ms左右。您自己的模型时延以实际为准。模型时延

阿里云首页 机器学习 相关技术圈