在本示例中,介绍一种two-stage算法(Faster R-CNN),将目标区域检测和类别识别分为两个任务进行物体检测。本示例采用PyTorch引擎进行模型构建。
如果您已熟练使用Notebook和Github,可以从Github下载样例文件(Faster-R-CNN.ipynb),然后上传至ModelArts Notebook中直接使用。
创建并打开Notebook在ModelArts管理控制台,进入“开发环境>Notebook”页面,单击左上角的“创建”。
在“创建Notebook”页面,参考表1填写相关信息,然后单击“下一步”。
表1本示例的参数填写说明参数
说明
名称
用户可自定义Notebook实例名称。
自动停止
为避免资源浪费,启用自动停止功能,并选择1小时后自动停止。
工作环境
选择“Multi-Engine 1.0 (python3 推荐)”。
资源池
选“公共资源池”。
类型
选择“GPU”。
规格
选择“GPU: 1*v100NV32 CPU: 8 核 64GiB”,您也可以选择“免费规格”,如果使用“免费规格”,可能会由于使用人数较多导致排队等待。
存储类型
选择“云硬盘(EVS)”,使用默认的5GB磁盘规格即可。
根据界面提示完成Notebook实例创建,单击“返回Notebook列表”。
在“Notebook列表”中,等待Notebook实例创建完成,当状态变为“运行中”时,表示Notebook实例已创建成功。
单击操作列的“打开”,进入Notebook开发环境。
在Jupyter页面,单击“New>PyTorch-1.0.0”,新建一个Pytorch工作环境。
单击左上方的文件名“Untitled”,并输入一个与本示例相关的名称,例如“Faster R-CNN”。
执行如下代码测试开发环境是否可用。在单元格中输入,然后单击“Run”,运行后回显信息如图1所示,表示开发环境可正常使用。print("hello,ModelArts!")
图1测试开发环境
数据准备
首先,执行如下代码将需要的代码和数据下载到Notebook。
本示例使用PASCAL VOC 2007数据集训练模型,共20个类别的物体。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20import os
from modelarts.session import Session
sess = Session()
if sess.region_name == 'cn-north-1':
bucket_path="modelarts-labs/notebook/DL_object_detection_faster/fasterrcnn.tar.gz"
elif sess.region_name == 'cn-north-4':
bucket_path="modelarts-labs-bj4/notebook/DL_object_detection_faster/fasterrcnn.tar.gz"
else:
print("请更换地区到北京一或北京四")
if not os.path.exists('./experiments'):
sess.download_data(bucket_path=bucket_path, path="./fasterrcnn.tar.gz")
if os.path.exists('./fasterrcnn.tar.gz'):
# 解压压缩包
os.system("tar -xf ./fasterrcnn.tar.gz")
# 清理压缩包
os.system("rm -r ./fasterrcnn.tar.gz")
当回显信息出现如下类似信息时,表示数据已导入成功。
Successfully download file modelarts-labs-bj4/notebook/DL_object_detection_faster/fasterrcnn.tar.gz from OBS to local ./fasterrcnn.tar.gz
安装依赖并引用
执行如下命令,等待运行结束。
1
2
3!pip install pycocotools==2.0.0
!pip install torchvision==0.4.0
!pip install protobuf==3.9.0
当出现“Successfully installed...”类似信息时,表示上述命令安装成功。分两个Cell,执行如下示例代码,引用依赖。
1
2
3
4
5
6
7
8
9
10
11import tools._init_paths
%matplotlib inline
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorboardX as tb
from datasets.factory import get_imdb
from model.train_val import get_training_roidb, train_net
from model.config import cfg, cfg_from_file, cfg_from_list, get_output_dir, get_output_tb_dir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import roi_data_layer.ro