天天看點

使用MindStudio完成PSENet_ResNet50_vd模型開發

作者:淚不完整

目錄

一、MindStudio介紹

二、MindStudio工程建立

1.1 主界面功能介紹

1.2 建立工程

1.3 工程配置

三、模型代碼擷取

3.1 模型介紹

3.2 添加工程代碼

3.3 模型代碼擷取

3.4 模型權重擷取

3.5 推理工具擷取

3.6 同步代碼

3.7 配置遠端環境

四、模型轉換

4.1 擷取推理權重

4.2 轉onnx模型

4.3 轉om模型

五、文本檢測

六、總結

本文主要給大家介紹使用MindStudio進行PSENet_ResNet50_vd模型離線推理開發,完成圖像文本檢測,主要内容包括MindStudio安裝、MindStudio工程建立、模型介紹與擷取、模型轉換、模型推理5個部分。

一、MindStudio介紹

MindStudio是一套基于華為昇騰AI處理器開發的AI全棧開發平台,包括基于晶片的算子開發、以及自定義算子開發,同時還包括網絡層的網絡移植、優化和分析,另外在業務引擎層提供了一套可視化的AI引擎拖拽式程式設計服務,極大的降低了AI引擎的開發門檻。

本文使用MindStudio版本為:5.0.RC3,MindStudio功能架構如圖1所示,內建開發環境包括:工程管理、編譯、運作、模型轉換、應用開發、精度比對、自定義算子、性能分析、仿真器、Debug、CANN-Toolkit功能。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖1

離線推理開發主要使用的是模型轉換功能,将訓練好的第三方網絡模型可以直接通過離線模型工具導入并轉換成離線模型,并可一鍵式自動生成模型接口,友善開發者基于模型接口進行程式設計,同時也提供了離線模型的可視化功能。

MindStudio的安裝過程可以參考官方指導手冊,連結為:

https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/progressiveknowledge/index.html

安裝指南部分詳細介紹了安裝相關步驟,如圖2所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖2

二、MindStudio工程建立

1.1 主界面功能介紹

首次啟動MindStudio會提示是否導入配置,如圖3所示,可以選擇不導入配置,點選OK進入MindStudio主界面。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖3

MindStudio歡迎界面比較簡潔,相關功能如下:

a.工程管理功能,如圖4所示,包括建立工程,打開、導入工程。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖4

b.使用者設定功能,可以設定主題、字型等,如圖5所示,将界面顔色設定為IntelliJ Light。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖5

c.插件管理功能,如圖6所示,可以安裝、解除安裝一些常用的插件。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖6

d.學習功能,如圖7所示,可以進入到MindStudio使用者幫助界面。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖7

1.2 建立工程

使用MindStudio主界面的工程管理功能建立一個新的工程,具體步驟為:

a.點選New Project開始建立一個新的工程,如圖8所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖8

b.New Project界面如圖9所示,選擇Ascend App,點選Change進行CANN配置。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖9

c.CANN配置界面如圖10所示,點選Remote Connection的+号圖示添加遠端伺服器連結,點選SSH Configurations中的+号,輸入遠端伺服器相關資訊,點選OK。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖10

d.如圖11所示,點選Remote CANN location中的檔案夾圖示,選擇遠端服務CANN安裝路徑,點選OK确認,點選Finish結束配置。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖11

e.CANN配置結束後會自動同步遠端CANN資訊,如圖12所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖12

f.同步完成後自動傳回New Project界面,如圖13所示,選擇ACL Project(Python),點選Next繼續。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖13

g.設定工程名稱和位置,如圖14所示,點選Finish繼續。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖14

h.如圖15所示,自動打開建立工程,此時會彈出提示資訊,點選Close關閉,也可以選擇不再提示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖15

通過以上步驟完成工程建立。

1.3 工程配置

工程建立完成後需要進行相關配置,包括SDK、Deploy。具體步驟如下:

a.如圖16所示,點選File->Project Structure進入工程結構配置界面。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖16

b.工程結構界面如圖17所示,選擇SDKs,點選+号,選擇Add Python SDK添加Python解釋器。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖17

c.在添加Python解釋器界面,如圖18所示,選擇SSH Interpreter,然後選擇Deploy後會自動識别遠端Python相關資訊,點選OK完成。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖18

d.傳回工程結構界面,如圖19所示,選擇Project,在SDK清單選擇Remote Python,點選OK完成。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖19

e.進入Deploy設定界面,如圖20所示,點選Tools-Deployment-Configuration。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖20

