建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
AI大赛 主题:368帖子:2383

【华为云AI经典论文复现】

ModelArts AI市场算法TSD使用指导

xendbcnehd... 2020/11/30 808

本算法使用COCO数据集中的train集和val集,使用train集训练,在test-dev集上测试达到了AP=49.4%。代码结构如下:

|-src # 算法源码根目录

       |-pre-trained_weights # ImageNet上的预训练参数文件

       |-trained_model # 已训练好的、可复现论文精度的模型

           |-model 

               |-config.json

               |-customize_service.py

               |-epoch_35_mAP_49.4_tsd1.pth # 训练好的模型

               |-...

       |-train.py # 算法启动文件

       |-evaluation.py # 模型评估脚本

       |-...

|-data # 数据文件夹

    | -coco

        |- train2017

        |- test2017

        |- var2017

        |- annotations

    |- weight_for_eval.pth # 用于评测的模型


本算法的其他信息如下表所示:

项目  说明  
训练总epoch数 35
 训练batch_size 使用8张V100训练,每张卡TRAIN_BATCH_SIZE = 2,相当于总batch_size为16
训练硬件及耗时 8*V100,约100小时
推理硬件及速度 V100,1.9s/pic 




1. 准备数据集

本算法支持的数据集格式为COCO数据集。

COCO 的全称是 Common Objects in COntext,是微软团队提供的一个可以用来进行目标检测、图像分割、关键点检测、图像描述的数据集。COCO 通过在 Flickr 上搜索 80 个对象类别和各种场景类型来收集图像,其使用了亚马逊的 Mechanical Turk (AMT)。COCO数据集现在有3种标注类型:object instances, object keypoints, 和image captions,使用JSON文件存储。

1.1 下载数据集

