DP读书:《ModelArts人工智能应用开发指南》(一)人工智能技术、应用平台

ModelArts

怎么用ModelArts人工智能应用

  • 训练底座
    • 训练案例
  • 盘古矿山模型
    • Main
  • config.py

训练底座

云安全底座

训练案例

在训练案例

盘古矿山模型

盘古矿山模型

Main

下面是快速助手
https://support.huaweicloud.com/qs-modelarts/modelarts_06_0006.html

准备开发环境
在ModelArts控制台的“ 开发环境 > Notebook”页面中,创建基于pytorch1.8-cuda10.2-cudnn7-ubuntu18.04镜像,类型为GPU,规格选择Pnt1或Vnt1系列的Notebook,具体操作请参见创建Notebook实例章节。
如果需要使用本地IDE(PyCharm或VS Code)远程连接Notebook,需要开启SSH远程开发。本案例以在线的JupyterLab为例介绍整个过程。

Notebook创建完成后,状态为“运行中”。单击“操作”栏的“打开”,进入JupyterLab页面。
打开JupyterLab的Terminal。此处以Terminal为例介绍整个过程。JupyterLab更多操作请参见JupyterLab简介及常用操作。
图1 打开Terminal

Step1 创建算法工程
在JupyterLab的Terminal中,在work目录下执行ma-cli createproject命令创建工程,根据提示输入工程名称,例如:water_meter。然后按回车键选择默认参数(连续按五次回车),并选择跳过资产安装步骤(选择6)。
图2 创建工程

执行以下命令进入工程目录。
cd water_meter

执行以下命令复制项目数据到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”

图3 复制数据集到Notebook中

Step2 使用deeplabv3完成水表区域分割任务
执行如下命令安装ivgSegmentation套件。
python manage.py install algorithm ivgSegmentation==1.0.2

图4 ivgSegmentation套件安装成功

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

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

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

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

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

修改完后按Ctrl+S保存。

修改“deeplabv3_resnet50_standard-sample_512x1024.py”文件。
图7 修改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))

修改完按Ctrl+S保存。

在water_meter工程目录下,执行如下命令安装deeplabv3预训练模型。

python manage.py install model ivgSegmentation:deeplab/deeplabv3_resnet50_cityscapes_512x1024

图8 安装deeplabv3预训练模型

执行如下命令训练分割模型。(推荐使用GPU进行训练)

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

图9 分割模型训练结果

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

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

修改“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 模型指标计算结果

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

修改“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 水表表盘分割结果可视化

执行如下命令导出算法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导出示意图

Step3 水表读数识别
执行如下命令安装mmocr套件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/22724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#学习笔记】属性和字段

文章目录 前言属性和字段的区别字段访问修饰符和关键字定义变量类型的定义变量命名变量的赋值 属性 不同的使用情况 前言 最近在工作的过程中常常会觉得自己在程序设计方面的能力还是有欠缺。例如一直对于变量的声明感到不足,在工作中为了图方便总是直接public定义…

声音突破:so 索

小孩儿看完武侠剧,就决定从二楼往地面上跳,年轻的老妈看到了,就在那里骂,喝斥不准逞能,不许乱来,不许跳。但小孩子不听话,心里全是影视剧的画面,那叫一个侠之能也,于是飞…

llvm 常用命令备忘

执行 IR 上的指令合并优化 pass $ opt –S –instcombine testfile.ll –o output1.ll 执行无效参数优化 pass $ opt –S –deadargelim testfile.ll –o output2.ll C 语言生成 IR 文件 $ clang -emit-llvm -S multiply.c -o multiply.ll C 语言生成 IR 文件 $ clang -cc1 -…

面向长文本处理的键值缓存压缩技术:智能压缩,无损性能,免微调

随着输入长度的增加,大型语言模型(LLMs)中的键值(KV)缓存需要存储更多的上下文信息以维持性能,这导致内存消耗和计算时间急剧上升。KV缓存的增长对内存和时间效率的挑战主要表现在两个方面:一是…

使用JavaScript实现网页通知功能

