怎么用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套件。