AI开发平台MODELARTS-使用算法套件快速完成水表读数识别:Step2 使用deeplabv3完成水表区域分割任务

时间:2024-05-21 18:58:06

Step2 使用deeplabv3完成水表区域分割任务

  1. 执行如下命令安装ivgSegmentation套件。
    python manage.py install algorithm ivgSegmentation==1.0.2
    图4 ivgSegmentation套件安装成功

    如果提示ivgSegmentation版本不正确,可以通过命令python manage.py list algorithm查询版本。

  2. 安装ivgSegmentation套件后,在JupyterLab界面左侧的工程目录中进入“./algorithms/ivgSegmentation/config/sample”文件夹中查看目前支持的分割模型,以sample为例(sample默认的算法就是deeplabv3),文件夹中包括config.py(算法外壳配置)和deeplabv3_resnet50_standard-sample_512x1024.py(模型结构)。
    图5 进入sample文件夹

  3. 表盘分割只需要区分背景和读数区域,因此属于二分类,需要根据项目所需数据集对配置文件进行修改,如下所示:

    修改“config.py”文件。

    图6 修改sample文件夹下的config.py文件

    # config.py

        ... 
    alg_cfg = dict(
        ...    
        data_root='data/raw/water_meter_segmentation',   # 修改为真实路径本地分割数据集路径
        ...
    )
    

    修改完后按Ctrl+S保存。

  4. 修改“deeplabv3_resnet50_standard-sample_512x1024.py”文件。
    图7 修改deeplabv3_resnet50_standard-sample_512x1024.py文件

    # deeplabv3_resnet50_standard-sample_512x1024.py

    gpus=[0]
    ...
    data_cfg = dict(
        ...    num_classes=2,  # 修改为2类
        ...    
        ...    train_scale=(512, 512),  # (h, w)#size全部修改为(512, 512)
        ...    train_crop_size=(512, 512),  # (h, w)
        ...    test_scale=(512, 512),  # (h, w)
        ...    infer_scale=(512, 512),  # (h, w)
     )
    
    

    修改完按Ctrl+S保存。

  5. 在water_meter工程目录下,执行如下命令安装deeplabv3预训练模型。
    python manage.py install model ivgSegmentation:deeplab/deeplabv3_resnet50_cityscapes_512x1024
    图8 安装deeplabv3预训练模型
  6. 执行如下命令训练分割模型。(推荐使用GPU进行训练)
    python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --gpus 0
    图9 分割模型训练结果

    训练好的模型会保存在指定位置中,默认为“./output/deeplabv3_resnet50_standard-sample_512x1024/checkpoints/”中。

  7. 验证模型效果。

    模型训练完成后,可以在验证集上计算模型的指标,首先修改配置文件的模型位置。

    修改“config.py”文件,修改完按Ctrl+S保存。

    # config.py

        ...
    alg_cfg = dict(
        ...
        load_from='./output/deeplabv3_resnet50_standard-sample_512x1024/checkpoints/checkpoint_best.pth.tar',  # 修改训练模型的路径
        ...
    )

    执行如下命令计算模型指标。

    python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --pipeline evaluate
    图10 模型指标计算结果
  8. 模型推理。

    模型推理能够指定某一张图片,并且推理出图片的分割区域,并进行可视化,首先需要指定需要推理的图片路径。

    修改“config.py”文件,修改完按Ctrl+S保存。

    alg_cfg = dict(
        ...
       img_file='./data/raw/water_meter_segmentation/image/train_10.jpg'  # 指定需要推理的图片路径
       ...
    )

    执行如下命令推理模型。

    python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --pipeline infer
    图11 表盘分割模型推理结果

    推理输出的图片路径在“./output/deeplabv3_resnet50_standard-sample_512x1024”下。

    图12 水表表盘分割结果可视化
  9. 执行如下命令导出算法SDK。
    python manage.py export --cfg algorithms/ivgSegmentation/config/sample/config.py --is_deploy

    算法开发套件支持将模型导出成一个模型SDK,方便进行模型部署等下游任务。SDK导出的路径为“./export/deeplabv3_resnet50_standard-sample_512x1024/Linux_x86_64_GPU_PyTorch_Common_py”

    图13 SDK导出路径
    图14 SDK导出示意图
support.huaweicloud.com/devtool-modelarts/devtool-modelarts_0195.html