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

vscode,一键,接入,notebook,体验,算法,套件,快速,完成,水表,读数 · 浏览次数 : 147

小编点评

**算法开发套件流程** **1.配置OBS桶** 在 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 **3.导出部署模型** python manage.py deploy --cfg algorithms/mmocr/config/textrecog/config.py --launch_remote **4.在线部署** python manage.py deploy --cfg algorithms/mmocr/config/textrecog/config.py --launch_remote **5.清理资源和数据** 在 “Notebook” 页面,单击对应实例操作列的“停止”。删除数据:点击此处,前往OBS控制台,删除上传的数据,然后删除文件夹及OBS桶。 **6.停止Notebook** 在 “Notebook” 页面,单击对应实例操作列的“停止”。删除数据:点击此处,前往OBS控制台,删除上传的数据,然后删除文件夹及OBS桶。

正文

摘要:本示例围绕真实AI需求场景,介绍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_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', # 修改为真实路径本地分割数据集路径
 ...
)

修改完后按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)
 )

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

 

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

与VSCode一键接入Notebook体验算法套件快速完成水表读数相似的内容:

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

摘要:本示例围绕真实AI需求场景,介绍VSCode一键接入Notebook体验算法套件快速完成水表读数的使用流程。 本文分享自华为云社区《VSCode一键接入Notebook体验算法套件快速完成水表读数》,作者:HWCloudAI。 本示例围绕真实AI需求场景,介绍VSCode一键接入Noteboo

这几个必备的vscode插件,你安装了几个

作为一名前端开发者,vscode想必大家应该都接触过,就像大多数 IDE 一样,VSCode 也有一个扩展和主题市场,包含了数以千计质量不同的插件。 作为一名熟练掌握各种前端开发工具安装和卸载的大师兄来说,为大家安利好玩有用的工具插件是我义不容辞的责任,所以我精挑细选了九款必备的vscode插件 C

vscode编写markdown

1. 需求分析 2. 环境搭建 1. 需求分析 最近在网上折腾了好久Markdown的写作环境,作为一个普通用户,总结一下个人对于Markdown写作环境的几点需求。由于本人刚接触Markdown不久,因此,需求也比较简单,想看具体搭建步骤的可以直接跳到第二章环境搭建: 本地存储。这一点主要是出于隐

.NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移

前言 接上期文章《.NET6项目连接数据库方式方法》,有人问了我几个问题,现在就这几个问题,拓展延申一下创建实体类、数据库。把ORM框架和数据迁移都写进去。 安装ORM框架,这里我们采用EFCore 安装EFCore 我的项目是在Linux上创建的,使用的是vscode开发工具远程开发。为了方便大家

使用vscode插件查看文件的16进制

有时候想看看文件的16进制,又不想编写代码来处理,那么这时候可以使用vscode和插件Hex Editor一键查看文件的16进制 安装Hex Editor 插件 右键文件选择打开方式,然后选择Hex Editor 然后就可以查看文件的16进制了

windows离线部署VSCode在Centos7上的远程开发环境

前言 公司一直使用的是ssh+vim的远程开发方式,习惯了vim之后已经非常方便了。但是还是想尝试一下VSCode的开发方式。就我而言,原因如下 漂亮的语法高亮,并且有补全 基于语法解析的引用查找(尽管在我们项目的场景下还是一坨翔) Ctrl+Shift+F的快速搜索 可视化调试,可以直接在代码中下

性能的极致,Rust的加持,Zed-Dev编辑器快速搭建Python3.10开发环境

快就一个字,甚至比以快著称于世的Sublime 4编辑器都快,这就是Zed.dev编辑器。其底层由 Rust 编写,比基于Electron技术微软开源的编辑器VSCode快一倍有余,性能上无出其右,同时支持多人编辑代码。 安装和配置Zed.dev Zed.dev编辑器还在灰度测试阶段,暂时只释出了M

如何对一个新的 VSCode 配置 LaTeX

texlive 的安装件参考资料 [1]。 往 VSCode 里面装 LaTeX Workshop 插件,也可以直接搜 James-Yu.latex-workshop。 Ctrl+Shift+P 打开 setting.json,应该是 User Settings 即可。 把以下内容粘进去:(注意和参

玩一玩 Ubuntu 下的 VSCode 编程

一:背景 1. 讲故事 今天是五一的最后一天,想着长期都在 Windows 平台上做开发,准备今天换到 Ubuntu 系统上体验下,主要是想学习下 AT&T 风格的汇编,这里 Visual Studio 肯定是装不了了,还得上 VSCode,刚好前几天买了一个小工控机,这里简单记录下 零到一 的过程

在鼠标右键菜单中新增新建Markdown文件选项(VSCode)

引言 正常情况下,我们新建md文件有两种方式:一是通过Markdown编辑器新建,二是新建txt文件再修改后缀。 但是在Windows系统中,我们可以通过修改注册表来新增右键菜单选项。这里我们可以通过修改注册表来新增新建Markdown文件选项,这样可以减少新建文件的繁琐操作。 下面就来演示在Win