华为云用户手册

  • 数据清洗算子(PCC算子) ModelArts的数据清洗通过PCC算子实现。图像分类或者物体检测的数据集中可能存在非所需类别的图像,需要将这些图像去除掉,以免对标注、模型训练造成干扰。 图5 PCC算子效果 参数说明 表1 数据清洗-PCC算子参数说明 参数名 是否必选 默认值 参数说明 prototype_sample_path 是 None 数据清洗正样例目录。目录应存放正样例图片文件,算法将这些图片为正样例,对输入中的数据进行过滤,即保留与“prototype_sample_path”目录下图片相似度高的数据。 请输入一个真实存在的OBS目录,且目录下已包含提供的正样例图片,且以obs://开头。如:obs://obs_bucket_name/folder_name criticism_sample_path 否 None 数据清洗负样例目录。目录应存放负样例图片文件,算法将这些图片为负样例,对算法输入中的数据进行过滤, 即保留与“criticism_sample_path”目录下图片相似度差距较大的数据。 建议该参数和“prototype_sample_path”配合使用,可以提高数据清洗的准确性。 请输入一个真实存在的OBS目录,且以obs://开头。如:obs://obs_bucket_name/folder_name n_clusters 否 auto 数据样本的种类数,默认值auto。您可以输入小于样本总数的整数或auto。auto表示使用正样本目录的图片个数作为数据样本的种类数。 simlarity_threshold 否 0.9 相似度阈值。两张图片相似程度超过阈值时,判定为相似图片,反之按非相似图片处理。输入取值范围为0~1。 embedding_distance 否 0.2 样本特征间距。两张图片样本特征间距小于设定值,判定为相似图片,反之按非相似图片处理。输入取值范围为0~1。 do_validation 否 True 是否进行数据校验,可填True或者False。表示数据清洗前需要进行数据校验,否则只进行数据清洗。 输入要求 算子输入分为两种,“数据集”或“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 ----class2/ ------2.jpg ----3.jpg --output.manifest 其中manifest文件内容示例如下所示。 { "id": "xss", "source": "obs://home/fc8e2688015d4a1784dcbda44d840307_14.jpg", "usage": "train", "annotation": [ { "name": "Cat", "type": "modelarts/image_classification" } ] } 物体检测 输出数据的目录结构如下所示。 output_path/ --Data/ ----1.jpg ----1.xml # 如果输入数据有标注信息会一并输出,xml为标注文件 ----2.jpg ----3.jpg --output.manifest 其中manifest文件内容示例如下所示。 { "source":"obs://fake/be462ea9c5abc09f.jpg", "annotation":[ { "annotation-loc":"obs://fake/be462ea9c5abc09f.xml", "type":"modelarts/object_detection", "annotation-format":"PASCAL VOC", "annotated-by":"modelarts/hard_example_algo" } ] }
  • 数据校验算子说明(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" } ] }
  • 数据处理场景介绍 ModelArts平台提供的数据处理功能,基本目的是从大量的、杂乱无章的、难以理解的数据中抽取或者生成对某些特定的人们来说是有价值、有意义的数据。当数据采集和接入之后,数据一般是不能直接满足训练要求的。为了保障数据质量,以免对后续操作(如数据标注、模型训练等)带来负面影响,开发过程通常需要进行数据处理。 常见的数据处理类型有以下四种: 数据校验:通常数据采集后需要进行校验,保证数据合法。 数据校验是指对数据可用性的基本判断和验证的过程。通常,用户采集的数据或多或少都会有很多格式问题,无法被进一步处理。以图像识别为例,用户经常会从网上找一些图片用于训练,但是其质量难以保证,有可能图片的名字、路径、后缀名都不满足训练算法的要求;图片也可能有部分损坏,造成无法解码、无法被算法处理的情况。因此,数据校验非常重要,可以帮助人工智能开发者提前发现数据问题,有效防止数据噪声造成的算法精度下降或者训练失败问题。 数据清洗:数据清洗是指对数据进行去噪、纠错或补全的过程。 数据清洗是在数据校验的基础上,对数据进行一致性检查,处理一些无效值。例如在深度学习领域,可以根据用户输入的正样本和负样本,对数据进行清洗,保留用户想要的类别,去除用户不想要的类别。 数据选择:数据选择一般是指从全量数据中选择数据子集的过程。 数据可以通过相似度或者深度学习算法进行选择。数据选择可以避免人工采集图片过程中引入的重复图片、相似图片等问题;在一批输入旧模型的推理数据中,通过内置规则的数据选择可以进一步提升旧模型精度。 数据增强: 数据扩增通过简单的数据扩增例如缩放、裁剪、变换、合成等操作直接或间接的方式增加数据量。 数据生成应用相关深度学习模型,通过对原数据集进行学习,训练生成新的数据集的方式增加数据量。 数据域迁移应用相关深度学习模型,通过对原域和目标域数据集进行学习,训练生成原域向目标域迁移的数据。 父主题: 处理ModelArts数据集中的数据
  • 导出到AI Gallery 用户可以将自己的数据发布到AI Gallery,将个人的数据分享给他人使用。用户要发布数据集到AI Gallery,数据集需要有状态为“正常”的数据集版本。 选中待发布的数据集,单击“更多”,选择“发布资产”。 在资产发布弹窗中,选择数据集的版本并填写资产发布相关的信息。完成后单击“确定”即可进行发布。 表1 发布数据集到AI Galley参数说明 参数 说明 资产标题 在AI Gallery显示的资产名称。 来源 可选择“ModelArts”、“ 对象存储服务 (OBS)”、“本地上传”。 ModelArts区域 选择当前控制台所在的区域。 OBS区域 选择与当前控制台一致的区域。 存储位置 用来存储发布的资产。 数据类型 当前数据集的数据类型。 选择数据集 选择需要发布的数据集。 许可证类型 根据业务需求和数据集类型选择合适的许可证类型。 单击许可证类型后面的感叹号可以查看许可证详情。 说明: 部分许可证网站说明地址是海外网站,用户可能会因网络限制无法访问。 谁可以看 设置此数据集的公开权限。可选值有: “公开”:表示所有使用AI Gallery的用户都可以查看且使用该资产。 “指定用户”:表示仅特定用户可以查看及使用该资产。 “仅自己可见”:表示只有当前账号可以查看并使用该资产。
  • 如何查看训练作业日志 在训练作业详情页,训练日志窗口提供日志预览、日志下载、日志中搜索关键字、系统日志过滤能力。 预览 系统日志窗口提供训练日志预览功能,如果训练作业有多个节点,则支持查看不同计算节点的日志,通过右侧下拉框可以选择目标节点预览。 图4 查看不同计算节日志 当日志文件过大时,系统日志窗口仅加载最新的部分日志,并在日志窗口上方提供全量日志访问链接。打开该链接可在新页面查看全部日志。 图5 查看全量日志 如果全部日志超过500M,可能会引起浏览页面卡顿,建议您直接下载日志查看。 预览链接在生成后的一小时内,支持任何人打开并查看。您可以分享链接至他人。 请注意日志中不能包含隐私内容,否则会造成信息泄露。 下载 训练日志仅保留30天,超过30天会被清理。如果用户需要永久保存日志,请单击系统日志窗口右上角下载按钮下载日志至本地保存,支持批量下载多节点日志。用户也可以在创建训练作业时打开永久保存日志按钮,保存训练日志至指定OBS路径。 针对使用Ascend规格创建的训练作业,部分系统日志暂不支持直接在训练日志窗口下载,请在创建训练作业时指定OBS路径用于保存训练日志。 图6 下载日志 搜索关键字 用户可以在系统日志右上角的搜索框搜索关键字,如图7所示。 图7 搜索关键字 系统支持高亮关键字并实现搜索结果间的跳转。搜索功能仅支持搜索当前页面加载的日志,如果日志加载不全(请关注页面提示)则需要下载或者通过打开全量日志访问链接进行搜索。全量日志访问链接打开的新页面可以通过Ctrl+F进行搜索。 系统日志过滤 图8 系统日志复选框 如果勾选了系统日志复选框,则日志中呈现系统日志和用户日志。如果去勾选,则只显示用户日志。
  • 训练日志的时效性 从日志产生的时效性上可以分为以下3种情况: 实时日志:训练作业实时运行时产生,在ModelArts训练作业详情页面上可以查看。 历史日志:训练作业结束后,可以在ModelArts训练作业详情页面上查看历史日志,ModelArts系统自动保存30天。 永久日志:转存到OBS桶中的训练日志,在创建训练作业时,打开永久保存日志开关设置作业日志路径即可将日志转存至OBS路径。 图2 开启永久保存日志开关 实时日志和历史日志都是标准日志输出,内容上没有区别。Ascend训练场景下,永久日志中会包含Ascend日志,这部分日志内容在ModelArts界面上看不到。
  • 普通日志说明 普通日志中包含训练进程日志、pip-requirement.txt安装日志和ModelArts Standard平台日志。 表1 普通日志类型 日志类型 说明 训练进程日志 用户训练代码的标准输出。 pip-requirement.txt安装日志 如果用户有定义pip-requirement.txt文件,会产生pip包安装日志。 ModelArts平台日志 ModelArts平台产生的系统日志,主要用于运维人员定位平台问题。 普通日志的文件格式如下,其中task id为训练作业中的节点id。 统一日志格式:modelarts-job-[job id]-[task id].log 样例:log/modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log 单机训练作业只会生成一个日志文件,单机作业的task id默认为worker-0。 分布式场景下有多个节点日志文件并存,通过task id区分不同节点,例如:worker-0,worker-1等。 训练进程日志、“pip-requirement.txt”安装日志和ModelArts平台日志都包含在普通日志文件“modelarts-job-[job id]-[task id].log”中。 ModelArts平台日志可以通过关键字在训练的普通日志文件“modelarts-job-[job id]-[task id].log”中筛查,筛查关键字有:“[ModelArts Service Log]”或“Platform=ModelArts-Service”。 类型一:[ModelArts Service Log] xxx [ModelArts Service Log][init] download code_url: s3://dgg-test-user/snt9-test-cases/mindspore/lenet/ 类型二:time=“xxx” level=“xxx” msg=“xxx” file=“xxx” Command=xxx Component=xxx Platform=xxx time="2021-07-26T19:24:11+08:00" level=info msg="start the periodic upload task, upload period = 5 seconds " file="upload.go:46" Command=obs/upload Component=ma-training-toolkit Platform=ModelArts-Service
  • Ascend场景日志说明 使用Ascend资源运行训练作业时,会产生Ascend相关日志。Ascend训练场景下会生成device日志、plog日志、proc log单卡训练日志、MindSpore日志、普通日志。 其中,Ascend训练场景下的普通日志包括训练进程日志、pip-requirement.txt安装日志、ModelArts平台日志、ma-pre-start日志和davincirun日志。 Ascend日志结构举例说明如下: obs://dgg-test-user/snt9-test-cases/log-out/ # 作业日志路径 ├──modelarts-job-9ccf15f2-6610-42f9-ab99-059ba049a41e ├── ascend ├── process_log ├── rank_0 ├── plog # plog日志 ... ├── device-0 # device日志 ... ├── mindspore # MindSpore日志 ├──modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log # 普通日志 ├──modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-proc-rank-0-device-0.txt # proc log单卡训练日志 表2 Ascend场景下日志说明 日志类型 日志说明 日志文件名 device日志 HOST侧用户进程,在DEVICE侧产生的AICPU、HCCP的日志,回传到HOST侧(训练容器)。 如果出现如下情况,则device日志会获取不到。 节点异常重启 被主动停止的节点 在训练进程结束后,该日志会生成到训练容器中。其中,使用MindSpore预置框架训练的device日志会自动上传到OBS,使用其他预置框架和 自定义镜像 训练的device日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PRO CES S_ LOG _PATH,具体请参考如下示例。 # set npu plog env ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'` task_name="worker-${VC_TASK_INDEX}" task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name} mkdir -p ${task_plog_path} export ASCEND_PROCESS_LOG_PATH=${task_plog_path} “~/ascend/log/device-{device-id}/device-{pid}_{timestamp}.log” 其中,pid是HOST侧用户进程号。 样例: device-166_20220718191853764.log plog日志 HOST侧用户进程,在HOST侧产生的日志(例如:ACL /GE)。 plog日志会生成到训练容器中。其中,使用MindSpore预置框架训练的plog日志会自动上传到OBS,使用自定义镜像训练的plog日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PROCESS_LOG_PATH,具体请参考如下示例。 # set npu plog env ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'` task_name="worker-${VC_TASK_INDEX}" task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name} mkdir -p ${task_plog_path} export ASCEND_PROCESS_LOG_PATH=${task_plog_path} “~/ascend/log/plog/plog-{pid}_{timestamp}.log” 其中,pid是HOST侧用户进程号。 样例:plog-166_20220718191843620.log proc log proc log是单卡训练日志重定向文件,方便用户快速定位对应计算节点的日志。使用自定义镜像训练的作业不涉及proc log;使用预置框架训练的proc log日志会生成到训练容器中,且自动保存到OBS。 “[modelarts-job-uuid]-proc-rank-[rank id]-device-[device logic id].txt” device id为本次训练作业的NPU卡编号,取值单卡为0,8卡为0~7。 例如:Ascend规格为 8*Snt9时,device id取值为0~7;Ascend规格为 1*Snt9时,device id取值为0。 rank id为本次训练作业的全局NPU卡编号,取值为0~实例数*卡数-1,单个实例下,rank id与device id取值相同。 样例: modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-proc-rank-0-device-0.txt MindSpore日志 使用MindSpore+Ascend训练时会产生单独的MindSpore日志。 MindSpore日志会生成到训练容器中。其中,使用MindSpore预置框架训练的plog日志会自动上传到OBS,使用自定义镜像训练的plog日志如果需要自动上传到OBS,则需要在代码中配置ASCEND_PROCESS_LOG_PATH,具体请参考如下示例。 # set npu plog env ma_vj_name=`echo ${MA_VJ_NAME} | sed 's:ma-job:modelarts-job:g'` task_name="worker-${VC_TASK_INDEX}" task_plog_path=${MA_LOG_DIR}/${ma_vj_name}/${task_name} mkdir -p ${task_plog_path} export ASCEND_PROCESS_LOG_PATH=${task_plog_path} MindSpore的日志介绍请参见MindSpore官网。 普通训练日志 普通训练日志会生成到训练容器的“/home/ma-user/modelarts/log”目录中,且自动上传到OBS。普通训练日志的类型如下所示。 ma-pre-start日志(Ascend场景特有):如果用户有定义ma-pre-start脚本,会产生该脚本执行日志。 davincirun日志(Ascend场景特有):Ascend训练进程通过davincirun.py文件启动,该启动文件产生的日志。 训练进程日志:用户训练代码的标准输出。 pip-requirement.txt安装日志:如果用户有定义pip-requirement.txt文件,会产生pip包安装日志。 ModelArts平台日志:ModelArts平台产生的系统日志,主要用于运维人员定位平台问题。 合并输出在日志文件modelarts-job-[job id]-[task id].log中。 task id表示实例ID,单节点时取值为worker-0,多节点时取值为worker-0、worker-1、...worker-{n-1},n为实例数。 样例: modelarts-job-95f661bd-1527-41b8-971c-eca55e513254-worker-0.log
  • 训练日志定义 训练日志用于记录训练作业运行过程和异常信息,为快速定位作业运行中出现的问题提供详细信息。用户代码中的标准输出、标准错误信息会在训练日志中呈现。在ModelArts中训练作业遇到问题时,可首先查看日志,多数场景下的问题可以通过日志报错信息直接定位。 训练日志包括普通训练日志和Ascend相关日志。 普通日志说明:当使用Ascend之外的资源训练时仅产生普通训练日志,普通日志中包含训练进程日志、pip-requirement.txt安装日志和ModelArts平台日志。 Ascend场景日志说明:使用Ascend资源训练时会产生device日志、plog日志、proc log单卡训练日志、MindSpore日志、普通日志。 图1 ModelArts训练日志 只有MindSpore+Ascend训练场景下会产生单独的MindSpore日志。其他AI引擎的日志都包含在普通日志中,无法区分。
  • 支持分析指标及其说明 表1 分析指标列表 名称 说明 分析说明 分辨率 Resolution 图像分辨率。此处使用面积值作为统计值。 通过指标分析结果查看是否有偏移点。如果存在偏移点,可以对偏移点做resize操作或直接删除。 图片高宽比 Aspect Ratio 图像高宽比,即图片的高度/图片的宽度。 一般呈正态分布,一般用于比较训练集和真实场景数据集的差异。 图片亮度 Brightness 图片亮度,值越大代表观感上亮度越高。 一般呈正态分布,可根据分布中心判断数据集整体偏亮还是偏暗。可根据使用场景调整,比如使用场景是夜晚,图片整体应该偏暗。 图片饱和度 Saturation 图片的色彩饱和度,值越大表示图片整体色彩越容易分辨。 一般呈正态分布,一般用于比较训练集和真实场景数据集的差异。 清晰度 Clarity 图片清晰程度,使用拉普拉斯算子计算所得,值越大代表边缘越清晰,图片整体越清晰。 可根据使用场景判断清晰度是否满足需要。比如使用场景的数据采集来自高清摄像头,那么清晰度对应的需要高一些。可通过对数据集做锐化或模糊操作,添加噪声对清晰度做调整。 图像色彩的丰富程度 Colorfulness 横坐标:图像的色彩丰富程度,值越大代表色彩越丰富。 纵坐标:图片数量。 是观感上的色彩丰富程度,一般用于比较训练集和真实场景数据集的差异。 按单张图片中框的个数统计图片分布 Bounding Box Quantity 横坐标:单张图片中框的个数。 纵坐标:图片数量。 对模型而言一张图片的框个数越多越难检测,需要越多的这种数据用作训练。 按单张图片中框的面积标准差统计图片分布 Standard Deviation of Bounding Boxes Per Image 横坐标:单张图片中框的标准差。单张图片只有一个框时,标准差为0。标准差的值越大,表示图片中框大小不一程度越高。 纵坐标:图片数量。 对模型而言一张图中框如果比较多且大小不一,是比较难检测的,可以根据场景添加数据用作训练,或者实际使用没有这种场景可直接删除。 按高宽比统计框数量的分布 Aspect Ratio of Bounding Boxes 横坐标:目标框的高宽比。 纵坐标:框数量(统计所有图片中的框)。 一般呈泊松分布,但与使用场景强相关。多用于比较训练集和验证集的差异,如训练集都是长方形框的情况下,验证集如果是接近正方形的框会有比较大影响。 按面积占比统计框数量的分布 Area Ratio of Bounding Boxes 横坐标:目标框的面积占比,即目标框的面积占整个图片面积的比例,越大表示物体在图片中的占比越大。 纵坐标:框数量(统计所有图片中的框)。 主要判断模型中使用的anchor的分布,如果目标框普遍较大,anchor就可以选择较大。 按边缘化程度统计框数量的分布 Marginalization Value of Bounding Boxes 横坐标:边缘化程度,即目标框中心点距离图片中心点的距离占图片总距离的比值,值越大表示物体越靠近边缘。(图片总距离表示以图片中心点为起点画一条经过标注框中心点的射线,该射线与图片边界交点到图片中心点的距离)。 纵坐标:框数量(统计所有图片中的框)。 一般呈正态分布。用于判断物体是否处于图片边缘,有一些只露出一部分的边缘物体,可根据需要添加数据集或不标注。 按堆叠度统计框数量的分布 Overlap Score of Bounding Boxes 横坐标:堆叠度,单个框被其他的框重叠的部分,取值范围为0~1,值越大表示被其他框覆盖的越多。 纵坐标:框数量(统计所有图片中的框)。 主要用于判断待检测物体的堆叠程度,堆叠物体一般对于检测难度较高,可根据实际使用需要添加数据集或不标注部分物体。 按亮度统计框数量的分布 Brightness of Bounding Boxes 横坐标:目标框的图片亮度,值越大表示越亮。 纵坐标:框数量(统计所有图片中的框)。 一般呈正态分布。主要用于判断待检测物体的亮度。在一些特殊场景中只有物体的部分亮度较暗,可以看是否满足要求。 按清晰度统计框数量的分布 Clarity of Bounding Boxes 横坐标:目标框的清晰度,值越大表示越清晰。 纵坐标:框数量(统计所有图片中的框)。 主要用于判断待检测物体是否存在模糊的情况。比如运动中的物体在采集中可能变得模糊,需要重新采集。
  • 背景信息 只有“图片”的数据集,且版本标注类型为“物体检测”和“图像分类”的数据集版本支持数据特征分析。 只有发布后的数据集支持数据特征分析。发布后的Default格式数据集版本支持数据特征分析。 数据特征分析的数据范围,不同类型的数据集,选取范围不同: 对于标注任务类型为“物体检测”的数据集版本,当已标注样本数为0时,发布版本后,数据特征页签版本置灰不可选,无法显示数据特征。否则,显示已标注的图片的数据特征。 对于标注任务类型为“图像分类”的数据集版本,当已标注样本数为0时,发布版本后,数据特征页签版本置灰不可选,无法显示数据特征。否则,显示全部的图片的数据特征。 数据集中的图片数量要达到一定量级才会具有意义,一般来说,需要有大约1000+的图片。 “图像分类”支持分析指标有:“分辨率”、“图片高宽比”、“图片亮度”、“图片饱和度”、“清晰度”和“图像色彩的丰富程度”。“物体检测”支持所有的分析指标。目前ModelArts支持的所有分析指标请参见支持分析指标及其说明。
  • 通过条件筛选数据 在数据概览页中,默认展示数据集的概览情况。在界面右上方,单击“开始标注”,进入数据集的详细数据页面,默认展示数据集中全部数据。在“全部”、“未标注”或“已标注”页签下,您可以在筛选条件区域,添加筛选条件,快速过滤出您想要查看的数据。 支持的筛选条件如下所示,您可以设置一个或多个选项进行筛选。 难例集:难例或非难例。 标签:您可以选择全部标签,或者基于您指定的标签,选中其中一个或多个。 样本创建时间:1个月内、1天内或自定义,如果选择自定义,可以在时间框中指定明确时间范围。 文件名或目录:根据文件名称或者文件存储目录筛选。 标注人:选择执行标注操作的账号名称。 样本属性:表示自动分组生成的属性。只有启用了自动分组任务后才可使用此筛选条件。 数据属性:暂不支持。 图2 筛选条件
  • Dockerfile模板 Dockerfile样例,此样例可以直接另存为一个Dockerfile文件使用。此处可以使用的基础镜像列表请参见推理专属预置镜像列表。 FROM swr.cn-north-4.myhuaweicloud.com/atelier/tensorflow_2_1:tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64-20221121111529-d65d817 # here create a soft link from '/home/ma-user/anaconda/lib/python3.7/site-packages/model_service' to '/home/ma-user/infer/model_service'. It’s the build-in inference framework code dir # if the installed python version of this base image is python3.8, you should create a soft link from '/home/ma-user/anaconda/lib/python3.8/site-packages/model_service' to '/home/ma-user/infer/model_service'. USER root RUN ln -s /home/ma-user/anaconda/lib/python3.7/site-packages/model_service /home/ma-user/infer/model_service USER ma-user # here we supply a demo, you can change it to your own model files ADD model/ /home/ma-user/infer/model/1 USER root RUN chown -R ma-user:ma-group /home/ma-user/infer/model/1 USER ma-user # default MODELARTS_SSL_CLIENT_VERIFY switch is "true". In order to debug, we set it to be "false" ENV MODELARTS_SSL_CLIENT_VERIFY="false" # change your port and protocol here, default is 8443 and https # ENV MODELARTS_SERVICE_PORT=8080 # ENV MODELARTS_SSL_ENABLED="false" # add pip install here # RUN pip install numpy==1.16.4 # RUN pip install -r requirements.txt # default cmd, you can chage it here # CMD sh /home/ma-user/infer/run.sh
  • 模型包文件样例 模型包文件model.zip中需要用户自己准备模型文件,此处仅是举例示意说明,以一个手写数字识别模型为例。 Model目录下必须要包含推理脚本文件customize_service.py,目的是为开发者提供模型预处理和后处理的逻辑。 图6 推理模型model目录示意图(需要用户自己准备模型文件) 推理脚本customize_service.py的具体写法要求可以参考模型推理代码编写说明。 本案例中提供的customize_service.py文件具体内容如下: import logging import threading import numpy as np import tensorflow as tf from PIL import Image from model_service.tfserving_model_service import TfServingBaseService class mnist_service(TfServingBaseService): def __init__(self, model_name, model_path): self.model_name = model_name self.model_path = model_path self.model = None self.predict = None # 非阻塞方式加载saved_model模型,防止阻塞超时 thread = threading.Thread(target=self.load_model) thread.start() def load_model(self): # load saved_model 格式的模型 self.model = tf.saved_model.load(self.model_path) signature_defs = self.model.signatures.keys() signature = [] # only one signature allowed for signature_def in signature_defs: signature.append(signature_def) if len(signature) == 1: model_signature = signature[0] else: logging.warning("signatures more than one, use serving_default signature from %s", signature) model_signature = tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY self.predict = self.model.signatures[model_signature] def _preprocess(self, data): images = [] for k, v in data.items(): for file_name, file_content in v.items(): image1 = Image.open(file_content) image1 = np.array(image1, dtype=np.float32) image1.resize((28, 28, 1)) images.append(image1) images = tf.convert_to_tensor(images, dtype=tf.dtypes.float32) preprocessed_data = images return preprocessed_data def _inference(self, data): return self.predict(data) def _postprocess(self, data): return { "result": int(data["output"].numpy()[0].argmax()) }
  • 从DWS导入数据到ModelArts数据集 ModelArts支持从DWS导入表格数据,用户需要选择对应的DWS集群,并输入需要对应的数据库名、表名以及用户名和密码。所导入表的schema(列名和类型)需要跟数据集相同。DWS的详细功能说明,请参考DWS用户指南。 图1 从DWS导入数据 集群名称:系统自动将当前账号下的DWS集群展现在列表中,您可以在下拉框中选择您所需的DWS集群。 数据库名称:根据选择的DWS集群,填写数据所在的数据库名称。 表名称:根据选择的数据库,填写数据所在的表。 用户名:输入DWS集群管理员用户的用户名。 密码:输入DWS集群管理员用户的密码。 从DWS导入数据,需要借助 DLI 的功能,如果用户没有访问DLI服务的权限,需根据页面提示创建DLI的委托。 父主题: 导入数据到ModelArts数据集
  • MRS 导入数据到ModelArts数据集 ModelArts支持从MRS服务中导入存储在HDFS上的csv格式的数据,首先需要选择已有的MRS集群,并从HDFS文件列表选择文件名称或所在目录,导入文件的列数需与数据集schema一致。MRS的详细功能说明,请参考MRS用户指南。 图1 从MRS导入数据 集群名称:系统自动将当前账号下的MRS集群展现在此列表中,但是流式集群不支持导入操作。请在下拉框中选择您所需的集群。 文件路径:根据选择的集群,输入对应的文件路径,此文件路径为HDFS路径。 导入是否包含表头:开启表示导入时将表头同时导入。 父主题: 导入数据到ModelArts数据集
  • 从DLI导入数据到ModelArts数据集 表格数据集支持从DLI导入数据。 从DLI导入数据,用户需要选择DLI队列、数据库和表名称。所选择的表的schema(列名和类型)需与数据集一致,支持自动获取所选择表的schema。DLI的详细功能说明,请参考DLI用户指南。 图1 DLI导入数据 队列名称:系统自动将当前账号下的DLI队列展现在列表中,用户可以在下拉框中选择需要的队列。 数据库名称:根据选择的队列展现所有的数据库,请在下拉框中选择您所需的数据库。 表名称:根据选择的数据库展现此数据库中的所有表。请在下拉框中选择您所需的表。 DLI的default队列只用作体验,不同账号间可能会出现抢占的情况,需进行资源排队,不能保证每次都可以得到资源执行相关操作。 DLI支持schema映射的功能,即导入的表的schema的字段名称可以不和数据集相同,但类型要保持一致。 父主题: 导入数据到ModelArts数据集
  • 文本三元组 { "source":"content://"Three Body" is a series of long science fiction novels created by Liu Cix.", "usage":"TRAIN", "annotation":[ { "type":"modelarts/text_entity", "name":"Person", "id":"E1", "property":{ "@modelarts:start_index":67, "@modelarts:end_index":74 }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" }, { "type":"modelarts/text_entity", "name":"Book", "id":"E2", "property":{ "@modelarts:start_index":0, "@modelarts:end_index":12 }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" }, { "type":"modelarts/text_triplet", "name":"Author", "id":"R1", "property":{ "@modelarts:from":"E1", "@modelarts:to":"E2" }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" }, { "type":"modelarts/text_triplet", "name":"Works", "id":"R2", "property":{ "@modelarts:from":"E2", "@modelarts:to":"E1" }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" } ] }
  • 语音内容 { "source":"s3://path/to/audio1.wav", "annotation":[ { "type":"modelarts/audio_content", "property":{ "@modelarts:content":"Today is a good day." }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" } ] } “source”、“usage”、“annotation”等参数说明与图像分类一致,详细说明请参见表1。 “property”中的“@modelarts:content”参数,数据类型为“String”,表示语音内容。
  • 文本命名实体 { "source":"content://Michael Jordan is the most famous basketball player in the world.", "usage":"TRAIN", "annotation":[ { "type":"modelarts/text_entity", "name":"Person", "property":{ "@modelarts:start_index":0, "@modelarts:end_index":14 }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" }, { "type":"modelarts/text_entity", "name":"Category", "property":{ "@modelarts:start_index":34, "@modelarts:end_index":44 }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" } ] } “source”、“usage”、“annotation”等参数说明与图像分类一致,详细说明请参见表1。 其中,property的参数解释如表6所示。例如,当“"source":"content://Michael Jordan"”时,如果要提取“Michael”,则对应的“start_index”为“0”,“end_index”为“7”。 表6 property参数说明 参数名 数据类型 说明 @modelarts:start_index Integer 文本的起始位置,值从0开始,包括start_index所指的字符。 @modelarts:end_index Integer 文本的结束位置,但不包括end_index所指的字符。
  • 语音分割 { "source":"s3://path/to/audio1.wav", "usage":"TRAIN", "annotation":[ { "type":"modelarts/audio_segmentation", "property":{ "@modelarts:start_time":"00:01:10.123", "@modelarts:end_time":"00:01:15.456", "@modelarts:source":"Tom", "@modelarts:content":"How are you?" }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" }, { "type":"modelarts/audio_segmentation", "property":{ "@modelarts:start_time":"00:01:22.754", "@modelarts:end_time":"00:01:24.145", "@modelarts:source":"Jerry", "@modelarts:content":"I'm fine, thank you." }, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" } ] } “source”、“usage”、“annotation”等参数说明与图像分类一致,详细说明请参见表1。 “property”的参数解释如表10所示。 表10 “property”参数说明 参数名 数据类型 描述 @modelarts:start_time String 声音的起始时间,格式为“hh:mm:ss.SSS”。 其中“hh”表示小时,“mm”表示分钟,“ss”表示秒,“SSS”表示毫秒。 @modelarts:end_time String 声音的结束时间,格式为“hh:mm:ss.SSS”。 其中“hh”表示小时,“mm”表示分钟,“ss”表示秒,“SSS”表示毫秒。 @modelarts:source String 声音来源。 @modelarts:content String 声音内容。
  • 文本分类 { "source": "content://I like this product ", "id":"XGDVGS", "annotation": [ { "type": "modelarts/text_classification", "name": " positive", "annotated-by": "human", "creation-time": "2019-01-23 11:30:30" } ] } content字段是指被标注的文本(UTF-8编码,可以是中文),其他参数解释与图像分类相同,请参见表1。
  • 声音分类 { "source": "s3://path/to/pets.wav", "annotation": [ { "type": "modelarts/audio_classification", "name":"cat", "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" } ] } “source”、“usage”、“annotation”等参数说明与图像分类一致,详细说明请参见表1。
  • 图像分类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 { "source":"s3://path/to/image1.jpg", "usage":"TRAIN", "hard":"true", "hard-coefficient":0.8, "id":"0162005993f8065ef47eefb59d1e4970", "annotation": [ { "type": "modelarts/image_classification", "name": "cat", "property": { "color":"white", "kind":"Persian cat" }, "hard":"true", "hard-coefficient":0.8, "annotated-by":"human", "creation-time":"2019-01-23 11:30:30" }, { "type": "modelarts/image_classification", "name":"animal", "annotated-by":"modelarts/active-learning", "confidence": 0.8, "creation-time":"2019-01-23 11:30:30" }], "inference-loc":"/path/to/inference-output" } 表1 字段说明 字段 是否必选 说明 source 是 被标注对象的URI。数据来源的类型及示例请参考表2。 usage 否 默认为空,取值范围: TRAIN:指明该对象用于训练。 EVAL:指明该对象用于评估。 TEST:指明该对象用于测试。 INFERENCE:指明该对象用于推理。 如果没有给出该字段,则使用者自行决定如何使用该对象。 id 否 此参数为系统导出的样本id,导入时可以不用填写。 annotation 否 如果不设置,则表示未标注对象。annotation值为一个对象列表,详细参数请参见表3。 inference-loc 否 当此文件由推理服务生成时会有该字段,表示推理输出的结果文件位置。 表2 数据来源类型 类型 示例 OBS “source”:“s3://path-to-jpg” Content “source”:“content://I love machine learning” 表3 annotation对象说明 字段 是否必选 说明 type 是 标签类型。取值范围为: image_classification:图像分类 text_classification:文本分类 text_entity:文本命名实体 object_detection:对象检测 audio_classification:声音分类 audio_content:声音内容 audio_segmentation:声音起止点 name 是/否 对于分类是必选字段,对于其他类型为可选字段,本示例为图片分类名称。 id 是/否 标签ID。对于三元组是必选字段,对于其他类型为可选字段。三元组的实体标签ID格式为“E+数字”,比如“E1”、“E2”,三元组的关系标签ID格式为“R+数字”,例如“R1”、“R2”。 property 否 包含对标注的属性,例如本示例中Cat有两个属性,颜色(color)和品种(kind)。 hard 否 表示是否是难例。“True”表示该标注是难例,“False”表示该标注不是难例。 annotated-by 否 默认为“human”,表示人工标注。 human creation-time 否 创建该标注的时间。是用户写入标注的时间,不是Manifest生成时间。 confidence 否 表示机器标注的置信度。范围为0~1。
  • 操作步骤 在新版自动学习页面,单击项目名称进入运行总览页面,单击“数据标注”节点的“实例详情”进入数据标注页面,完成数据标注。 图1 完成数据标注 返回新版自动学习页面,单击数据标注节点的“继续运行”,然后等待工作流按顺序进入训练节点。 模型将会自动进入训练,无需人工介入,训练时间相对较长,建议您耐心等待。如果关闭或退出此页面,系统仍然在执行训练操作。 在“物体检测”节点中,待训练状态由“运行中”变为“运行成功”,即完成模型的自动训练。 图2 运行成功 训练完成后,您可以单击物体检测节点上方的按钮,查看相关指标信息,如“准确率”、“评估结果”等。评估结果参数说明请参见表1。 图3 模型评估报告 表1 评估结果参数说明 参数 说明 recall:召回率 被用户标注为某个分类的所有样本中,模型正确预测为该分类的样本比率,反映模型对正样本的识别能力。 precision:精确率 被模型预测为某个分类的所有样本中,模型正确预测的样本比率,反映模型对负样本的区分能力。 accuracy:准确率 所有样本中,模型正确预测的样本比率,反映模型对样本整体的识别能力。 f1:F1值 F1值是模型精确率和召回率的加权调和平均,用于评价模型的好坏,当F1较高时说明模型效果较好。 同一个自动学习项目可以训练多次,每次训练会注册一个新的模型一个版本。如第一次训练版本号为“0.0.1”,下一个版本为“0.0.2”。基于训练版本可以对训练模型进行管理。当训练的模型达到目标后,再执行模型部署的操作。
  • 文件型数据标注状态 数据标注状态分为“未标注”和“已标注”。 未标注:仅导入标注对象(指待标注的图片,文本等),不导入标注内容(指标注结果信息)。 已标注:同时导入标注对象和标注内容,当前“自由格式”的数据集不支持导入标注内容。 为了确保能够正确读取标注内容,要求用户严格按照规范存放数据: 导入方式选择目录时,需要用户选择“标注格式”,并按照标注格式的要求存放数据。 导入方式选择manifest时,需要满足manifest文件的规范,详细规范请参见标注格式章节。 数据标注状态选择“已标注”,您需要保证目录或manifest文件满足相应的格式规范,否则可能存在导入失败的情况。
  • 图像分类 图像分类的数据支持两种格式: ModelArts imageNet 1.0:目录方式,只支持单标签 相同标签的图片放在一个目录里,并且目录名字即为标签名。当存在多层目录时,则以最后一层目录为标签名。 示例如下所示,其中Cat和Dog分别为标签名。 dataset-import-example ├─Cat │ 10.jpg │ 11.jpg │ 12.jpg │ └─Dog 1.jpg 2.jpg 3.jpg ModelArts image classification 1.0:txt标签文件,支持多标签 当目录下存在对应的txt文件时,以txt文件内容作为图像的标签。 示例如下所示,import-dir-1和imort-dir-2为导入子目录。 dataset-import-example ├─import-dir-1 │ 10.jpg │ 10.txt │ 11.jpg │ 11.txt │ 12.jpg │ 12.txt └─import-dir-2 1.jpg 1.txt 2.jpg 2.txt 单标签的标签文件示例,如1.txt文件内容如下所示: Cat 多标签的标签文件示例,如2.txt文件内容如下所示: Cat Dog 只支持JPG、JPEG、PNG、BMP格式的图片。单张图片大小不能超过5MB,且单次上传的图片总大小不能超过8MB。
  • 文本分类 文本分类支持导入“txt”和“csv”两种文件类型,文本的编码格式支持“UTF-8”和“GBK”。 文本分类的标注对象和标注文件有2种存放模式。 ModelArts text classfication combine 1.0:文本和标注合并,文本分类的标注对象和标注内容在一个文本文件内,标注对象与标注内容之间,多个标注内容之间可分别指定分隔符。 例如,文本文件的内容如下所示。标注对象与标注内容之间采用tab键分隔。 手感很好,反应速度很快,不知道以后怎样 positive 三个月前买了一个用的非常好果断把旧手机替换下来尤其在待机方面表现得尤为明显 positive 没充一会电源怎么也会发热呢音量健不好用回弹不好 negative 算是给自己的父亲节礼物吧物流很快下单不到24小时就到货了耳机更赞有些低音炮的感觉入耳很紧不会掉棒棒哒 positive ModelArts text classfication 1.0:文本和标注分离,文本分类的标注对象和标注文件均为文本文件,并且以行数进行对应,如标注文件中的第一行表示的是标注对象文件中的第一行的标注。 例如,标注对象“COMMENTS_20180919_114745.txt”的内容如下所示。 手感很好,反应速度很快,不知道以后怎样 三个月前买了一个用的非常好果断把旧手机替换下来尤其在待机方面性能好 没充一会电源怎么也会发热呢音量健不好用回弹不好 算是给自己的父亲节礼物吧物流很快下单不到24小时就到货了耳机更赞有些低音炮的感觉入耳很紧不会掉棒棒哒 标注文件“COMMENTS_20180919_114745_result.txt”的内容。 positive negative negative positive 此数据格式要求将标注对象和标注文件存储在同一目录,并且一一对应,如标注对象文件名为“COMMENTS_20180919_114745.txt”,那么标注文件名为“COMMENTS _20180919_114745_result.txt”。 数据文件存储示例: ├─dataset-import-example │ COMMENTS_20180919_114732.txt │ COMMENTS _20180919_114732_result.txt │ COMMENTS _20180919_114745.txt │ COMMENTS _20180919_114745_result.txt │ COMMENTS _20180919_114945.txt │ COMMENTS _20180919_114945_result.txt
  • 表格 支持从OBS导入csv文件,需要选择文件所在目录,其中csv文件的列数需要跟数据集schema一致。支持自动获取csv文件的schema。 ├─dataset-import-example │ table_import_1.csv │ table_import_2.csv │ table_import_3.csv │ table_import_4.csv
  • 声音分类 ModelArts audio classfication dir 1.0:要求用户将相同标签的声音文件放在一个目录里,并且目录名字即为标签名。 示例: dataset-import-example ├─Cat │ 10.wav │ 11.wav │ 12.wav │ └─Dog 1.wav 2.wav 3.wav
共100000条