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