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.pswp.cn/web/22724.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/22724.shtml
英文地址,請注明出處:http://en.pswp.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;為我們提供了豐富的降維工具和算法。本文將從四個方面、五個方面、六個方面…