全網最細-華爲Atlas開發板聯網升級、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模式),如下圖所示:
選擇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能訪問到的路徑下
vgg16
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分支下的代碼。
sample

步驟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。
  1. 模型轉換
    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文件夾下,自行獲取。

  2. 模型放置
    將轉換好的模型放置到樣例工程下的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目錄下
在這裏插入圖片描述

在開發板上運行模型和查看結果

  1. 登錄開發板
    使用ssh命令登錄開發板
    在這裏插入圖片描述
    注:這裏需要填入的ip爲開發板ip,運行前確保Atlas 200DK開發板已經正確連接。我們當前是使用USB連接,所以IP地址爲192.168.1.2.開發板連接可以在Atlas200DK的文檔中查看,這裏不再贅述。
  2. 運行程序
    進入通用分類網絡應用的可執行文件所在路徑
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章