创建ModelArts数据校验任务
前提条件
- 数据已准备完成:已经创建数据集或者已经将数据上传至OBS。
- 确保您使用的OBS与ModelArts在同一区域。
创建数据处理任务
- 登录ModelArts管理控制台,在左侧的导航栏中选择“资产管理>数据处理”,进入“数据处理”页面。
- 在“数据处理”页面,单击“创建”进入“创建数据处理”页面。
- 在创建数据处理页面,填写相关算法参数。
- 填写基本信息。基本信息包括“名称”、“版本”和“描述”。其中“版本”信息由系统自动生成,按“V0001”、“V0002”规则命名,用户无法修改。
您可以根据实际情况填写“名称”和“描述”信息。图1 创建数据处理基本信息
- 设置场景类别。场景类别当前支持“图像分类”和“物体检测”。
- 设置数据处理类型为“数据清洗”,填写相应算子的设置参数,算子的详细参数参见数据校验算子说明(MetaValidation算子)。
图2 设置场景类别和数据处理类型
- 设置输入与输出。需根据实际数据情况选择“数据集”或“OBS目录”。设置为“数据集”时,需填写“数据集名称”和“数据集版本”;设置为“OBS目录”时,需填写正确的OBS路径。
图3 输入输出设置-数据集
图4 输入输出设置-OBS目录
- 确认参数填写无误后,单击“创建”,完成数据处理任务的创建。
- 填写基本信息。基本信息包括“名称”、“版本”和“描述”。其中“版本”信息由系统自动生成,按“V0001”、“V0002”规则命名,用户无法修改。
数据校验算子说明(MetaValidation算子)
ModelArts的数据校验通过MetaValidation算子实现。当前ModelArts支持jpg、jpeg、bmp、png四种图片格式。物体检测场景支持xml标注格式,不支持“非矩形框”标注。针对您提供的数据集,MetaValidation算子支持对图片和xml文件进行数据校验:
异常情况 |
处理方案 |
---|---|
图片本身损坏无法解码 |
过滤掉不能解码的图片 |
图片通道可能是1通道、2通道,不是常用的3通道 |
转换图片成RGB三通道 |
图片格式不在ModelArts支持的格式范围内 |
转换图片格式至jpg格式 |
图片后缀与实际格式不符,但格式在ModelArts支持的格式内 |
后缀转换成与实际格式一致 |
图片后缀与实际格式不符,且格式不在ModelArts支持的格式内 |
转换图片格式至jpg格式 |
图片分辨率过大 |
宽、高按指定大小同比例进行裁剪 |
异常情况 |
处理方案 |
---|---|
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 表示不做裁剪。
- 输入要求
- 选择“数据集”,请从下拉框中选择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" } ] }
- 图像分类