華爲Atlas 200DK開發板聯網升級、Mind Studio配置和運行vgg16貓狗大戰樣例
這是筆者第一次使用開發板來運行深度學習模型,踩坑無數,耗費了數十個小時,更苦於沒有公開詳細教程,特此將詳細步驟和一些個人觀點記錄於此。如果對您起到了一些幫助,請不吝賜贊 😃
開發環境配置
本文將講解Win+虛擬機的配置方法,Linux系統可參考虛擬機的內部操作。
開發板爲Atlas 200DK,編譯器爲Mind Studio。
- 踩坑記錄:同組同學總是失敗在VMware開機畫面處,重裝若干次後改用雙系統
- 覆盤後覺得,可能是Hyper-V和VMware不兼容導致,可下載微軟的虛擬機轉換器進行切換
配置虛擬機
本文使用的鏡像內已安裝好Ubuntu系統,以及Mind Studio工具,並且已配置好交叉編譯環境,相關的環境變量。操作步驟如下:
步驟1:將獲取到的虛擬機鏡像包放入PC機硬盤的某個目錄下
步驟2:打開虛擬機軟件(VMWare)
步驟3:在打開的對話框中單擊虛擬機文件(*.vmx),然後點擊“打開”
步驟4:登錄虛擬機
步驟5:修改虛擬機網絡設置:虛擬機->設置網絡適配器->自定義:特定虛擬網絡->VMnet8(NAT模式),如下圖所示:
開發板聯網和升級
如果開發板的DDK版本相對VMWare較舊,需要對開發板進行升級。操作步驟如下:
步驟1:開發板上電,通過USB線連接到PC機,啓動PC機上的虛擬機(Ubuntu服務器)
在VMware中選擇可移動設備,將開發板接入虛擬機中(此處可能要若干次)
開發板通過USB連接時,其默認IP是192.168.1.2,且連接後會在Ubuntu服務器上虛擬出一個網卡,需要將此虛擬網卡的地址配成192.168.1.xxx網段,這樣才能連上開發板。
打開終端,切換到root用戶(密碼爲root),修改interfaces文件
修改interfaces
.
su root
vim /etc/network/interfaces
虛擬網卡名可通過ifconfig命令查看(如圖右側部分所示)。如虛擬網卡名不一致,需修改interfaces文件中虛擬網卡名。
步驟2:
準備升級包(mini_developerkit-1.31.T15.B150.rar)
先將開發板升級包(mini_developerkit-1.31.T15.B150.rar)拷貝進Ubuntu服務器,然後打開終端,進入存放升級包的路徑,通過如下scp命令把升級包拷貝至開發板。(需要開發板密碼)
scp mini_developerkit-1.31.T15.B150 HwHiAiUser@192.168.1.2:~
再登錄開發板,把升級包拷貝至/opt/mini路徑下(因HwHiAiUser沒有/opt/mini路徑寫入權限,而且無法直接通過root用戶進行scp拷貝,所以要先以普通用戶拷貝至開發板,再在開發板上以root用戶拷貝至/opt/mini路徑)
ssh HwHiAiUser@192.168.1.2
su root
mv mini_developerkit-1.31.T15.B150.rar /opt/mini
步驟3:執行以下命令進行開發板升級
cd /opt/mini
./minirc_install_phase1.sh
步驟4:重啓開發板,完成升級
步驟5: 升級檢查
1)在虛擬機中以HwHiAiUser用戶ssh登錄到Atlas 200 DK開發者板
ssh HwHiAiUser@192.168.1.2
2)執行如下命令查看開發者板的系統運行軟件的版本號
cat /etc/sys_version.conf
3)執行如下命令查詢firmware的系統版本號及有效組件版本號
su – root
cd /var/davinci/firmware/
./upgrade-tool --device_index -1 --system_version
./upgrade-tool --device_index -1 --component -1 –version
4)查看升級日誌,無錯誤信息代表升級成功
cd /var/davinci/log
cat upgrade.log
cat firmware_upgrade_progress.log
部署編譯器
步驟1:啓動Mind Studio
以Mind Studio的安裝用戶進入MindStudio-ubuntu/bin目錄,執行如下命令:
cd MindStudio-ubuntu/bin
./MindStudio.sh
步驟2:在Mind Studio中添加開發板設備
1) 檢查Mind Studio中是否已經添加過Atlas200DK開發板
點擊MindStudio上方工具欄Tools --> Device Management,若發現已經添加過開發板,需檢查IP是否正確(USB連接時默認IP爲192.168.1.2,網線連接時默認IP爲192.168.0.2),如果IP不正確,請按如下圖所示,修改爲實際所用的開發板地址:
2) 若Mind Studio未添加過開發板,單擊設備管理界面右側的+增加設備,彈出下圖界面:
3) 單擊“OK”,後臺腳本會根據Host IP連接設備,並獲取設備的Target以及版本信息。之後設備信息會增加到設備管理界面“Available Device”區域。
4) 如果第一次連接某個版本開發板,請確保已經裝過對應版本DDK,並同步lib:
單擊管理界面右側的同步按鈕![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200218160719613.png啓動同步lib,彈出“Pre Synchronization Check”界面更新設備信息,該界面根據用戶網絡狀況,出現時間長短不定,待更新完畢進入下圖:
Library file synchronization succeeded. Please click "Finish".
至此,開發環境已經部署完畢。
運行貓狗大戰樣例
本文以運行貓狗圖片識別爲樣例,其他模型運行,如人臉檢測和物體識別,也可以參考。
下載模型
本文不側重於如何訓練一個模型, 請參考Model Arts的社區樣例。
https://www.huaweicloud.com/product/modelarts.html
步驟1
下載已經運行好的.pb模型,放置到Mind studio能訪問到的路徑下
Mind Studio如果安裝在虛擬機中,則需要將此文件拷貝到虛擬機中,如$HOME/download文件夾下。筆者採用的是將文件拷貝至U盤,便於在宿主機和虛擬機中傳遞文件。
步驟2:下載sample
貓狗大戰模型是一個分類模型,可以直接使用社區項目中的分類sample替換模型運行。
sample代碼路徑爲:https://gitee.com/Atlas200DK/sample-classification/tree/1.3x.0.0/
注意我們當前使用的是C31的Mind Studio,所以需要下載1.3x.0.0分支下的代碼。
步驟3:用Mind Studio打開工程
使用C31的Mind Studio打開下載下來的sample代碼。
步驟4:轉換模型
將ModelArts上訓練得到的pb模型轉換爲Mind Studio支持的om模型
1、使用netron查看模型的輸入層名和輸入參數NHWC
Netron打開網址:https://lutzroeder.github.io/netron/
打開後選擇Open model,選擇ModelArts上轉好下載下來的模型
能看到,該模型的輸入層層名爲input_1,輸入參數爲?,?,?,3,代表輸入參數的C值爲3。
- N參數代表一次處理多少張圖片,由於我們是需要單張處理的,所以N參數爲1。
- HW兩個參數是指模型的輸入圖片要求寬高,可以在訓練代碼中查看到爲224*224。
-
模型轉換
Mindstudio工具中選擇Tool->Model Convert ,進入模型轉換界面
選擇我們使用的pb模型,點擊Next開始進行節點配置,填入NHWC信息,如下圖所示
點擊Next,量化配置不需要修改,再點擊Next進入AIPP配置。這裏需要修改Input Image Size修改爲256224,因爲模型需要做寬128對齊,高16對齊,模型原本要求輸入是224224,寬不可以整除128,所以對齊後得到的值爲256,高可以整除16,做完對齊之後取值還是224.Model Image Format需要修改爲RGB888_U8。如下圖所示:
點擊Finish,開始轉換模型。轉換成功後會在Output中打印成功信息和模型存儲位置。模型轉換成功後都在$HOME/modelzoo文件夾下,自行獲取。 -
模型放置
將轉換好的模型放置到樣例工程下的script目錄下,不這樣做Mind Studio可能無法讀入
運行項目
步驟1:需要在Mind Studio打開的工程中修改Param_configure.conf文件。其中remote_host爲開發板地址,USB連接一般爲192.168.1.2。model_name是使用的模型名稱,需要填寫我們轉換好的模型名稱,如vgg16trained.om
步驟2:同步RC庫,設置環境變量
選擇tools下的Device Management。按照下圖點擊第四個按鈕確認開發板的連接情況,點擊第五個按鈕進行同步RC庫。
同時需要設置好環境變量。按照如下方式進行設置:
vim ~/.bashrc
執行如下命令在最後一行添加DDK_HOME及LD_LIBRARY_PATH的環境變量。
export tools_version=1.31.T15.B150
export DDK_HOME=$HOME/.mindstudio/huawei/ddk/1.31.T15.B150/ddk
export NPU_DEVICE_LIB=$DDK_HOME/../RC/host-aarch64_Ubuntu16.04.3/lib
export LD_LIBRARY_PATH=$DDK_HOME/lib/x86_64-linux-gcc5.4
使用Esc :wq!保存退出
執行如下命令使環境變量生效。
source ~/.bashrc
步驟3. 進行代碼編譯
選擇Build→Edit Build Configuration,確認自己的配置後選擇Build
步驟4. 進行代碼部署
選擇Run→Run->sample-classification,進行代碼部署,輸出如下圖所示即爲部署成功。報錯信息請忽略,因爲Mind Studio無法爲可執行程序傳參,上述步驟是將可執行程序與依賴的庫文件部署到開發者板,此步驟需要ssh登錄到開發者板至相應的目錄文件下手動執行。
上傳圖片到開發板
測試集圖片可以在百度上直接搜索貓狗圖片,最好將下載下來的圖片重名爲如圖所示的格式。圖片的寬和高的範圍爲[16, 4096]。
這裏筆者給出的是上傳的貓狗圖片。其中前三張是貓,命名爲 cat1.jpg, cat2.jpg, cat3.jpg,後兩張是狗,命名爲dog1.jpg,dog2.jpg。
命令行進入圖片所在目錄下,使用scp -r 指令將所有圖片拷貝到開發板的$HOME目錄下
在開發板上運行模型和查看結果
- 登錄開發板
使用ssh命令登錄開發板
注:這裏需要填入的ip爲開發板ip,運行前確保Atlas 200DK開發板已經正確連接。我們當前是使用USB連接,所以IP地址爲192.168.1.2.開發板連接可以在Atlas200DK的文檔中查看,這裏不再贅述。 - 運行程序
進入通用分類網絡應用的可執行文件所在路徑
cd ~/HIAI_PROJECTS/workspace_mind_studio/classification/out
執行應用程序,這裏圖片需要選擇到我們上傳到開發板上的圖片對應的路徑
python3 run_classification.py -w 224 -h 224 -i ~/catanddog/cat1.jpg -n 2
可以看到圖片有confidence輸出,這裏1代表的是貓類,0代表的是狗類,,從給出的數據可以看出,程序均以 1.0000 的置信度判斷出了正確的結果。
參考鏈接
華爲Ascend社區:
https://gitee.com/Atlas200DK/projects