如何使用js来实现网页通知功能。即使在用户浏览其他页面时,也能向他们推送通知信息。 废话不多说直接上代码 function showAutoNotification() {if ("Notification" in window) {Notification.requestPermission().then(function(permission) {if (permis…

元宇宙数字藏品交易所,未来发展的大趋势

随着科技的飞速进步,元宇宙以其独特的魅力为数字世界绘制了一幅前所未有的宏伟蓝图。在这一宏大的背景下,数字藏品交易所作为连接虚拟与现实的桥梁,正以其卓越的优势,引领着数字藏品市场迈向新的高度。 首先,元宇宙为…

Vue 的服务端渲染(SSR)有哪些钩子可以用

在 Vue 的服务端渲染(SSR)过程中,并不会执行完整的生命周期钩子,只有一部分钩子会在服务器端执行。以下是 Vue SSR 中支持的生命周期钩子: beforeCreate:在实例初始化之后,数据观测 (data obser…

【ARM Cache 与 MMU 系列文章 7.8 – ARMv8/v9 MMU Table 表分配原理及其代码实现 2】

文章目录 MMU Table 表分配原理及其代码实现MMU Table 分配代码实现MMU Table 表分配原理及其代码实现 在做映射的时候所映射的地址范围最大只能是某一级 level table 中 entry 所能支持的最大范围,如果超过这个范围需要在对应 level table 中新增一个entry,这里还是以映射虚…

【相关概念】经济金融中的Momentum

张张张三丰de思考与总结: 最近做的期货价格泡沫中,一直在说,momentum,momentum,momentum,那么究竟什么是momentum呢? 目前,在有关期货价格泡沫的研究文献中,一般都是研究…

本轮牛市新趋势,跟随The First捕捉牛市Alpha

与以往牛市“百花齐放”的繁荣景象相比,本轮牛市颇具独特走势,呈现出了资金集中度高、财富聚集效应小的特点,绝大部分加密资产甚至跑不赢BTC的涨幅幅度。而以往大放色彩的公链币价值币的走势,甚至比不过牛尾才爆发的MEME币。这使得…

Java项目之消息队列(手写java模拟实现mq)【三、MQ的核心类-消息类的存储(用文件存储消息)】✔ ★

Java项目之MQ 七. 消息存储设计设计思路为什么要用文件存储文件存储结构queue_data.txt ⽂件格式:queue_stat.txt ⽂件格式: 创建 MessageFileManager 类定义一个内部类, 来表示该队列的统计信息 Stat实现统计⽂件Stat读写(文本文件的读写)InputStream—…

python爬虫入门教程(一)

上一篇文章讲了爬虫的工作原理,这篇文章以后就要重点开始讲编程序了。 简单爬虫的的两个步骤: 使用HTTPRequest工具模拟HTTP请求,接收到返回的文本。用于请求的包有: requests、urllib等。 对接收的文本进行筛选,获取想要的内容。用户筛选文…

JavaScript-内存分配,关键字const

内存空间 内存分为栈和堆 栈:由操作系统自动释放存放的变量值和函数值等。简单数据类型存放在栈中 栈会由低到高先入后出 堆:存储引用类型 (数组,对象) 对象会先将数据存放在堆里面,堆的地址放在栈里面 关键…

【ArcGISProSDK】获取要素中某字段最大值

public static async Task<double> GetMaxValueFromField(string vectorFilePath, string fieldName){double maxValue = 0;//矢量所在文件夹var filePath = System.IO.Path.GetDirectoryName(vectorFilePath);//矢量名称var fileName = System.IO.Path.GetFileNameWitho…

VMD-PSO-LSTM单维时序预测模型(单输入单输出)-附代码

VMD-PSO-LSTM单维时序预测模型&#xff08;单输入单输出&#xff09; 1&#xff09;首先对原始单维数据进行VMD分解&#xff0c;分解为K个模态分量和1个残差分量 2&#xff09;将各个模态分量输入模型&#xff0c;建立模型进行预测 3&#xff09;将各个预测结果相加得到最终…

clickhouse(十五、存储优化实践)

文章目录 背景问题定位优化方式排序键设计写入顺序压缩算法 DoubleDeltaLowCardinality避免使用Nullable 总结 背景 clickhouse集群容量告警&#xff0c;项目中某些表占据大量的存储空间&#xff0c;借此机会对ck的存储优化进行实践学习&#xff0c;并通过多种方式测试验证优化…

设计模式相关更新中

详见gitee: 更新中​ ​​​​​​设计模式相关: 设计模式相关介绍 (gitee.com) 一.面向对象的设计原则 二.单例模式

React(五)useEffect、useRef、useImperativeHandle、useLayoutEffect

(一)useEffect useEffect – React 中文文档 useEffect hook用于模拟以前的class组件的生命周期&#xff0c;但比原本的生命周期有着更强大的功能 1.类组件的生命周期 在类组件编程时&#xff0c;网络请求&#xff0c;订阅等操作都是在生命周期中完成 import React, { Com…

算法题day37日(补5.23日卡:贪心算法day4)

一、刷题&#xff1a; 1.leetcode题目 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09;&#xff08;easy&#xff09;&#xff1a; 我觉得我写的代码有点蠢 class Solution:def lemonadeChange(self, bills: List[int]) -> bool:dict_ {5:0,10:0}if bills[0] !…

Python降维基础知识:深入探索与实战应用

Python降维基础知识&#xff1a;深入探索与实战应用 在数据分析和机器学习的广阔领域中&#xff0c;降维技术一直扮演着重要的角色。Python&#xff0c;作为数据处理和机器学习的首选语言&#xff0c;为我们提供了丰富的降维工具和算法。本文将从四个方面、五个方面、六个方面…