更新时间:2024-10-16 GMT+08:00
分享

创建ModelArts数据校验任务

前提条件

  • 数据已准备完成:已经创建数据集或者已经将数据上传至OBS。
  • 确保您使用的OBS与ModelArts在同一区域。

创建数据处理任务

  1. 登录ModelArts管理控制台,在左侧的导航栏中选择“资产管理>数据处理”,进入“数据处理”页面。
  2. “数据处理”页面,单击“创建”进入“创建数据处理”页面。
  3. 在创建数据处理页面,填写相关算法参数。
    1. 填写基本信息。基本信息包括“名称”“版本”“描述”。其中“版本”信息由系统自动生成,按“V0001”“V0002”规则命名,用户无法修改。
      您可以根据实际情况填写“名称”“描述”信息。
      图1 创建数据处理基本信息
    2. 设置场景类别。场景类别当前支持“图像分类”“物体检测”
    3. 设置数据处理类型为“数据清洗”,填写相应算子的设置参数,算子的详细参数参见数据校验算子说明(MetaValidation算子)
      图2 设置场景类别和数据处理类型
    4. 设置输入与输出。需根据实际数据情况选择“数据集”“OBS目录”。设置为“数据集”时,需填写“数据集名称”“数据集版本”;设置为“OBS目录”时,需填写正确的OBS路径。
      图3 输入输出设置-数据集
      图4 输入输出设置-OBS目录
    5. 确认参数填写无误后,单击“创建”,完成数据处理任务的创建。

数据校验算子说明(MetaValidation算子)

ModelArts的数据校验通过MetaValidation算子实现。当前ModelArts支持jpg、jpeg、bmp、png四种图片格式。物体检测场景支持xml标注格式,不支持“非矩形框”标注。针对您提供的数据集,MetaValidation算子支持对图片和xml文件进行数据校验:

表1 图片类数据校验

异常情况

处理方案

图片本身损坏无法解码

过滤掉不能解码的图片

图片通道可能是1通道、2通道,不是常用的3通道

转换图片成RGB三通道

图片格式不在ModelArts支持的格式范围内

转换图片格式至jpg格式

图片后缀与实际格式不符,但格式在ModelArts支持的格式内

后缀转换成与实际格式一致

图片后缀与实际格式不符,且格式不在ModelArts支持的格式内

转换图片格式至jpg格式

图片分辨率过大

宽、高按指定大小同比例进行裁剪

表2 标注类文件数据校验

异常情况

处理方案

xml结构残缺,无法解析

过滤xml文件

xml中没有标注“object”

过滤xml文件

xml中没有矩形框“bndbox”

过滤xml文件

某些标注“object”中没有矩形框“bndbox”

过滤标注“object”

图片经过裁剪后,xml文件中宽高不符

修改错误宽高参数为图片真实宽高

xml中没有“width”“height”字段

根据图片真实宽高补全xml中的“width”“height”字段和值

图片经过裁剪后,xml中矩形框“bndbox”大小不符

按图片裁剪比例缩放xml文件中“bnxbox”

xml中矩形框“bndbox”宽或高值过小,显示为一条线

矩形框宽或高差值小于2,移除当前“object”

xml中矩形框“bndbox”最小值大于最大值

移除当前“object”

矩形框“bndbox”超出图片边界,且超出部分占框面积50%以上

移除当前“object”

矩形框“bndbox”超出图片边界,但超出部分小于框面积50%

矩形框“bndbox”拉回到图片边界

数据校验过程不会改动原始数据,通过校验的图片或xml文件保存在指定的输出路径下。

  • 参数说明
    表3 数据校验-MetaValidation算子参数说明

    参数名

    是否必选

    默认值

    参数说明

    image_max_width

    -1

    输入图片宽度最大值,如果输入图片宽度超过设定值则按比例裁剪。单位为px。

    默认值 -1 表示不做裁剪。

    image_max_height

    -1

    输入图片长度最大值,如果输入图片高度超过设定值则按比例裁剪。单位为px。

    默认值 -1 表示不做裁剪。

  • 输入要求

    算子输入分为两种,“数据集”“OBS目录”

    • 选择“数据集”,请从下拉框中选择ModelArts中管理的数据集及其版本。要求数据集类型与您在本任务中选择的场景类别一致。
    • 选择“OBS目录”,存放结构又分两种情况,“仅包含图片”“包含图片和标注信息”
      • “仅包含图片”:当目录下全是图片时,支持jpg、jpeg、png、bmp格式,嵌套子目录的图片也将全部读入。
      • “包含图片和标注信息”:根据不同场景类型,结构不同。

        图像分类场景,其目录结构如下所示。如下目录结构,仅支持单标签场景。

        input_path/
            --label1/
                ----1.jpg
            --label2/
                ----2.jpg
            --../

        物体检测场景,其目录结构如下所示。支持jpg、jpeg、png、bmp格式的图片,xml为标准的PACAL VOC格式标注文件。

        input_path/
            --1.jpg
            --1.xml
            --2.jpg
            --2.xml
            ...
  • 输出说明
    • 图像分类

      输出数据的目录结构如下所示。

      output_path/
          --Data/
              ----class1/  # 如果输入数据有标注信息会一并输出,class1为标注类别
                  ------1.jpg
                  ------2_checked.jpg
              ----class2/
                  ------3.jpg
                  ------4_checked.jpg
              ----5_checked.jpg
          --output.manifest

      其中manifest文件内容示例如下所示。会给每一条数据加上一个校验属性"property":{"@modelarts:data_checked":true}

      {
        "id": "xss",
        "source": "obs://hard_example_path/Data/fc8e2688015d4a1784dcbda44d840307_14_checked.jpg",
        "property": {
          "@modelarts:data_checked": true
        },
        "usage": "train",
        "annotation": [
          {
            "name": "Cat",
            "type": "modelarts/image_classification"
          }
        ]
      }

      数据输出的data文件夹中存放的是修改、更新过的图片,对于数据处理过程中没有修改过的图片,在data文件夹中不会展示,图片的位置信息显示该图片在输入目录中。

      output.manifest存放的是数据处理之后的图片信息(主要是指图片的位置和标注信息等),可以直接使用这个output.manifest文件创建数据集,或者把output.manifest文件导入到已经存在的数据集中。

    • 物体检测

      在输出目录下,文件结构如下所示。

      output_path/
         --Data/
              ----1_checked.jpg
              ----1_checked.xml  # 如果输入数据在校验过程中经过了转换,文件名会加上'_checked'
              ----2.jpg          # 如果输入数据未经过转换,则以原来的名字保存
              ----2.xml
         --output.manifest

      其中manifest文件内容示例如下所示。会给每一条数据加上一个校验属性"property":{"@modelarts:data_checked":true}

      {
        "source": "obs://hard_example_path/Data/be462ea9c5abc09f_checked.jpg",
        "property": {
          "@modelarts:data_checked": true
        },
        "annotation": [
          {
            "annotation-loc": "obs://hard_example_path/Data/be462ea9c5abc09f_checked.xml",
            "type": "modelarts/object_detection",
            "annotation-format": "PASCAL VOC",
            "annotated-by": "modelarts/hard_example_algo"
          }
        ]
      }

相关文档