华为云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)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家