測評分享丨RK3399開發板+RK1808人工智慧計算棒(主動模式)

ningmengzier發表於2020-11-30

高效賦能AIoT生態鏈:

本教程以飛凌嵌入式RK3399平臺為例,講述主動模式的人工智慧計算棒部署流程。

01

 硬 件 平 臺 


平臺:OK3399-C開發板

系統:Desktop

模組:TB-RK1808S0

環境準備: 飛凌OK3399-C開發板,RK1808人工智慧計算棒(韌體版本為V1.3.4),usb攝像頭,攝像頭和計算棒都插入OK3399-C開發板。

使用lsusb命令檢視,如下(紅框部分2207:0018即為RK1808人工智慧計算棒):

輸入命令如下:


02

   概 述   



AI計算區分為四個不同的象限,分別是雲端訓練、雲端推理,邊緣訓練以及邊緣推 理。 其中終端推理,幾乎都集中在Arm架構生態上。AI神經網路計算目前可以透過CPU、GPU、DSP、NPU、FAGA等完成,但不同的硬體特性會導致效率和功耗的不同。其中NPU——嵌入式神經網路處理器採用“資料驅動平行計算”的架構,最擅長的就是影片、影像類的海量多媒體資料的處理,並且相比GPU等 具有更低的功耗。我司推出OK3399-CDesktop+RK1808(含3Tops算力NPU)的組合,在滿足AI邊緣計算的情況下,使得功耗大幅降低。

RK1808計算棒擁有主動模式和被動模式兩種模式。

主動模式下,RK1808人工智慧計算棒是一個專用AI應用模組。 RK1808人工智慧計算棒作為主動裝置,RK1808人工智慧計算棒內部預設已安裝rknn-toolkit和rknn-api,上位機(也稱宿主機)無需安裝rknn-toolkit和rknn-api,模型及演算法固化在RK1808人工智慧計算棒中,OK3399-C透過USB口向計算棒輸入資料(例如圖片和影片流),RK1808人工智慧計算棒自動完成資料的前處理、推理、後處理,然後把處理結果透過USB口輸出給OK3399-C。

為了方便使用者透過USB口傳輸資料,RK1808人工智慧計算棒會把USB口虛擬成網路卡等標準裝置,使用者只需透過標準裝置介面的操作(例如網路的socket程式設計)即可完成對RK1808人工智慧計算棒資料的輸入和輸出。




細節如下:



1. RK1808計算棒插入上位機後,會被虛擬成網路卡裝置;

2. 上位機OK3399-C進行虛擬網路卡配置,配置IP為192.168.180.1,保證上位機和1808中間的網路連線正常;

3. 計算棒預設IP為192.168.180.8,賬號密碼皆為toybrick,使用者可以SSH登入計算棒,複製模型和server服務程式到計算棒;

4. 計算棒端執行server服務程式,用來接收上位機的連線請求,並呼叫RKNN進行處理,再返回結果;

5. 上位機執行client程式,連線server成功之後,傳送推理請求,從1808端獲取返回結果。




03

計算棒網路配置與網路共享配置



1、計算棒網路配置

上位機使用OK3399-C Forlinx Desktop系統,點選右下角網路按鈕選擇彈出視窗中的“EditConnections...”選項:

選擇計算棒usb網路卡生成的有線網路節點:

配置該節點為手動模式,設定IP:192.168.180.1,子網掩碼:255.255.255.0,並儲存:

終端輸入ifconfig指令檢視網路節點配置如下,可見usb網路卡配置完成:

ping一下1808計算棒網路192.168.180.8,如下網路可以連通:

使用ssh登入1808計算棒,使用者名稱和密碼預設都為toybrick,如下登陸成功:

2、網路共享配置

執行ifconfig,可以看到eth0、wlan0等宿主機網路卡,我們用於訪問外網,enx10dcb69f022c為USB網路卡(RK1808人工智慧計算棒虛擬網路卡)。不同的系統網路卡名稱可能不一樣,以實際網路卡名稱為準。

首先配置宿主機網路,使宿主機可以連通乙太網,這裡我們使用wlan0節點來上網,具體配置不再贅述。

命令列執行如下命令,其中enx10dcb69f022c需要修改成使用者本地實際值; 正常情況只要設定一次即可,若拔插裝置發現網路卡名稱改變了或者使用者手動刪除該網路卡,則需要重新設定。

1. sudo nmcli connection add con-name toybrick type ethernet ifname enx10dcb69f022c autoconnect yes ip4 192.168.180.1/24


配置NAT功能,執行如下命令,其中eno1需要修改成使用者本地實際值;關機失效,所以每次電腦重啟都要重新設定。

1. sudo sysctl   -w net.ipv4.ip_forward=1
sudo iptable -F
sudo iptables -t nat -F
sudo  iptables  -t  nat  -A POSTROUTING -o wlan0 -j MASQUERADE

注意:以自己開發板聯網的實際埠為準,例:eth0

iptables命令部分釋義如下:

iptables --hel p