f.Deployment設定界面如圖21所示,選擇Deployment,點選遠端伺服器,點選Mappings标簽,輸入遠端開發映射路徑,點選OK完成。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖21

通過以上步驟完成工程配置。

1.4 激活遠端終端

a.激活遠端終端,如圖22所示,點選Tools,選擇Start SSH session。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖22

b.如圖23所示,在彈出的對話框中選擇遠端伺服器,啟動Remote Terminal視窗。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖23

三、模型代碼擷取

3.1 模型介紹

PSENet是用于自然場景文本檢測模型,它可以精确地檢測具有任意形狀的文本執行個體。更具體地說,PSENet為每個文本執行個體生成不同規模的核心,并逐漸将最小規模的核心擴充到具有完整形狀的文本執行個體。由于最小尺度核之間存在較大的幾何餘量,該方法能夠有效地分割緊密的文本執行個體,進而更容易使用基于分割的方法來檢測任意形狀的文本執行個體。該模型結構如圖24所示,參數論文:

https://arxiv.org/abs/1903.12473

3.2 添加工程代碼

完成推理功能需要開發的代碼如圖25所示,其中包括:

PSENet_ResNet50_vd.patch:模型更新檔檔案

PSENet_ResNet50_vd_det.py:模型推理腳本

requirements.txt:工程依賴資訊

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖25

a.PSENet_ResNet50_vd.patch:模型更新檔檔案如圖26所示,主要是将使用gpu關閉(第8行),添加系統環境變量(第21行)。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖26

b. PSENet_ResNet50_vd_det.py:模型推理腳本用于推理過程,業務流程及注釋如圖27所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖27

c. requirements.txt:工程依賴資訊,如圖28所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖28

3.3 模型代碼擷取

在本地終端視窗可以通過以下指令擷取模型代碼:

git clone -b release/2.5 https://github.com/PaddlePaddle/PaddleOCR.git

cd PaddleOCR

git reset --hard a40f64a70b8d290b74557a41d869c0f9ce4959d5

git apply ../PSENet_ResNet50_vd.patch

rm .\applications\

cd ..

模型代碼目錄結構如科29所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖29

3.4 模型權重擷取

模型權重連結為:

https://paddleocr.bj.bcebos.com/dygraph_v2.1/en_det/det_r50_vd_pse_v2.0_train.tar

本地下載下傳後,解壓到PSENet_ResNet50_vd\checkpoint目錄下,如圖30所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖30

3.5 推理工具擷取

推理工具使用的是 ais_infer,該工具的擷取、編譯、安裝說明連結為:

https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_infer

下載下傳後将 ais_infer 工具代碼放到本地工程路徑下,推理工具目錄如圖31所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖31

3.6 同步代碼

整個工程代碼結構如圖32所示,選中工程名稱,點選Tools->Deployment->Upload to将代碼同步到遠端伺服器。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖32

在圖33中彈出的對話框中選擇遠端伺服器名稱,開始同步檔案。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖33

3.7 配置遠端環境

在遠端終端視窗中需要通過以下步驟配置遠端伺服器環境

a.進入遠端映射目錄,指令為:

cd /home/my_project/PSENet_ResNet50_vd/

b.安裝依賴,指令為:

pip3 install -r requirements.txt --user

c.進入ais_infer編譯目錄,指令為:

cd ais_infer/backend/

d.進行編譯,指令為:

pip3 wheel ./

e.安裝編譯好的python包,指令為:

pip3 install aclruntime-0.0.1-cp37-cp37m-linux_x86_64.whl

f.傳回到遠端項目目錄,指令為:

cd ../../

通過以上步驟完成代碼擷取以及遠端環境配置。

四、模型轉換

4.1 擷取推理權重

a.首先需要可執行指令将訓練權重轉為推理權重,建立可執行指令如圖34所示,點選Add Configuration。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖34

b.如圖35所示,在彈出的指令配置界面點選+号,選擇Python。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖35

c.Python指令配置界面如圖36所示,需要填入的參數資訊如下:

1.Name:可執行指令的名稱。

2.Scrip path:可執行腳本,如本次需要執行的是:

PSENet_ResNet50_vd\PaddleOCR\tools\export_model.py。

3.Parameters:指令參數,如本次的指令參數為:

-c /home/my_project/PSENet_ResNet50_vd/PaddleOCR/configs/det/det_r50_vd_pse.yml

-o Global.pretrained_model=/home/my_project/PSENet_ResNet50_vd/checkpoint/det_r50_vd_pse_v2.0_train/best_accuracy Global.save_inference_dir=/home/my_project/inference/det_pse

