本文分享自华为云社区《VSCode一键接入Notebook体会算法套件快速完结水表读数》,作者:HWCloudAI。

本示例围绕实在AI需求场景,介绍VSCode一键接入Notebook体会算法套件快速完结水表读数的运用流程。

算法开发套件中现在供给自研(ivg系列)和开源(mm系列)共两套算法财物,可应用于分类、检测、切割和OCR等使命中。本示例中将组合运用自研切割算法(ivgSegmentation)和开源OCR算法(mmOCR)完结水表读数辨认项目,并运用算法开发套件将其布置为华为云在线服务。

阐明:

本事例教程仅适用于“华北-北京四”区域,新版Notebook。

预备数据

  1. 登录OBS控制台,创立OBS目标桶,区域挑选“华北-北京四”。

  2. 登录ModelArts控制台,挑选控制台区域为“华北-北京四”。

  3. 在“大局装备”页面检查是否已经装备授权,允许ModelArts拜访OBS。假如没有装备授权,请参考装备拜访授权(大局装备)添加授权。

  4. 分别下载本事例的数据集,水表表盘切割数据集和水表表盘读数OCR辨认数据集到OBS桶中,OBS途径示例如下

    obs://{OBS桶称号}/water_meter_segmentation 水表表盘切割数据集

    obs://{OBS桶称号}/water_meter_crop 水表表盘读数OCR辨认数据集

    阐明:

    从AIGallery下载数据集免费,但是数据集存储在OBS桶中会收取少量费用,详细计费请拜见OBS价格详情页,事例运用完结后请及时铲除资源和数据。

预备开发环境

在“ModelArts控制台 > 开发环境 > Notebook(New)”页面中,创立基于pytorch1.4-cuda10.1-cudnn7-ubuntu18.04镜像,类型为GPU的Notebook,详细操作请拜见创立Notebook实例章节。

本事例需求运用VS Code 长途衔接Notebook,需求敞开SSH长途开发。

图1 创立Notebook实例

VSCode一键接入Notebook体验算法套件快速完成水表读数

1.实例的密钥文件需求下载至本地的如下目录或其子目录中:

Windows:C:\Users{{user}}

Mac/Linux: Users/{{user}}

2.在ModelArts控制台->开发环境 Notebook,单击“操作”列的“更多 > VS Code接入”。

VSCode一键接入Notebook体验算法套件快速完成水表读数

假如本地已装置VS Code,请单击“翻开”,进入“Visual Studio Code”页面。

假如本地未装置VS Code,请依据实际挑选“win”或“其他”下载并装置VS Code。VS Code装置请参考装置VS Code软件。

假如用户之前未装置过ModelArts VS Code插件,此时会弹出装置提示,请单击“Install and Open”进行装置;假如之前已经装置过插件,则不会有该提示,请越过此进程,直接履行后边进程

装置进程预计1~2分钟,装置完结后右下角会弹出对话框,请单击“Reload Window and Open”。

在弹出的提示中,勾选“Don’t ask again for this extension”,然后单击”Open”。

3.长途衔接Notebook实例。

  • 长途衔接履行前,会自动在(Windows:C:\Users{{user}}.ssh或者downloads,Mac/Linux: Users/{{user}}/.ssh或者downloads)目录下依据密钥称号查找密钥文件,假如找到则直接运用该密钥翻开新窗口并测验衔接长途实例,此时无需挑选密钥。

  • 假如未找到会弹出挑选框,请依据提示挑选正确的密钥。

  • 假如密钥挑选错误,则弹出提示信息,请依据提示信息挑选正确密钥。

  • 当弹出提示实例衔接失利,请封闭弹窗,并检查OUTPUT窗口的输出日志,请检查FAQ并排查失利原因。

运用算法套件进行开发

Step1 创立算法工程

1、成功接入之后,在VS Code页面点击文件->翻开文件夹,挑选如下文件夹翻开

VSCode一键接入Notebook体验算法套件快速完成水表读数

2、新建终端
VSCode一键接入Notebook体验算法套件快速完成水表读数
3、在work目录下履行

ma-cli createproject

指令创立工程,依据提示输入工程称号,例如:water_meter。然后直接回车挑选默许参数,并挑选越过财物装置进程(挑选6)。

VSCode一键接入Notebook体验算法套件快速完成水表读数

4、履行以下指令进入工程目录。

cd water_meter

5、履行以下指令复制项目数据到Notebook中。

python manage.py copy --source {obs_dataset_path} --dest ./data/raw/water_meter_crop
python manage.py copy --source {obs_dataset_path} --dest ./data/raw/water_meter_segmentation

阐明:

{obs_dataset_path}途径为Step1 预备数据中下载到OBS中的数据集,比如“obs://{OBS桶称号}/water_meter_segmentation”和“obs://{OBS桶称号}/water_meter_crop”

Step2 运用deeplabv3完结水表区域切割使命

1、首要装置ivgSegmentation套件。

python manage.py install algorithm ivgSegmentation==1.0.2

假如提示ivgSegmentation版别不正确,可以经过指令python manage.py list algorithm查询版别。

2、装置ivgSegmentation套件后,在界面左侧的工程目录中进入“./algorithms/ivgSegmentation/config/sample”文件夹中检查现在支持的切割模型,以sample为例(sample默许的算法就是deeplabv3),文件夹中包含config.py(算法外壳装备)和deeplabv3_resnet50_standard-sample_512x1024.py(模型结构)。

3、表盘切割只需求区分布景和读数区域,因此归于二分类,需求依据项目所需数据集对装备文件进行修正,如下所示:

修正./algorithms/ivgSegmentation/config/sample/config.py文件。

# config.py
alg_cfg = dict(
    ...    
    data_root='data/raw/water_meter_segmentation',   # 修正为实在途径本地切割数据集途径
    ...
)

