发布于42个月以前
- 0
- 0
- 253
本算法使用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)下载,如下图所示:
下载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,点击登录;
(3)参考下图,点击“创建桶”,输入桶名称,注意:区域要选择华北-北京四、标准存储、私有、关闭多AZ,桶名需自定义,OBS桶名要全局唯一,如提示桶名已存在,则需要您修改为其他名称,比如本文设置桶名为paper-reproduction-01。您设置的桶名必须与此不同,如在下文的操作指导中看到paper-reproduction-01,请主动将桶名替换为您自己的桶名,下文将不再进行提示;
(4)点击桶名称,进入到桶中,点击“新建文件夹”,输入文件夹名称,如“train_input”,点击进入文件夹,再新建“datasets”,点击“上传”->“添加文件”-> 选择本地下载好的数据集压缩包(之所以选压缩包格式是因为如果数据集比较大,上传压缩包比上传文件夹快很多) –> 确定,如下图所示;
(5)点击OBS Browser+左侧的“任务管理”,可查看数据上传进度。如下图所示,点击设置,在基础设置中,设置最大并发数为最大值50,可以加快数据上传速度
2. 订阅本算法
点击本页面右上方的【订阅】按钮。然后点击页面下方的【下一步】按钮,再点击【确认付款】按钮,最后点击【确定】按钮进入我的订阅页面,可以看到刚刚订阅的算法。点击【应用控制台】超链接,选择华北-北京四区域,进入算法管理页面。
如下图所示,点击“同步”按钮,同步算法,可以点击刷新按钮,刷新状态。当状态变成就绪时,表示同步成功。
3. 创建训练作业
点击上图中的“创建训练作业”,填写作业名称,选择我们刚刚生成的算法。
按照下表填写训练作业参数:
名称 | 默认值 | 类型 | 是否必填 | 是否可修改 | 描述 |
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目录的上一级目录。如下图所示:
点击“立即创建”,需要一点时间来等待模型导入和构建,当模型版本状态为“正常”后,即表示模型导入成功。
5. 创建在线服务
在ModelArts上,可以将模型部署为在线服务,然后上传图片进行预测,直接在网页端观察预测结果,本算法支持GPU部署。
部署为在线服务具体步骤如下:
(1)在ModelArts左侧导航栏中选择“部署上线 -> 在线服务”,然后点击页面中的“部署”;
(2)在部署页面填写参数,其中在“模型列表”选择要导入的模型及版本,计算节点规格选择"CPU:8核32GiB GPU:1*T4"即可;
(3)点击“下一步”,参数确认无误后,点击“提交”。
提交后,您可以在在线服务列表中查看部署进度,当状态变为“运行中”后,点击服务名称,进入详情页面,点击“预测”,上传图片进行测试。测试结果如下图所示,右侧为得到的预测结果,左图中用bbox标注出了预测结果。
6. 创建批量服务
在ModelArts上,还可以将模型部署为批量服务,从OBS加载测试集图片进行预测,然后将预测结果输出到OBS,本算法支持GPU部署。
部署为批量服务具体步骤如下:
(1)在ModelArts左侧导航栏中选择“部署上线 -> 批量服务”,然后点击页面中的“部署”;
(2)在部署页面填写参数,其中在“模型列表”选择要导入的模型及版本,填写输入数据目录和输出数据目录,计算节点规格选择有GPU的节点,计算节点个数设为1;
这里的输入数据目录位置为存放待预测图像的位置,注意该位置下仅能存放待预测图片,而输出数据目录位置为空文件夹即可,可自行定义。
(3)点击“下一步”,参数确认无误后,点击“提交”。
提交后,您可以在批量服务列表中查看部署进度,当状态变为“运行中”后,表示正在预测中,当状态变为“运行完成”,表示这批图片已经预测结束,预测结果保存在上图指定的OBS输出数据目录位置中,可以前往该目录查看结果。
7. 模型评估
我们分别使用val2017和test2017对训练好的模型进行评估。其中,val2017中的图片都有ground truth标注,运行代码后可以自动计算出AP值;使用test2017进行评测时,先生成预测结果,然后上传至COCO官方评测平台进行测试。
7.1 在val2017进行评测
参考本文第3节中的步骤,创建“训练作业”,按照本文一开始给出的目录结构存放文件,按照下表设置训练参数:
7.2 在test-dev2017进行评测点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“train_url”路径下会自动生成预测结果。查看log文件,我们可以发现,在val上的AP达到了48.9。
参考本文第2.4节中的步骤,创建“训练作业”,按照下表设置训练参数:
点击下一步,提交,训练作业的状态会经历“初始化”、“部署中”、“运行中”和“运行成功”四个状态。训练作业运行成功后,在上表中指定的“train_url”路径,下会自动生成预测结果。
将预测结果上传至COCO官方评测平台进行评测: https://competitions.codalab.org/competitions/20794
可以下载预测结果。在提交的代码文件中,我们在’infer_results’目录下已经给出了test2017的预测结果。可以看到AP达到了原论文中的0.494
好了,到此即将结束了,大家感觉怎么样呢?期待大家在下方分享使用体验和感受,有问题也可以提哦,直接在下方回帖就行,会尽快解答的。
评论 0

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




