目錄
一、介紹 2
1.1 模型介紹 2
1.2 MindStudio介紹 2
1.3 MindStudio配置 3
二、MindStudio項目搭建 5
2.1 項目建立 5
2.2 項目配置 9
三、擷取模型代碼 13
3.1 擷取源碼 13
3.2 安裝依賴 14
四、擷取資料集 16
4.1 資料集下載下傳 16
4.2 資料集預處理 17
五、模型轉換 18
5.1 轉onnx模型 18
5.2 轉om模型 21
六、模型推理 25
6.1 擷取推理工具 25
6.2 進行推理 26
6.3 精度驗證 27
七、問題總結 29
八、參考資料 30
一、介紹
本文将介紹使用MindStudio進行Rosetta_Resnet34_vd模型離線推理開發,并在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE資料集上進行評估,推理精度能夠達到80.64%。
1.1 模型介紹
Rosetta是用于圖像中文本檢測和識别的大規模系統,文本識别是使用稱為 CTC 的全卷積模型完成的(因為它在訓練期間使用序列到序列的 CTC 損失),該模型輸出字元序列。最後一個卷積層在輸入詞的每個圖像位置預測最可能的字元。論文連結為:
https://arxiv.org/abs/1910.05085
Rosetta_Resnet34_vd是基于是PadlePaddle架構的實作,相關資訊可參考官網說明:
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/algorithm_rec_rosetta.md
1.2 MindStudio介紹
MindStudio提供了AI開發所需的一站式開發環境,支援模型開發、算子開發以及應用開發三個主流程中的開發任務,依靠模型可視化、算力測試、IDE本地仿真調試等功能,MindStudio能夠在一個工具上就能高效便捷地完成AI應用開發。MindStudio采用了插件化擴充機制,開發者可以通過開發插件來擴充已有功能。
本文主要介紹使用MindStudio進行Rosetta_Resnet34_vd模型離線推理開發過程。
關于MindStudio的詳細特性,可以通過官網檢視:
https://www.hiascend.com/zh/software/mindstudio
可以通過MindStudio社群,獲得幫助以及進行經驗分享和交流,另外還可以參與MindStudio官方舉辦的各種活動:
https://bbs.huaweicloud.com/forum/forum-945-1.html
本文參考了《使用MindStudio進行Mindx模型st-gcn開發(1)》這篇社群文章來進行MindStudio的環境搭建,連結為:
https://bbs.huaweicloud.com/forum/thread-0220990297832880032-1-1.html
MindStudio的安裝過程可以參考官方指導手冊,連結為:
https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/progressiveknowledge/index.html
1.3 MindStudio配置
初次打開MindStudio會提示是否導入配置,如上圖,可以選擇“Do not import settings”,點選“OK”。
上圖為MindStudio的主界面,主要包括4個标簽:
Projects:用于項目的建立、打開等功能。
Customize:主要是使用者喜好設定等功能。
Plugins:主要用于插件的安裝、解除安裝等。
Learn MindStudio:提供擷取幫助的途徑。
通過Customize标簽将主題設定為“IntelliJ Light”,如上圖所示。
二、MindStudio項目搭建
2.1 項目建立
在主界面Projects标簽中點選“New Project”,如上圖。
選擇“Ascend App”标簽,設定項目名稱和項目路徑,點選CANN Version選項的“Change”。
在CANN配置對話框中點選+号。
在彈出的配置對話框中點選+号,填寫遠端伺服器資訊,點選“Test Connection”測試連接配接是否正常,彈出“Successfully connected”說明連接配接正常,如上圖,依次點選“OK”完成配置。
點選檔案夾圖示,選擇遠端CANN包安裝目錄,點選“OK”。
點選Finish開始同步遠端CANN環境。
同步完成後點選“Next”進入下一步。
選擇“ACL Project(Python)”,點選“Finish”。
此時建立好了一個空的項目,這時會彈出提示對話框,可以點選“Next Tip”檢視提示資訊,點選“Close”關閉提示,如果選擇“Don`t show tips”則不再顯示提示資訊。
2.2 項目配置
如上圖所示,啟動遠端SSH終端。
點選“Tools”、“Deployment”、Configuration,進行開發環境配置,如上圖所示。
選擇“Mappings”,填入“Deployment Path”遠端映射路徑,點選“OK”。
點選項目界面右上角設定圖示,選擇“Project Structure”,如上圖所示。
點選“SDKs”、+号圖示,選擇“Add Python SDK”。
選擇SSH Interprter,配置相應資訊,點選“OK”。
選擇Project,配置SDK,如上圖。
選擇Moduls,選擇Module SDK,如上圖,點選“OK”。
三、擷取模型代碼
3.1 擷取源碼
在本地終端中使用如下指令擷取源碼:
git clone -b release/2.5 https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
git reset --hard a40f64a70b8d290b74557a41d869c0f9ce4959d5
rm .\applications\
cd ..
修改配置檔案,将use_gpu設定成false,如上圖。
同時将batch和num_workers設定為1,如上圖。
修改完成後将模型代碼上傳到遠端伺服器,如上圖,依次點選Toos->Deployment->Upload to...。
如上圖所示,在彈出的對話框中選擇上傳的伺服器。
上傳成功,如上圖所示。
3.2 安裝依賴
建立依賴檔案requirments.txt,如上圖所示,并針依賴檔案上傳的遠端伺服器。
requirments.txt的内容為:
paddlepaddle==2.3.2
paddle2onnx==0.9.8
onnxruntime==1.9.0
pyyaml==6.0
onnx==1.12.0
lanms-nova==1.0.1
opencv-contrib-python==4.4.0.46
imgaug==0.4.0
shapely
scikit-image
pyclipper
lmdb
tqdm
numpy
visualdl
rapidfuzz
cython
lxml
premailer
openpyxl
attrdict
sympy
onnxsim
在遠端終端中通過以上pip指令安裝依賴,如上圖所示。
四、擷取資料集
4.1 資料集下載下傳
該模型在以LMDB格式(LMDBDataSet)存儲的IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE資料集上進行評估,共計12067個評估資料,資料介紹參考DTRB:
https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here
資料集下載下傳連結:
https://www.dropbox.com/sh/i39abvnefllx2si/AAAbAYRvxzRp3cIE5HzqUw3ra?dl=0
下載下傳後将其中的evaluation.zip壓縮包解壓到Rosetta_Resnet34_vd\train_data\data_lmdb_release\validation目錄下,并上傳到遠端伺服器,如上圖所示。
4.2 資料集預處理
建立資料預處理腳本,并上傳到遠端伺服器,如上圖。
通過上圖方式,建立可執行指令。
在彈出的對話框中填入指令名稱(Name)、可執行腳本(Excutable)、和參數(Command Arguments),如上圖,點選“OK”,具體參數為:
--config=PaddleOCR/configs/rec/rec_r34_vd_none_none_ctc.yml
--opt=bin_data=../rosetta_bindata
參數說明:
--config:模型配置檔案
--opt=bin_data:預處理資料
如上圖所示,點選執行按鈕,開始執行資料預處理指令。
如上圖所示,資料預處理指令執行完成。
五、模型轉換
使用paddle2onnx将模型權重檔案轉換為.onnx檔案,再使用MindStudio的Model Converter工具将onnx檔案轉為離線推理模型檔案om檔案。
5.1 轉onnx模型
訓練權重連結為:.
https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/rec_r34_vd_none_none_ctc_v2.0_train.tar
下載下傳後将rec_r34_vd_none_none_ctc_v2.0_train.tar解壓到Rosetta_Resnet34_vd目錄下,點選Tools->Deployment->Upload to...上傳到遠端伺服器,如上圖所示。
建立export指令,如上圖所示,并執行,将訓練權重轉為推理模型,export具體參數如下:
-c ../../PaddleOCR/configs/rec/rec_r34_vd_none_none_ctc.yml
-o Global.pretrained_model=../../checkpoint/rec_r34_vd_none_none_ctc_v2.0_train/best_accuracy
Global.save_inference_dir=../../inference/rec_rosetta
參數說明:
-c:模型配置檔案
-o:使用者可選參數,包括Global.pretrained_model表示訓練模型,Global.save_inference_dir表示推理模型儲存路徑
在遠端終端使用paddle2onnx指令導出onnx模型,如上圖所示,并點選Tools->Deployment->Download from...将onnx模型同步到本地。
在遠端終端使用onnxsim指令優化onnx模型,如上圖所示,同時可點選Tools->Deployment->Download from...将優化後的onnx模型同步到本地。
5.2 轉om模型
MindStudio的Model Converter工具按鈕如上圖所示。
點選Model Converter工具按鈕,首先選擇onnx的Model File,如上圖所示,點選“OK”後會自動進行模型解析。
模型解析如上圖。
模型解析完成後,設定上圖中的模型轉換資訊,點選“Next”繼續。模型轉換資訊說明:
Model Name:儲存模型名稱
Target Soc Version:部署晶片型号,本文使用的是Ascend310P3
Output Path:om模型儲存路徑
Input Format:模型輸入資料格式,本文是對圖檔資料進行推理,是以資料格式為NCHW。
Input Nodes:輸入節點資訊,本文模型有1個輸入,Name為x,Shape為1,3,32,100,Type為FP32
Output Nodes:本文使用預設輸出節點,不需要進行配置
MindStudio會進行指令檢查,如上圖所示。
檢查完成後點選“Next”。
檢查ATC指令後,點選“Finish”開始進行模型轉換。
模型轉換成功如上圖所示,生成Rosetta_Resnet34_vd_sim.om模型。
六、模型推理
6.1 擷取推理工具
Om模型的推理工具采用ais_infer,連結為:
https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_infer。
本地下載下傳後将ais_infer檔案夾放到項目中,并上傳到遠端伺服器,如上圖所示。
通過遠端終端編譯并安裝aclruntime。
6.2 進行推理
建立ais_infer推理指令,如上圖,參數說明:--model表示om模型,--input表示輸入資料路徑,--output表示輸出資料路徑。
執行ais_infer指令,開始進行推理,推理成功如上圖所示,推理結果儲存在output path下,這裡需要記住推理結果的目錄2022_10_24-19_08_41,在下一步精度驗證時會用到。
6.3 精度驗證
建立後處理腳本,如上圖所示。
建立後處理指令,如上圖所示,Command Arguments為:
--config=PaddleOCR/configs/rec/rec_r34_vd_none_none_ctc.yml --opt=results=../2022_10_24-19_08_41
參數說明:--config表示模型配置檔案,--opt=results表示推理結果路徑。
運作後處理指令,進行精度驗證,指令執行完成後如上圖所示,模型的精度acc為0.8064,官網給定的模型精度acc為0.7911,模型精度正常。
到此使用MindStudio完成了Rosetta_Resnet34_vd模型的離線推理開發。
七、問題總結
在使用MindStudio的Model Converter工具轉om模型的時候,如果選擇paddle2onnx生成的onnx模型,則會解析失敗,報錯如上圖所示,經過嘗試使用onnxsim工具優化onnx後可以正常解析。
最後通過檢視使用者指導手冊,該報錯的原因如上圖所示,按照手冊指導說明進行配置後,可以正常解析paddle2onnx生成的onnx模型,如下圖所示。
八、參考資料
使用MindStudio進行Rosetta_Resnet34_vd模型離線推理開發過程中參考很資料和文檔,最後給大家推薦一些比較有用的資料,大家可以先通過官網了解MindStudio的一些功能,然後按照使用者手冊進行安裝、和基本使用方法,最後可以在開發者社群參考一些案例,或者遇到問題進行求助,可以幫助自己快速使用MindStudio進行項目開發。
1.MindStudio官網
https://www.hiascend.com/zh/software/mindstudio
2.MindStudio開發者社群
https://bbs.huaweicloud.com/forum/forum-945-1.html
3.MindStudio使用者手冊
https://www.hiascend.com/document/detail/zh/mindstudio/50RC2/progressiveknowledge/index.html