其中-c表示模型配置檔案,-o表示使用者參數,Global.pretrained_model為模型訓練權重路徑,Global.save_inference_dir模型推理權重路徑。

4.Use specified interpreter:選擇Python解釋器,如本次選的是Remote Python3.7.5。

配置以上資訊後點選OK。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖36

d.執行指令,如圖37所示,點選執行按鈕開始執行指令。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖37

e.執行完成後得到推理模型,如圖38所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖38

4.2 轉onnx模型

a.在遠端終端使用paddle2onnx工具指令将推理權重轉為onnx模型,指令為:

paddle2onnx \

--model_dir ../inference/det_pse \

--model_filename inference.pdmodel \

--params_filename inference.pdiparams \

--save_file ../PSENet_ResNet50_vd.onnx \

--opset_version 11 \

--enable_onnx_checker True \

--input_shape_dict="{'x':[1,3,544,960]}"

參數說明:

--model_dir:推理模型所在路徑

--model_filename:模型檔案名稱

--params_filename:參數檔案名稱

--save_file:onnx儲存路徑

--opset_version:onnx算子版本

--enable_onnx_checker:是否開啟onnx校驗

--input_shape_dict:模型輸入資訊清單

成功轉出onnx模型如圖39所示,模型名稱為:PSENet_ResNet50_vd.onnx。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖39

b.使用onnxsim工具簡化onnx模型,主要進行shape推導和常量折疊,onnxsim工具說明連結為:

https://github.com/daquexian/onnx-simplifier

onnxsim指令為:

onnxsim ../PSENet_ResNet50_vd.onnx ../PSENet_ResNet50_vd_sim.onnx

4.3 轉om模型

将onnx轉為om模型需要用到MindStudio的模型轉換功能,具體步驟如下:

a.打開模型轉換功能,如圖40所示,點選Model Converter按鈕。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖40

b.進入Model Converter界面,如圖41所示,點選Model File檔案夾圖示,然後選擇遠端環境中的onnx模型,點選OK。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖41

c.開始自動解析onnx模型資訊,如圖42所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖42

d.模型解析完成後,如圖43,補全模型轉換資訊包括如下:

1.Model Name:輸出om模型的名稱。

2.Target SoC Version:遠端環境裝置晶片型号,本文環境使用的是Ascend310P3。

3.Output Path:om模型儲存路徑。

4.Input Format:輸入資料的格式,本文模型的輸入為NCHW,表示圖檔格式的資料。

5.Input Nodes:模型輸入節點資訊,包括輸入節點Name為x、Shape為1,3,544,960、Type為FP32。

6.Output Nodes:可以選擇模型輸出節點資訊。本文使用預設輸出節點。

補全模型轉換資訊後點選Next繼續。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖43

e.開始校驗模型轉換參數,如圖44所示

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖44

f.校驗完成後如圖45所示,提示是否進行資料預處理,本文不需要資料預處理,關閉後點選Next繼續。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖45

g.再次确認模型轉換指令,如圖46所示,點選Finish完成,并開始進行模型轉換。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖46

h.模型轉換完成後如圖47所示,在本地生成om模型。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖47

五、文本檢測

擷取PSENet_ResNet50_vd_sim.om後,可以進行離線推理,步驟如下:

a.建立離線推理指令,如圖48所示,點選OK完成,指令參數為:

--image_dir="/home/my_project/PSENet_ResNet50_vd/PaddleOCR/doc/imgs_en/img_10.jpg"

--det_model_dir="/home/my_project/inference/det_pse/"

--det_algorithm="PSE"

--det_pse_box_type=quad

其中--image_dir表示圖檔路徑,--det_model_dir表示推理權重路徑,--det_algorithm表示檢測算法, --det_pse_box_type表示檢測框類型。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖48

b.執行推理後,如圖49所示,得到推理結果。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖49

c.将推理結果同步到本地,如圖50所示,點選Tools->Deployment->Download from。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖50

d.打開推理結果圖像,文本檢測效果如圖51所示。

使用MindStudio完成PSENet_ResNet50_vd模型開發

圖51

六、總結

本文在使用MindStudio進行PSENet_ResNet50_vd模型圖像文本檢測過程中,相關參考學習資料如下:

1.MindStudio使用者手冊:

https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/progressiveknowledge/index.html

2.MindStudio開發者社群:

https://bbs.huaweicloud.com/forum/forum-945-1.html

3.MindStudio B站:

https://space.bilibili.com/1611070055

繼續閱讀