VSCode一键接入Notebook体验算法套件快速完成水表读数

修正完后按Ctrl+S保存。

4、修正./algorithms/ivgSegmentation/config/sample/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)
 )

VSCode一键接入Notebook体验算法套件快速完成水表读数
5、修正完按Ctrl+S保存。

6、在water_meter工程目录下,装置deeplabv3预练习模型。

python manage.py install model ivgSegmentation:deeplab/deeplabv3_resnet50_cityscapes_512x1024

7、练习切割模型。(推荐运用GPU进行练习)

# shell
python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --gpus 0

练习好的模型会保存在指定方位中,默许为output/deeplabv3_resnet50_standard-sample_512x1024/checkpoints/中。

8、验证模型作用。

模型练习完结后,可以在验证集上计算模型的目标,首要修正装备文件的模型方位。

修正./algorithms/ivgSegmentation/config/sample/config.py。

# config.py
alg_cfg = dict(
    ...
    load_from='./output/deeplabv3_resnet50_standard-sample_512x1024/checkpoints/checkpoint_best.pth.tar',  # 修正练习模型的途径
    ...
)
# shell
python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --pipeline evaluate

9、模型推理

模型推理可以指定某一张图片,而且推理出图片的切割区域,并进行可视化,首要需求指定需求推理的图片途径。

修正./algorithms/ivgSegmentation/config/sample/config.py

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

履行如下指令推理模型作用。

# shell
python manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --pipeline infer

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

10、导出SDK。

算法开发套件支持将模型导出成一个模型SDK,方便进行模型布置等下流使命。

# shell
python manage.py export --cfg algorithms/ivgSegmentation/config/sample/config.py --is_deploy

Step3 水表读数辨认

1、首要装置mmocr套件。

python manage.py install algorithm mmocr

2、装置mmocr套件后,./algorithms/mmocr/config/textrecog文件夹中包含config.py(算法外壳装备),需求依据所需算法和数据集途径修正装备文件。以下以robust_scanner算法为例。

修正./algorithms/mmocr/algorithm/configs/textrecog/robustscanner_r31_academic.py,

# robustscanner_r31_academic.py
...
train_prefix = 'data/raw/water_meter_crop/'  # 修正数据集途径改为水表ocr辨认数据集途径
train_img_prefix1 = train_prefix + 'train'
train_ann_file1 = train_prefix + 'train.txt'
test_prefix = 'data/raw/water_meter_crop/'
test_img_prefix1 = test_prefix + ‘val’
test_ann_file1 = test_prefix + ‘val.txt’

3、装置robust_scanner预练习模型。

python manage.py install model mmocr:textrecog/robust_scanner/robustscanner_r31_academic

4、练习OCR模型。

初度运用mmcv时需求编译mmcv-full,该进程较慢,可以直接运用官方预编译的依赖包。

预编译包URL: download.openmmlab.com/mmcv/dist/c…

pip install https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/mmcv_full-1.3.8-cp37-cp37m-manylinux1_x86_64.whl

将./algorithms/mmocr/config/textrecog/config.py中的epoch(迭代数量)改为2,如下图所示:

python manage.py run --cfg algorithms/mmocr/config/textrecog/config.py

练习好的模型会保存在指定方位中,默许为output/${algorithm}中。

5、验证模型作用。

模型练习完结后,可以在验证集上计算模型的目标,首要修正装备文件的模型方位。

修正./algorithms/mmocr/config/textrecog/config.py

# config.py
...
model_path = './output/robustscanner_r31_academic/latest.pth'
...
# shell 
python manage.py run --cfg algorithms/mmocr/config/textrecog/config.py --pipeline evaluate

6、模型推理。

模型推理可以指定某一张图片,而且推理出图片的切割区域,并进行可视化。首要需求指定待推理的图片途径,修正algorithms/mmocr/config/textrecog/config.py文件,详细如下。

修正./algorithms/mmocr/algorithm/configs/textrecog/robust_scanner/config.py

...
infer_img_file='./data/raw/water_meter_crop/val/train_10.jpg'  # 指定需求推理的图片途径 
...
# shell 
python manage.py run --cfg algorithms/mmocr/config/textrecog/config.py --pipeline infer

推理输出的图片途径在output/robustscanner_r31_academic/vis下

7、导出SDK。

# shell 
python manage.py export --cfg algorithms/mmocr/config/textrecog/config.py

Step4 布置为在线服务

本次展现仅布置OCR服务, 包含本地布置和线上布置, 布置上线后调用布置服务进行本地图片的推理,获取水表的预测读数。布置在线服务,需求指定OBS桶以便保存布置所需求的文件。

1.在algorithms/mmocr/config/textrecog/config.py文件中装备OBS桶,即obs_bucket=。

VSCode一键接入Notebook体验算法套件快速完成水表读数

2.履行下述指令:

python manage.py export --cfg algorithms/mmocr/config/textrecog/config.py --is_deploy  # 导出布置模型
python manage.py deploy --cfg algorithms/mmocr/config/textrecog/config.py # 本地布置 
python manage.py deploy --cfg algorithms/mmocr/config/textrecog/config.py --launch_remote#在线布置,会耗时一瞬间,请耐性等候

点击此处,检查布置成功的在线服务

Step5 铲除资源和数据

经过此示例学习完结创立算法套件流程后,假如不再运用,建议您铲除相关资源,避免形成资源浪费和不必要的费用。

  • 中止Notebook:在“Notebook”页面,单击对应实例操作列的“中止”。
  • 删去数据:点击此处,前往OBS控制台,删去上传的数据,然后删去文件夹及OBS桶。

点击重视,第一时间了解华为云新鲜技能~