点此链接(备用链接:https://cocodataset.org/#download)下载,如下图所示:

coco.png



下载train2017.zip, test2017.zip, val2017.zip,image_info_test2017.zip和annotations_trainval2017.zip。下载并解压后的文件目录层级如下图所示(本算法训练不需自行解压,可直接使用压缩包)

- val2017

- train2017

- test2017

- annotations

        - image_info_test2017.json

        - image_info_test-dev2017.json

        - instances_train2017.json

        - instances_val2017.json

        - ... 

MSCOCO2017数据集包括:
训练集:118287张,19.3GB;验证集: 5000张,1814.7M。共计123287张。

如果您需要使用自己的数据集进行训练,则需要将数据目录整理成和上面一样的形式。更详细的数据集说明请查看COCO数据集官网(备用链接:https://cocodataset.org/)上的描述。

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,点击登录;
2_login_in_obs_browser.jpg

(3)参考下图,点击“创建桶”,输入桶名称,注意:区域要选择华北-北京四、标准存储、私有、关闭多AZ,桶名需自定义,OBS桶名要全局唯一,如提示桶名已存在,则需要您修改为其他名称,比如本文设置桶名为paper-reproduction-01。您设置的桶名必须与此不同,如在下文的操作指导中看到paper-reproduction-01,请主动将桶名替换为您自己的桶名,下文将不再进行提示;
3_create_bucket.jpg

(4)点击桶名称,进入到桶中,点击“新建文件夹”,输入文件夹名称,如“train_input”,点击进入文件夹,再新建“datasets”,点击“上传”->“添加文件”-> 选择本地下载好的数据集压缩包(之所以选压缩包格式是因为如果数据集比较大,上传压缩包比上传文件夹快很多) –> 确定,如下图所示;
4_upload_files.jpg

(5)点击OBS Browser+左侧的“任务管理”,可查看数据上传进度。如下图所示,点击设置,在基础设置中,设置最大并发数为最大值50,可以加快数据上传速度
5_upload_files_2.jpg

2. 订阅本算法

点击本页面右上方的【订阅】按钮。然后点击页面下方的【下一步】按钮,再点击【确认付款】按钮,最后点击【确定】按钮进入我的订阅页面,可以看到刚刚订阅的算法。点击【应用控制台】超链接,选择华北-北京四区域,进入算法管理页面。

如下图所示,点击“同步”按钮,同步算法,可以点击刷新按钮,刷新状态。当状态变成就绪时,表示同步成功。
6_sync&train_job.jpg

3. 创建训练作业

点击上图中的“创建训练作业”,填写作业名称,选择我们刚刚生成的算法。

image.png按照下表填写训练作业参数:

名称
默认值 类型 是否必填
是否可修改 描述
gpu_num 1 int 使用GPU的数目,默认是1块v100
imgs_per_gpu 2 int 每块GPU能同时处理的图像数目
lr 0.02 float 训练的学习率
epoch 35 int 训练多少代
lr_step 24,33 str 在训练至多少代时进行进行学习率衰减
deterministic 1 int 算法是否是确定性的,即是否设定种子
validate 1 int 训练时是否进行在验证集上检验
multi_train 1 int 在训练时是否采用多尺度图像增强
multi_test 0 int 在验证和测试时是否采用多尺度图像增强
test_ann_file annotations/image_info_test-dev2017.json str 测试时采用的图像标注json文件。支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。
test_img_prefix test2017 str 测试时图像所在的文件夹目录
format_only 0 int 是否只输出预测结果文件,不输出准确率等指标。当测试没有ground truth时,必须把format_only设为1
load_weight trained_model/model/epoch_35_mAP_49.4_tsd1.pth str 是否加载已训练好的模型权重
eval 0 int 是否进行测试。1表示测试;0表示训练


具体介绍一下load_weight参数

1.    默认情况:默认加载已训练好的模型,即源码目录中的trained_model/model/ epoch_35_mAP_49.4_tsd1.pth,加载成功会打印日志。

2.    格式规范:支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。

3.    使用方法:在训练阶段,可以加载ImageNet预训练Resnet101权重来train from scratch(需要把load_weight参数删除掉),也可以指定加载的模型路径,在此基础上继续训练;若为eval阶段,参数为空时默认加载本算法训练好的weight,不为空时加载用户指定weight进行测试。

4.    其他说明:算法加载模型成功后会打印日志。

 

点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“模型输出”路径下会自动生成model目录,该目录下有模型文件、ModelArts平台推理脚本(config.json、customize_service.py)和其他运行模型必备的文件。


4. 模型导入

准备好模型及相关的必备文件后,您可以将生成的模型导入至ModelArts模型管理。具体操作如下:

(1)在ModelArts控制台的左侧导航栏点击“模型管理” -> “模型”,点击右侧页面中的“导入”。在导入模型页面填写名称,选择元模型来源,可以直接从训练中选择(推荐使用这种方法,简单方便,与训练无缝衔接),比如在这里我选择了上一步训练生成的模型“trainjob-train-epoch0-final”;也可以从OBS中选择。如果是从OBS中选择,则需要选择到model目录的上一级目录。如下图所示:

image.png


点击“立即创建”,需要一点时间来等待模型导入和构建,当模型版本状态为“正常”后,即表示模型导入成功。


5. 创建在线服务

在ModelArts上,可以将模型部署为在线服务,然后上传图片进行预测,直接在网页端观察预测结果,本算法支持GPU部署。

部署为在线服务具体步骤如下:

(1)在ModelArts左侧导航栏中选择“部署上线 -> 在线服务”,然后点击页面中的“部署”;

(2)在部署页面填写参数,其中在“模型列表”选择要导入的模型及版本,计算节点规格选择"CPU:8核32GiB GPU:1*T4"即可;

image.png

image.png

(3)点击“下一步”,参数确认无误后,点击“提交”。

提交后,您可以在在线服务列表中查看部署进度,当状态变为“运行中”后,点击服务名称,进入详情页面,点击“预测”,上传图片进行测试。测试结果如下图所示,右侧为得到的预测结果,左图中用bbox标注出了预测结果。

result.png


6. 创建批量服务

在ModelArts上,还可以将模型部署为批量服务,从OBS加载测试集图片进行预测,然后将预测结果输出到OBS,本算法支持GPU部署。

部署为批量服务具体步骤如下:

(1)在ModelArts左侧导航栏中选择“部署上线 -> 批量服务”,然后点击页面中的“部署”;

(2)在部署页面填写参数,其中在“模型列表”选择要导入的模型及版本,填写输入数据目录和输出数据目录,计算节点规格选择有GPU的节点,计算节点个数设为1;

image.png

这里的输入数据目录位置为存放待预测图像的位置,注意该位置下仅能存放待预测图片,而输出数据目录位置为空文件夹即可,可自行定义。

(3)点击“下一步”,参数确认无误后,点击“提交”。

提交后,您可以在批量服务列表中查看部署进度,当状态变为“运行中”后,表示正在预测中,当状态变为“运行完成”,表示这批图片已经预测结束,预测结果保存在上图指定的OBS输出数据目录位置中,可以前往该目录查看结果。


7. 模型评估

我们分别使用val2017和test2017对训练好的模型进行评估。其中,val2017中的图片都有ground truth标注,运行代码后可以自动计算出AP值;使用test2017进行评测时,先生成预测结果,然后上传至COCO官方评测平台进行测试。

7.1 在val2017进行评测

参考本文第3节中的步骤,创建“训练作业”,按照本文一开始给出的目录结构存放文件,按照下表设置训练参数:


image.png

7.2 在test-dev2017进行评测点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“train_url”路径下会自动生成预测结果。查看log文件,我们可以发现,在val上的AP达到了48.9。

参考本文第2.4节中的步骤,创建“训练作业”,按照下表设置训练参数:

 image.png


点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“train_url”路径,下会自动生成预测结果。

 

将预测结果上传至COCO官方评测平台进行评测: https://competitions.codalab.org/competitions/20794 

可以下载预测结果。在提交的代码文件中,我们在’infer_results’目录下已经给出了test2017的预测结果。可以看到AP达到了原论文中的0.494

 

好了,到此即将结束了,大家感觉怎么样呢?期待大家在下方分享使用体验和感受,有问题也可以提哦,直接在下方回帖就行,会尽快解答的。


回复1

2020/12/1 08:26

不错的分享,mark下学习

上划加载中
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

xendbcnehd c

发帖: 4粉丝: 0

发消息 + 关注

更新于2020年12月11日 17:16:39 808 1
直达本楼层的链接
楼主
显示全部楼层
[华为云AI经典论文复现] ModelArts AI市场算法TSD使用指导

本算法使用COCO数据集中的train集和val集,使用train集训练,在test-dev集上测试达到了AP=49.4%。代码结构如下:

|-src # 算法源码根目录

       |-pre-trained_weights # ImageNet上的预训练参数文件

       |-trained_model # 已训练好的、可复现论文精度的模型

           |-model 

               |-config.json

               |-customize_service.py

               |-epoch_35_mAP_49.4_tsd1.pth # 训练好的模型

               |-...

       |-train.py # 算法启动文件

       |-evaluation.py # 模型评估脚本

       |-...

|-data # 数据文件夹

    | -coco

        |- train2017

        |- test2017

        |- var2017

        |- annotations

    |- weight_for_eval.pth # 用于评测的模型


本算法的其他信息如下表所示:

项目  说明  
训练总epoch数 35
 训练batch_size 使用8张V100训练,每张卡TRAIN_BATCH_SIZE = 2,相当于总batch_size为16
训练硬件及耗时 8*V100,约100小时
推理硬件及速度 V100,1.9s/pic 




1. 准备数据集

本算法支持的数据集格式为COCO数据集。

COCO 的全称是 Common Objects in COntext,是微软团队提供的一个可以用来进行目标检测、图像分割、关键点检测、图像描述的数据集。COCO 通过在 Flickr 上搜索 80 个对象类别和各种场景类型来收集图像,其使用了亚马逊的 Mechanical Turk (AMT)。COCO数据集现在有3种标注类型:object instances, object keypoints, 和image captions,使用JSON文件存储。

1.1 下载数据集

点此链接(备用链接:https://cocodataset.org/#download)下载,如下图所示:

coco.png



下载train2017.zip, test2017.zip, val2017.zip,image_info_test2017.zip和annotations_trainval2017.zip。下载并解压后的文件目录层级如下图所示(本算法训练不需自行解压,可直接使用压缩包)

- val2017

- train2017

- test2017

- annotations

        - image_info_test2017.json

        - image_info_test-dev2017.json

        - instances_train2017.json

        - instances_val2017.json

        - ... 

MSCOCO2017数据集包括:
训练集:118287张,19.3GB;验证集: 5000张,1814.7M。共计123287张。

如果您需要使用自己的数据集进行训练,则需要将数据目录整理成和上面一样的形式。更详细的数据集说明请查看COCO数据集官网(备用链接:https://cocodataset.org/)上的描述。

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,点击登录;
2_login_in_obs_browser.jpg

(3)参考下图,点击“创建桶”,输入桶名称,注意:区域要选择华北-北京四、标准存储、私有、关闭多AZ,桶名需自定义,OBS桶名要全局唯一,如提示桶名已存在,则需要您修改为其他名称,比如本文设置桶名为paper-reproduction-01。您设置的桶名必须与此不同,如在下文的操作指导中看到paper-reproduction-01,请主动将桶名替换为您自己的桶名,下文将不再进行提示;
3_create_bucket.jpg

(4)点击桶名称,进入到桶中,点击“新建文件夹”,输入文件夹名称,如“train_input”,点击进入文件夹,再新建“datasets”,点击“上传”->“添加文件”-> 选择本地下载好的数据集压缩包(之所以选压缩包格式是因为如果数据集比较大,上传压缩包比上传文件夹快很多) –> 确定,如下图所示;
4_upload_files.jpg

(5)点击OBS Browser+左侧的“任务管理”,可查看数据上传进度。如下图所示,点击设置,在基础设置中,设置最大并发数为最大值50,可以加快数据上传速度
5_upload_files_2.jpg

2. 订阅本算法

点击本页面右上方的【订阅】按钮。然后点击页面下方的【下一步】按钮,再点击【确认付款】按钮,最后点击【确定】按钮进入我的订阅页面,可以看到刚刚订阅的算法。点击【应用控制台】超链接,选择华北-北京四区域,进入算法管理页面。

如下图所示,点击“同步”按钮,同步算法,可以点击刷新按钮,刷新状态。当状态变成就绪时,表示同步成功。
6_sync&train_job.jpg

3. 创建训练作业

点击上图中的“创建训练作业”,填写作业名称,选择我们刚刚生成的算法。

image.png按照下表填写训练作业参数:

名称
默认值 类型 是否必填
是否可修改 描述
gpu_num 1 int 使用GPU的数目,默认是1块v100
imgs_per_gpu 2 int 每块GPU能同时处理的图像数目
lr 0.02 float 训练的学习率
epoch 35 int 训练多少代
lr_step 24,33 str 在训练至多少代时进行进行学习率衰减
deterministic 1 int 算法是否是确定性的,即是否设定种子
validate 1 int 训练时是否进行在验证集上检验
multi_train 1 int 在训练时是否采用多尺度图像增强
multi_test 0 int 在验证和测试时是否采用多尺度图像增强
test_ann_file annotations/image_info_test-dev2017.json str 测试时采用的图像标注json文件。支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。
test_img_prefix test2017 str 测试时图像所在的文件夹目录
format_only 0 int 是否只输出预测结果文件,不输出准确率等指标。当测试没有ground truth时,必须把format_only设为1
load_weight trained_model/model/epoch_35_mAP_49.4_tsd1.pth str 是否加载已训练好的模型权重
eval 0 int 是否进行测试。1表示测试;0表示训练


具体介绍一下load_weight参数

1.    默认情况:默认加载已训练好的模型,即源码目录中的trained_model/model/ epoch_35_mAP_49.4_tsd1.pth,加载成功会打印日志。

2.    格式规范:支持输入本算法源码目录的相对路径;也支持输入可变的OBS路径,用户可指定OBS上的一个模型文件路径。

3.    使用方法:在训练阶段,可以加载ImageNet预训练Resnet101权重来train from scratch(需要把load_weight参数删除掉),也可以指定加载的模型路径,在此基础上继续训练;若为eval阶段,参数为空时默认加载本算法训练好的weight,不为空时加载用户指定weight进行测试。

4.    其他说明:算法加载模型成功后会打印日志。

 

点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“模型输出”路径下会自动生成model目录,该目录下有模型文件、ModelArts平台推理脚本(config.json、customize_service.py)和其他运行模型必备的文件。


4. 模型导入

准备好模型及相关的必备文件后,您可以将生成的模型导入至ModelArts模型管理。具体操作如下:

(1)在ModelArts控制台的左侧导航栏点击“模型管理” -> “模型”,点击右侧页面中的“导入”。在导入模型页面填写名称,选择元模型来源,可以直接从训练中选择(推荐使用这种方法,简单方便,与训练无缝衔接),比如在这里我选择了上一步训练生成的模型“trainjob-train-epoch0-final”;也可以从OBS中选择。如果是从OBS中选择,则需要选择到model目录的上一级目录。如下图所示:

image.png


点击“立即创建”,需要一点时间来等待模型导入和构建,当模型版本状态为“正常”后,即表示模型导入成功。


5. 创建在线服务

在ModelArts上,可以将模型部署为在线服务,然后上传图片进行预测,直接在网页端观察预测结果,本算法支持GPU部署。

部署为在线服务具体步骤如下:

(1)在ModelArts左侧导航栏中选择“部署上线 -> 在线服务”,然后点击页面中的“部署”;

(2)在部署页面填写参数,其中在“模型列表”选择要导入的模型及版本,计算节点规格选择"CPU:8核32GiB GPU:1*T4"即可;

image.png

image.png

(3)点击“下一步”,参数确认无误后,点击“提交”。

提交后,您可以在在线服务列表中查看部署进度,当状态变为“运行中”后,点击服务名称,进入详情页面,点击“预测”,上传图片进行测试。测试结果如下图所示,右侧为得到的预测结果,左图中用bbox标注出了预测结果。

result.png


6. 创建批量服务

在ModelArts上,还可以将模型部署为批量服务,从OBS加载测试集图片进行预测,然后将预测结果输出到OBS,本算法支持GPU部署。

部署为批量服务具体步骤如下:

(1)在ModelArts左侧导航栏中选择“部署上线 -> 批量服务”,然后点击页面中的“部署”;

(2)在部署页面填写参数,其中在“模型列表”选择要导入的模型及版本,填写输入数据目录和输出数据目录,计算节点规格选择有GPU的节点,计算节点个数设为1;

image.png

这里的输入数据目录位置为存放待预测图像的位置,注意该位置下仅能存放待预测图片,而输出数据目录位置为空文件夹即可,可自行定义。

(3)点击“下一步”,参数确认无误后,点击“提交”。

提交后,您可以在批量服务列表中查看部署进度,当状态变为“运行中”后,表示正在预测中,当状态变为“运行完成”,表示这批图片已经预测结束,预测结果保存在上图指定的OBS输出数据目录位置中,可以前往该目录查看结果。


7. 模型评估

我们分别使用val2017和test2017对训练好的模型进行评估。其中,val2017中的图片都有ground truth标注,运行代码后可以自动计算出AP值;使用test2017进行评测时,先生成预测结果,然后上传至COCO官方评测平台进行测试。

7.1 在val2017进行评测

参考本文第3节中的步骤,创建“训练作业”,按照本文一开始给出的目录结构存放文件,按照下表设置训练参数:


image.png

7.2 在test-dev2017进行评测点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“train_url”路径下会自动生成预测结果。查看log文件,我们可以发现,在val上的AP达到了48.9。

参考本文第2.4节中的步骤,创建“训练作业”,按照下表设置训练参数:

 image.png


点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“train_url”路径,下会自动生成预测结果。

 

将预测结果上传至COCO官方评测平台进行评测: https://competitions.codalab.org/competitions/20794 

可以下载预测结果。在提交的代码文件中,我们在’infer_results’目录下已经给出了test2017的预测结果。可以看到AP达到了原论文中的0.494

 

好了,到此即将结束了,大家感觉怎么样呢?期待大家在下方分享使用体验和感受,有问题也可以提哦,直接在下方回帖就行,会尽快解答的。


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

RabbitCloud

发帖: 183粉丝: 3

发消息 + 关注

发表于2020年12月01日 08:26:22
直达本楼层的链接
沙发
显示全部楼层

不错的分享,mark下学习

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200