更新时间:2023-06-26 GMT+08:00

数据校验

MetaValidation算子概述

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

表1 图片类数据校验

异常情况

处理方案

图片本身损坏无法解码

过滤掉不能解码的图片

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

转换图片成RGB三通道

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

转换图片格式至jpg格式

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

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

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

转换图片格式至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"
        }
      ]
    }
  • 物体检测

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

    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"
        }
      ]
    }