发布于42个月以前
- 0
- 0
- 251
本文档是ModelArts AI Gallery算法DenseNet(以下简称为本算法)的详细使用方法。
本算法使用图片分类数据集中的train集和val集,使用train集训练,在val上single-crop测试达到的准确率为:
DenseNet-121 top1:74.29% top5:92.00%
DenseNet-169 top1:75.48% top5:92.64%
DenseNet-201 top1:76.37% top5:93.07%
DenseNet-264 top1:76.68% top5:93.17%
1. 准备数据集
本算法支持的数据集格式为ILSVRC 2012 ImageNet图片分类数据集。
ILSVRC 2012 ImageNet中总共有1000个类别,其中train训练集有为1281167张图片,val验证集有50000张图片。该数据集通常作为业界衡量人图片分类准曲率的可靠指标。数据集的具体信息,包括评估脚本、标注文件、提交测试demo等可查看数据集官网。
ILSVRC 2012 ImageNet数据集旨在用于:
(1) 评估图片分类模型的准确率检测;
(2) 基于此数据集训练出通用的图片分类模型预训练参数。
1.1 下载数据集
首先需要在数据集官网下载ILSVRC 2012 ImageNet数据集,下载前需要先登录账号,如下图所示:
注:如果还没账号需要先注册,注册时建议使用edu邮箱注册,其它邮箱注册后有可能没法下载完整的数据集,且下载的过程中不建议使用多线程下载,否则可能出现禁止下载的情况;数据集总共将近有150G的容量,若觉得官网下载太慢,也可使用其它下载途径,只要在百度上搜索ImageNet相关信息,就能找到很多其它下载途径
下载好ImageNet数据集解压完后会得到一个imagenet_original目录,ImageNet所有的数据信息都在该目录中,目录结构如下:
└─imagenet_original
├─train
├─n01440764
├─n01443537
├─n01484850
......
├─val
├─n01440764
├─n01443537
├─n01484850
......
├─subset
├─caffe_ilsvrc12
然后将caffe_ilsvrc12目录中的synset_words.txt文件复制到val文件夹中,并重命名为label.txt,该文件为标签信息文件,训练过程中(即参数eval=False)不需要使用这个文件,但预测评估过程(即eval=True)需要使用这个文件,否则无法输出预测标签,预测评估过程会出错;subset和caffe_ilsvrc12目录本算法中不需要使用,可以直接删掉;操作完后,最终目录格式如下:
└─imagenet_original
├─train
├─n01440764
├─n01443537
├─n01484850
......
├─val
├─n01440764
├─n01443537
├─n01484850
......
├─label.txt
到此,该数据集目录可以直接上传至OBS,用于训练和评估;如果是训练,则需要将data_url参数设置为imagenet_original目录在OBS上的访问路径,如果是预测评估,则需要将data_url参数设置为val目录所在OBS上的访问路径;
但由于该数据集文件数量很多,为了方便数据传输和节约数据传输的时间,可以将数据集进行打包压缩;要注意的是,进行打包时,被打包的文件夹名称以及打包后的压缩包名称固定不能修改,如下所述:
训练时可以将整个imagenet_original进行tar.gz分包压缩,每个分包10GB,总共有15个压缩包(最后一个压缩包2GB),每个分包的名称为imagenet.tar.gza*,如下图所示:
然后可以将此15个分包上传至OBS的同一个目录下面,将data_url参数设置为该15个分包的父目录所在的OBS访问路径;在训练过程中,使用tar.gz的方式与直接使用目录的方式相比,数据copy时间会减少20多分钟(训练ImageNet数据集时,直接使用目录copy时间约50分钟,而复制tar.gz压缩分包的方式大约30分钟以内)
预测评估时也可以将val目录打包压缩成val.zip,然后上传至OBS中,data_url设置成val.zip文件所在的父目录的OBS访问路径;
注:1.上传压缩包时,压缩包所在的OBS目录不要存放其它无关文件,避免上传多余的文件
2.上传不同格式的数据集data_forma参数也要设置对应的值,直接上传目录设置为dir,如果为tar.gz压缩包,则设置为tar.gz,如果为zip压缩包,则设置为zip
3.打包时的命名要求必须严格遵守,不然训练和预测评估将会出错
1.2 安装OBS Browser+并上传数据集
ModelArts使用对象存储服务(OBS)来存储数据,实现安全、高可靠和低成本的存储需求。OBS Browser+是一款用于访问和管理对象存储服务(Object Storage Service,OBS)的图形化工具,支持完善的桶管理和对象管理操作。OBS Browser+的图形化界面可以非常方便地让用户在本地对OBS进行管理,例如:创建桶、上传下载文件、浏览文件等。
具体操作步骤如下:
(1)点此下载OBS Browser+,下载完成后解压缩,双击exe进行安装,安装完成后运行;
(2)登录界面如下图所示,需要您填写账号名、Access Key ID(AK)和Secret Accsee Key(SK),参考此文档,获取AK和SK,华为云上的许多产品都需要用到访问密钥,请妥善保存该密钥文件,然后参考下图填写您的华为云账号名及刚获取的AK和SK,点击登录;
(3)参考下图,点击“创建桶”,输入桶名称,注意:区域要选择华北-北京四、标准存储、私有、关闭多AZ,桶名需自定义,OBS桶名要全局唯一,如提示桶名已存在,则需要您修改为其他名称,比如本文设置桶名为paper-reproduction-01。您设置的桶名必须与此不同,如在下文的操作指导中看到paper-reproduction-01,请主动将桶名替换为您自己的桶名,下文将不再进行提示;
(4)点击桶名称,进入到桶中,点击“新建文件夹”,输入文件夹名称,如“train_input”,点击进入文件夹,再新建“datasets”(具体文件夹名称、以及文件夹层数可自由设置),点击“上传”->“添加文件”(或者文件夹)-> 选择本地准备好的数据集目录或者压缩包(如imagenet.tar.gza*或者val.zip)进行上传(本算法中用到的ImageNet文件数量很多,所以上传解压后的文件夹,速度会较慢,建议使用imagenet.tar.gza*或val.zip压缩包的形式上传) –> 确定,如下图所示;
(5)点击OBS Browser+左侧的“任务管理”,可查看数据上传进度。如下图所示,点击设置,在基础设置中,设置最大并发数为最大值50,可以加快数据上传速度
2. 订阅本算法
点击本页面右上方的【订阅】按钮。然后点击页面下方的【下一步】按钮,再点击【确认付款】按钮,最后点击【确定】按钮进入我的订阅页面,可以看到刚刚订阅的算法。点击【应用控制台】超链接,选择华北-北京四区域,进入算法管理页面。
如下图所示,点击“同步”按钮,同步算法,可以点击刷新按钮,刷新状态。当状态变成就绪时,表示同步成功。
3. 创建训练作业
点击上图中的“创建训练作业”,按照下表填写训练作业参数:
默认值 | 类型 | 是否必填 | 是否可修改 | 描述 | |
---|---|---|---|---|---|
device_target | Ascend | string | 否 | 是 | 训练用的硬件平台,有CPU、GPU和Ascend,本算法支持Ascend训练 |
data_url | data/imagenet_original/ | string | 是 | 是 | 训练或者评估输入的数据集 (支持上传压缩包和文件目录;如果使用文件夹形式的数据,则填写该文件夹在OBS上的访问路径;如果使用zip或者tar.gz压缩包形式的数据,则填写该压缩包的父目录在OBS上的访问路径) |
train_url | output/ | string | 是 | 是 | 训练或者评估结果输出路径 |
data_format | tar.gz | string | 否 | 是 | 可选值zip(上传数据为zip压缩包)、tar.gz(训练数据集的分包压缩形式)或者dir(上传数据为目录形式),压缩包和目录的具体格式要求请参考上面第一节《数据集准备》 |
epoch_size | 120 | int | 否 | 是 | 模型训练的epoch数量 |
batch_size | 256 | int | 否 | 是 | 训练或者评估时每个batch的大小 |
init_lr | 0.1 | string | 否 | 是 | 训练的初始学习率 |
momentum | 0.9 | string | 否 | 是 | 优化器的动量系数 |
load_weight | weight/best_model.ckpt | string | 否 | 是 | 可加载的预训练模型,当eval=True时,该参数为必填项 ;默认值是在ImageNet数据集上的预训练模型,该预训练模型已包含在本算法中 |
weight_decay | 0.0001 | string | 否 | 是 | 优化器中的正则化权重衰减量 |
img_size | 224 | int | 否 | 是 | 训练图片的尺寸,默认值与论文中保持一致 |
num_classes | 1000 | int | 否 | 是 | 类别数量,默认值为ImageNet类别数量 |
conv2d_keep_prob | 1.0 | string | 否 | 是 | dropout的设置值,默认与论文中训练ImageNet保持一致 |
architecture | DenseNet-121 | string | 否 | 是 | 可选值为DenseNet-121、DenseNet-169、DenseNet-201和DenseNet-264 |
amp_level | O3 | string | 否 | 是 | 混合精度训练的设置值,根据mindspore官方文档,Ascend硬件下训练建议使用O3,如效果不佳,可根据实际模型训练情况更改 |
optimizer | SGD | string | 否 | 是 | 优化器,默认与论文保持一致 |
no_top | False | string | 否 | 是 | 加载预训练模型时,是否包含顶部的分类器,若加载的预训练模型中的类别数与训练模型设置的num_classes不同,则必须设置为True,否则会报错,无法加载预训练模型 |
eval | False | string | 否 | 是 | eval=True,则进行预测评估;eval=False进行训练 |
点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。在训练过程中,每一个epoch之后都会检测是否为当前最优模型,如果最优,则会保存到OBS中,即在上表中指定的“train_url”路径下会自动生成一个文件夹,文件夹的命名包含了本输出的模型准确率,如‘’DenseNet-121_valacc0.7520161290322580645_epoch99‘’,文件夹下面又有4个目录,分别为checkpoint、air、onnx、mindir,里面存放输出的对应格式的模型文件,具体不同的格式如何使用,请参考mindspore官方部署推理文档。
4. 模型评估
参考本文第3节中的步骤,创建“训练作业”,按照下表设置训练参数:
参数名 | 参数值 |
---|---|
data_url |
数据存储位置,选择测试集所在路径,如obs://paper-reproduction-01/algorithms/train_input/datasets/ (这里如果使用的是验证集的zip压缩包,则需要选择zip压缩包父目录的OBS路径,如上述连接, 实际copy的是obs://paper-reproduction-01/algorithms/train_input/datasets/val.zip) |
train_url | 模型的输出,选择obs://paper-reproduction-01/algorithms/eval_output |
load_weight | 加载要评估的模型,如obs://paper-reproduction-01/algorithms/weight/best_model.ckpt |
eval | True |
data_format | zip |
batch_size | 1 |
architecture | DenseNet-121 |
点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“train_url”路径下会自动生成infer_results.txt目录和eval_result.txt文件,其中infer_results.txt目录中是所有图片的分类结果 。
评论 0

作者相关内容
热门内容推荐




