【EdgeBoard體驗】開箱與上手
簡介
市面上基於嵌入式平臺的神經網路加速平臺有很多,今天給大家帶來是百度大腦出品的EdgeBoard。按照官網文件的介紹,EdgeBoard是基於Xilinx Zynq Ultrascale+ MPSoC系列晶片打造的一款深度學習加速套件,也就是比較常見的利用FPGA進行加速的方案。
開箱
收到的EdgeBoard,是一個淡黃的紙盒子,將其開啟,裡面共有四樣物品,分別為:
- EdgeBoard本體一塊,相比官網上的圖片,多出了散熱器、風扇以及起到保護作用的亞克力板
- 已經刷好韌體的SD卡一張
- 12V2A介面卡一個,接頭為2P間距為3.81的接線端子
- MicroUSB線一條
EdgeBoard板子做工不錯,按照官網資料,他分為主機板和電源板兩部分,加上散熱器後組合後的長寬高為120×80×50。板子具體的硬體資源就不過多介紹了,官方目前也沒公佈具體硬體框圖。
啟動系統
將配套SD卡插入電腦,可以發現他已經燒錄好了韌體,應該是可以直接啟動的(官方資料內沒有找到燒錄SD卡的方式,如果這張卡丟了的話……)
1、將SD卡插入SD卡槽,使用MicroUSB線連線電腦,裝置管理器裡會出現USB to UART的裝置。
2、使用任意串列埠終端開啟串列埠(以Xshell為例),COM口號設定為裝置管理所看到的串列埠號,其餘設定如下
- Band Rate: 115200
- Data Bits:8
- Stop Bits:1
- Parity: None
- Flow Control: None
3、將接線端子連線到電源插座,接通電源介面卡,可以看到電源燈亮起,風扇傳來了怒吼,這個風扇實測轉速為6000轉,長時間除錯時候,噪音略微明顯。上電後,可以看到串列埠終端內顯示出了boot資料。
Xilinx Zynq MP First Stage Boot Loader Release 2017.4 Apr 23 2019 - 13:19:54 NOTICE: ATF running on XCZU9EG/silicon v4/RTL5.1 at 0xfffea000, with PMU firmware NOTICE: BL31: Secure code at 0x0 NOTICE: BL31: Non secure code at 0x8000000 NOTICE: BL31: v1.3(release):47af34b NOTICE: BL31: Built : 04:10:38, Apr 23 2019 U-Boot 2017.01 (Apr 23 2019 - 12:20:25 +0800) Xilinx ZynqMP ZCU102 revB for OpenAi I2C: ready DRAM: 2 GiB EL Level: EL2 Chip ID: xczu9eg MMC: sdhci@ff160000: 0 (eMMC), sdhci@ff170000: 1 (SD) reading uboot.env
可以看到Xilinx特有的FSBL資料,從中可以看出這個板子的基本配置應該是ZCU102的精簡版,配備了2G的DRAM。等待幾秒鐘後,kernel啟動完畢,串列埠內出現登入資訊。
PetaLinux 2017.4 edge_board /dev/ttyPS0 edge_board login:
輸入使用者名稱root,密碼root,即可進入系統,出現了終端標識,代表啟動成功。
root@edge_board:~#
總結:系統啟動還是比較容易的,不過在啟動過程中遇到一個問題,如果插著網線的話,U-Boot會選擇從網路啟動,會導致系統啟動偏慢。
配置SSH與SMB開發環境
EdgeBorad已經配置好了SSH終端以及SMB檔案共享伺服器,也可參照官方使用步驟:https://ai.baidu.com/docs#/EdgeBoard%20quick%20start/23cb95ae
1、在串列埠終端查看板子IP
root@edge_board:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:0a:35:00:00:09 inet6 addr: fe80::20a:35ff:fe00:9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:39 errors:0 dropped:0 overruns:0 frame:0 TX packets:122 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4964 (4.8 KiB) TX bytes:25813 (25.2 KiB) Interrupt:30 eth0:avahi Link encap:Ethernet HWaddr 00:0a:35:00:00:09 inet addr:169.254.1.162 Bcast:169.254.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:30 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:140 (140.0 B) TX bytes:140 (140.0 B)
2、使用串列埠讀出來的IP,本例中為169.254.1.162即可連線上SSH與SMB。本地輸入:\169.254.1.162 即可訪問edgeboard檔案。Win7系統需要注意一些配置,具體請檢視Edgeboard使用說明。
總結:環境都配置好了,上手還是很簡單,在使用者目錄下發現存在.xfce4的配置檔案,莫非帶了圖形介面?手頭沒有DP線,後面會試試。
EasyDL+EdgeBoard搭建帶性別檢測的人臉識別模型
Edge的賣點之一,就是支援匯入EasyDL生成的模型,EasyDL平臺是一個使用幾十、幾百張圖片就能訓練出一個效果還不錯的模型訓練平臺,官方宣稱,對於不瞭解深度學習的使用者,可以僅僅依靠視覺化操作即可完成深度學習訓練。
1、登入EasyDL官網建立物體檢測模型 http://ai.baidu.com/easydl/。
2、建立訓練的資料集,本次測試在百度新聞裡抓取了20張包含人臉的圖片。
3、資料集標註,EasyDL支援線上標註,只需選中圖片用滑鼠在圖片上拉出一個框即可。
4、資料集標註完成後即可訓練模型,由於要測試的模型是基於SSD的目標檢測,所以此次選中精度較低模型。(高精度是基於RetinaNet的模型),點選開始訓練,大概需要30分鐘左右,即可訓練完成。
5、線上校驗模型,訓練完成後點選校驗模型,可以檢視測試模型訓練效果。此次發現誤識別一個女生為男生,猜測大概是訓練集太小,不過人臉識別功能到是沒問題。
6、模型匯出:由於EasyDL還沒正式釋出模型匯出功能,因此此次是通過聯絡後臺人員匯出的模型。
7、將EasyDL匯出的模型,通過SMB傳輸到EdgeBoard內替換原有的params、model.encrypted:\169.254.1.162\roothome\workspace\sample\sample_easydl\model
8、重新編譯模型,步驟如下:
insmod /home/root/workspace/driver/fpgadrv.ko cd /home/root/workspace/sample/sample_easydl // 如果沒有build目錄,建立一個 mkdir build cd build rm -rf * cmake .. make
9、 程式設計成功之後,執行預測程式。
a、在網路上隨意下載一張人物圖,修改名字為1.jpg 並替換 \\169.254.1.162\roothome\workspace\sample\sample_easydl\image 內的原有圖片。 b.執行./paddle_edgeboard
10、檢視圖片輸出結果。 開啟\169.254.1.162\roothome\workspace\sample\sample_easydl\build\result.jpg 和命令列預測出的四個目標一致,這裡由於沒有調整閾值所以檢測出來四個框。
總結:本次是建立了一個簡單的EasyDL模型並且資料集準備的也小,所以精度不是很高,從可用性和快速部署方面Edgeboard和EasyDL的結合可以幫助我們快速開發相關應用產品。
執行usb攝像頭輸入預測示例
1、連線裝置
2、依次執行以下命令
// 檢視裝置檔案是否產生,正常是/dev/video2 ls /dev/video* insmod /home/root/workspace/driver/fpgadrv.ko cd /home/root/workspace/sample/sample_usb mkdir build cd build rm -rf * cmake .. make
3、執行預測命令
./paddle_edgeboard
輸出結果如下:可以看到實時的檢測結果
總結:本次是通過命令列方式進行的USB攝像頭測試,並輸出每一幀的目標檢測結果,實時效能達到10FPS,效果還不錯。
執行海思ipc攝像頭輸入預測示例
1、連線裝置
2、依次執行以下命令
insmod /home/root/workspace/driver/fpgadrv.ko sudo chmod +x /home/root/workspace/driver/media-ctl /home/root/workspace/driver/media-ctl -v -f '"a0010000.v_tpg":0[fmt:SRGGB8/1920x1080 field:none]' cd /home/root/workspace/sample/sample_bt1120 mkdir build cd build rm -rf * cmake .. make
3、執行預測命令
./paddle_edgeboard
輸出結果如下:可以看到實時的檢測結果,例程裡無視覺化圖片生成,下一步先測試一下攝像頭採集地效果。
4、檢視攝像頭採集圖片視覺化圖
ls /dev/video* /dev/video0 /dev/video1 insmod /home/root/workspace/driver/fpgadrv.ko sudo chmod +x /home/root/workspace/driver/media-ctl /home/root/workspace/driver/media-ctl -v -f '"a0010000.v_tpg":0[fmt:SRGGB8/1920x1080 field:none]' cd /home/root/workspace/tools/bt1120/ mkdir build cd build cmake .. make ./bt1120
總結:海思ipc攝像頭使用方法與USB基本一致,還是有個共同的缺點,沒有辦法進行實時的視覺化效果,無法直觀觀察到模型執行的效果。
感受
經過一週的試用,對EdgeBoard也有了初步的瞭解,總體來說:
優點
1、自帶環境豐富,無需配置交叉編譯環境即可使用。
2、預設的smb+ssh環境基本滿足了開發需求,實現了到手即用。
3、與EasyDL結合後,進行目標分類or目標檢測的嵌入式整合基本做到了傻瓜化,模型訓練容易上手。
4、從上手來看,EdgeBoard作為一個異構的ARM+FPGA加速平臺,基本上做到了無需瞭解嵌入式與FPGA的程度即可使用。
缺點
1、板子試用攝像頭,缺乏視覺化環境,如果可以實現一個小的流媒體伺服器或使用DP介面輸出,對模型效果的評估可能可以更加直觀。
2、風扇噪音較大,在室內長時間開發還是略微吵鬧,可能因為沒有開發調速策略導致。
3、部分win7系統修改系統策略後,仍然無法正常使用SMB連線目標板,希望後續版本可以移植SFTP後續會嘗試一下一些已有模型,深度挖掘一下這塊板子的功能。
作者:Lit