写点什么

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

  • 2023-02-09
    中国香港
  • 本文字数:4563 字

    阅读完需:约 15 分钟

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

本文分享自华为云社区《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 实例



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


Windows:C:\Users{{user}}


Mac/Linux: Users/{{user}}


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



如果本地已安装 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 页面点击文件->打开文件夹,选择如下文件夹打开



2、新建终端



3、在 work 目录下执行


ma-cli createproject


命令创建工程,根据提示输入工程名称,例如:water_meter。然后直接回车选择默认参数,并选择跳过资产安装步骤(选择 6)。



4、执行以下命令进入工程目录。


cd water_meter
复制代码


5、执行以下命令拷贝项目数据到 Notebook 中。


python manage.py copy --source {obs_dataset_path} --dest ./data/raw/water_meter_croppython 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.pyalg_cfg = dict(    ...        data_root='data/raw/water_meter_segmentation',   # 修改为真实路径本地分割数据集路径    ...)
复制代码



修改完后按 Ctrl+S 保存。


4、修改./algorithms/ivgSegmentation/config/sample/deeplabv3_resnet50_standard-sample_512x1024.py 文件。


# deeplabv3_resnet50_standard-sample_512x1024.pygpus=[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) )
复制代码



5、修改完按 Ctrl+S 保存。


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


python manage.py install model ivgSegmentation:deeplab/deeplabv3_resnet50_cityscapes_512x1024
复制代码


7、训练分割模型。(推荐使用 GPU 进行训练)


# shellpython 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.pyalg_cfg = dict(    ...    load_from='./output/deeplabv3_resnet50_standard-sample_512x1024/checkpoints/checkpoint_best.pth.tar',  # 修改训练模型的路径    ...)
复制代码


# shellpython 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'  # 指定需要推理的图片路径   ...)
复制代码


执行如下命令推理模型效果。


 
复制代码


# shellpython manage.py run --cfg algorithms/ivgSegmentation/config/sample/config.py --pipeline infer
复制代码


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


10、导出 SDK。


算法开发套件支持将模型导出成一个模型 SDK,方便进行模型部署等下游任务。


# shellpython 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: https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html


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=<please input your own bucket here>。



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 桶。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
VSCode一键接入Notebook体验算法套件快速完成水表读数_人工智能_华为云开发者联盟_InfoQ写作社区