--flush   -F [chain] Delete all rules in  chain or all chains 

--table       -t table table to manipulate (default: `filter') 

--append  -A chain Append to chain 

--jump -j target target for rule (may load target extension) 


MASQUERAD ,地址偽裝,算是snat中的一種特例,可以實現自動化的snat

SNAT是source networkaddress translation的縮寫,即源地址目標轉換。比如,多個PC機使用ADSL路由器共享上網,每個PC機都配置了內網IP,PC機訪問外部網路的時候,路由器將資料包的報頭中的源地址替換成路由器的ip,當外部網路的伺服器比如網站web伺服器接到訪問請求的時候,他的日誌記錄下來的是路由器的ip地址,而不是pc機的內網ip,這是因為,這個伺服器收到的資料包的報頭裡邊的“源地址”,已經被替換了,所以叫做SNAT,基於源地址的地址轉換。

DNAT是destinationnet workaddress translation的縮寫,即目標網路地址轉換,典型的應用是,有個web伺服器放在內網配置內網ip,前端有個防火牆配置公網ip,互聯 網上的訪問者使用公網ip來訪問這個網站,當訪問的時候,客戶端發出一個資料包,這個資料包的報頭裡邊,目標地址寫的是防火牆的公網ip,防火牆會把這個資料包的報頭改寫一次,將目標地址改寫成web伺服器的內網ip,然後再把這個資料包傳送到內網的web伺服器上,這樣,資料包就穿透了防火牆,並從公網ip變成了一個對內網地址的訪問了,即DNAT,基於目標的網路地址轉換。


04

主動模式Mobilenet-ssd測試



1、環境要求

1)參考“計算棒網路配置與網路共享配置”章節,完成RK1808人工智慧計算棒網路配置(RNDIS)以及網路共享配置。

2)宿主機需要插入USB攝像頭,並連線顯示器。

2、部署計算棒程式

SSH方式

該方式透過ssh連線到RK1808人工智慧計算棒,執行相應程式。 

計算棒系統使用者名稱:toybrick 密碼:toybrick

計算棒系統使用者名稱:root 密碼:toybrick

建議用toybrick使用者登入

1)使用官方連結下載Mobilenet-SSD主動模式demo軟體包,解壓,連結如下:

2)複製解壓目錄中的1808目錄至計算棒


1. scp   - r   1808 /   toybrick@192 . 168.180 . 8 : /home/ toybrick /


3)ssh進入計算棒

1. ssh  toybrick@192 . 168.180 . 8

4)安裝依賴包

1. sudo dnf install  - y cmake make


5)編譯

1. cd  1808 / mkdir build cd build / cmake  .. make  - j4


6)直接執行程式或設定程式為開機啟動

•直接執行:

1. ./ 1808 _ssd_demo


3、部署上位機程式(以OK3399-Cdesktop為例)

1)安裝依賴包make/cmake/opencv

1. sudo apt - get  install  - y make cmake libopencv - dev

2)進入Mobilenet-SSD主動模式demo軟體包中的host目錄,修改host/ssd_demo.cpp,根據開發板實際情況修改開啟的攝像頭節點:

1. cd host/

2. int main(void)

3. {

4.  //ret = test.run(VIDEO_NODE, post_process, &data);

5.  ret = test.run("/dev/video10", post_process, &data);

6. }

3)編譯

1. mkdir build cd build / cmake  .. make  - j4


4)計算棒程式執行起來後,執行上位機程式

1. ./ ssd_demo


效果如下:


05

主動模式yolov3測試



1、環境要求

1)參考“計算棒網路配置與網路共享配置”章節,完成RK1808人工智慧計算棒網路配置(RNDIS)以及網路共享配置。

2)OK3399-C開發板需要插入USB攝像頭,並連線顯示器。

2、部署步驟

計算棒端:

1)使用官方連結下載示例原始碼master_yolov3.zip,解壓,連結如下:

%2F

2)複製解壓目錄中的1808目錄至計算棒:

scp -r  1808/  toybrick@192.168.180.8:/home/toybrick/

3)透過ssh連線到RK1808人工智慧計算棒,執行yolov3master端程式

計算棒系統使用者名稱toybrick  密碼toybrick

計算棒系統使用者名稱root     密碼toybrick 

建議用toybrick使用者登入,安裝python依賴包,root使用者可能存在未知風險。

進入計算棒:

ssh  toybrick@192.168.180.8

4)安裝依賴包:

sudodnf  install  python3-opencv  -y

5)進入剛才複製的1808目錄,執行1808端程式。

宿主機端:

1)安裝依賴庫

pip3 install --user numpy

sudo apt-get install -y  python3-opencv

2)執行host端程式

3、效果如下:

至此,OK3399-C開發板+RK1808人工智慧計算棒主動模式下的測評告一段落。下篇文章我們會對OK3399-CDesktop+1808被動模式做詳細介紹,涉及被動模式的三個demo例程,敬請期待!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989353/viewspace-2738083/,如需轉載,請註明出處,否則將追究法律責任。

相關文章