华为云AI开发平台ModelArts使用自定义数据集进行训练_云淘科技
ivgSegmentation支持cityscapes_custom_sample、[Pascal VOC](下载地址:http://host.robots.ox.ac.uk/pascal/VOC/index.html)和自定义数据集。
Step0 准备环境
使用前需要先准备开发环境。
参考准备开发环境章节创建并打开Notebook实例。
参考创建算法工程章节创建算法工程。
Step1 上传数据集到开发环境中
按照不同算法定义的数据结构和格式准备好数据集。
若数据集在OBS桶里,在Terminal里可执行下述命令将OBS里的数据下载到Notebook环境中。
python manage.py copy --source obs://my_bucket/my_data_dir/ --dest /home/ma-user/work/my_data_dir
若数据集比较小且存放在PC上。
若使用的本地IDE是VS Code,可以通过拖放方式复制到VS Code连接的Notebook中。
自定义数据集结构如下:
├── my_dataset │ ├── image │ │ ├── train │ │ │ ├── xxx{img_suffix} │ │ │ ├── yyy{img_suffix} │ │ │ ├── zzz{img_suffix} │ │ │ ├── ... │ │ ├── val │ ├── annotation │ │ ├── train │ │ │ ├── xxx{seg_map_suffix} │ │ │ ├── yyy{seg_map_suffix} │ │ │ ├── zzz{seg_map_suffix} │ │ │ ├── ... │ │ ├── val
Step2 修改配置文件
配置文件主要包括算法配置文件和算法参数文件,例如:
算法配置文件:./algorithms/ivgPose/config/sample/config.py
算法参数文件:./algorithms/ivgPose/config/sample/simplepose_resnet50_coco_256x192.py
根据需要修改训练相关参数,如数据集路径data_root、runner中的train_args参数以及train参数等。如下述代码所示。
config.py文件
train_args=dict( cfg=alg_cfg['cfg'], output_dir=run_dir, data_root=alg_cfg['data_root'], load_from=None, gpus=None, lr=None, max_epoch=5, samples_per_gpu=None, resume_from=None, pretrained=alg_cfg['pretrained'], train_data_root=None, val_data_root=None, ),
simplepose_resnet50_coco_256x192.py文件
train = dict( save_period=-1, val_period=5, best_saver=dict(key_indicator='AP', rule='max'), ema=dict(type='ExpEMA') )
Step3 在开发环境中进行训练
在Terminal中执行下述训练命令,其中:–cfg为该预训练模型对应算法资产的配置文件路径。
python manage.py run --cfg algorithms/ivgPose/config/sample/config.py --gpus 0
运行完毕后,在交互式输出界面或config.py配置的{run_dir}目录下的train_{timestamp}.log可以看到训练过程的日志和结果。如下述信息所示。
Train: 000/003 | loss:0.002145 | acc_pose:0.029999 | lr:{'0.000001', '0.000005'}: 100%|██████████████████████████| 397/397 [00:36<00:00, 10.73it/s] [07/19 15:36:30][INFO] ivgpose-utils.py 52: Train: 000/003 | loss:0.002145 | acc_pose:0.029999 | lr:{'0.000001', '0.000005'} | elapsed:00:36 Val: 000/003 | loss:0.002451 | acc_pose:0.060385 | : 100%|███████████████████████████████████████████████████████| 397/397 [00:16<00:00, 24.09it/s] [07/19 15:36:53][INFO] ivgpose-utils.py 101: Val: 000/003 | loss:0.002451 | acc_pose:0.060385 | elapsed:00:16 [07/19 15:36:55][INFO] ivgpose-utils.py 167: ******************** Best: acc_pose:0.060385 | epoch:000 Train: 001/003 | loss:0.002144 | acc_pose:0.043690 | lr:{'0.000170', '0.000017'}: 100%|██████████████████████████| 397/397 [00:35<00:00, 11.10it/s] [07/19 15:37:31][INFO] ivgpose-utils.py 52: Train: 001/003 | loss:0.002144 | acc_pose:0.043690 | lr:{'0.000170', '0.000017'} | elapsed:00:35 Train: 002/003 | loss:0.002148 | acc_pose:0.053395 | lr:{'0.000034', '0.000335'}: 100%|██████████████████████████| 397/397 [00:35<00:00, 11.13it/s] [07/19 15:38:13][INFO] ivgpose-utils.py 52: Train: 002/003 | loss:0.002148 | acc_pose:0.053395 | lr:{'0.000034', '0.000335'} | elapsed:00:35 Val: 002/003 | loss:0.002407 | acc_pose:0.088161 | : 100%|███████████████████████████████████████████████████████| 397/397 [00:16<00:00, 23.41it/s] [07/19 15:38:36][INFO] ivgpose-utils.py 101: Val: 002/003 | loss:0.002407 | acc_pose:0.088161 | elapsed:00:16 [07/19 15:38:39][INFO] ivgpose-utils.py 167: ******************** Best: acc_pose:0.088161 | epoch:002
Step4 在开发环境中进行验证
在Terminal中执行下述测试命令,其中:–cfg为该预训练模型对应算法资产的配置文件路径,–load_from的值为待测试的模型路径,config.py为:
python manage.py run --cfg algorithms/ivgPose/config/sample/config.py --pipeline evaluate --load_from ./model_zoo/ivgPose/body/simplepose_resnet50_coco_256x192.pth.tar
运行完毕后,在交互式输出界面或config.py配置的{run_dir}目录下的test.log可以看到验证过程的日志和结果。如下述信息所示:
ivgpose-utils.py 133: Test: AP:0.735012 | AP .5:0.925143 | AP .75:0.813647 | AP (M):0.705874 | AP (L):0.778985 | AR:0.764798 | AR .5:0.933879 | AR .75:0.832966 | AR (M):0.732641 | AR (L):0.813304 | elapsed:00:28
Step5 推理
准备好待推理的图片,本小节以算法套件里内置的推理图片为例,原图片如下:
图1 待推理的图片
在Terminal中执行下述推理命令,其中–img_file的值为待推理图片的路径:
python manage.py run --cfg algorithms/ivgPose/config/sample/config.py --pipeline infer --demo_type image_demo --load_from model_zoo/ivgPose/body/simplepose_resnet50_coco_256x192.pth.tar --img_path algorithms/ivgPose/algorithm/examples/images/body/human36m_s_01_act_02_subact_01_ca_01_000001.jpg --is_show
运行完毕后,在当前目录的export/exp_tmp下可以看到推理后的文件,打开后显示如下。
图2 推理后的文件
Step6 提交Modelarts训练作业
参考Step2,修改外壳的配置文件。
填写OBS桶信息
obs_bucket = 'obs://my_bucket/my_object'
按需修改runner里的Adapter参数。
adapter=dict( requirements=f'{work_dir}/algorithm/requirements.txt', framework_type='PyTorch', framework_version='PyTorch-1.4.0-python3.6', instance_type='modelarts.p3.large.public', pool_id=None, downloads=dict( src=[f'{obs_bucket}/{alg_cfg["data_root"]}', f'{obs_bucket}/{alg_cfg["pretrained"]}'], dst=[alg_cfg['data_root'], alg_cfg['pretrained']], ), uploads=dict( src=[run_dir], dst=[f'{obs_bucket}/{run_dir}'], ), ),
在Terminal中输入下述命令来提交ModelArts训练作业完成训练。
python manage.py run --launch_remote --cfg algorithms/ivgPose/config/sample/config.py --gpus 0
提交完训练作业后,可以在ModelArts控制台交互式界面看到当前训练作业的状态(如排队中、运行中等),可以在config.py配置的{run_dir}/{训练作业名称目录}下看到ModelArts上的训练日志。注:仅支持Modelarts新版训练作业。
父主题: 使用样例
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家