一、前言
KL520是耐能公司-Kneron所設計的深度神經網路運算處理器,Kneron KL520 USB AI Dongle 即是以KL520為微處理器的神經網路運算棒。
使用 Kneron KL520 USB AI Dongle 可以大幅的提升電腦或單板電腦對深度神經網路的運算速度,並提供最佳能效比,與大量佈署的特性,非常適合作為外掛套件。
本文將為大家分享如何對 Kneron KL520 USB AI Dongle 進行環境建置與安裝cmake、Python、Pip、virtualvenv等套件;同時介紹如何設定USB裝置權限,讓KL520 Dongle運作,並且搭配羅技logi C270 HD 網路攝影機測試其影像辨識功能。
二、環境建置
在開始使用之前,提醒大家所使用的系統硬體配置建議規格等級如下:
- CPU核心四核心以上
- RAM 4GByte 以上
- 儲存空間64GByte 以上
(一)在Windwos 系統上安裝驅動程式
(1) 在Windwos系統第一次使用Kneron KL520 USB AI Dongle 需要先安裝驅動程式,不然Windows系統會無法辨識該裝置,如下圖所示:
(2) 我們需要先安裝Zadig-2.5驅動程式,開啟時請使用系統管理員權限。
(3) 安裝完畢後,開啟Zadig-2.5,程式所讀取到的USB ID 3231 0100,就是我們要使用的KL520_Dongle,如下圖所示:
(4) 接著可以按右上角的「Edit」更改裝置名稱,在此將其改成「KL520」方便識別
(5) 變更完裝置名稱後,按下「Install Driver」
(6) 等待約1分鐘的時間,便會出現安裝成功的畫面,如下圖所示:
(7) 接下來關掉Zadig,再回到電腦管理即可看到Windwos系統成功識別KL520,如下圖所示:
(二)在Ubuntu安裝Dongle
(1) 如何在VirtualBox 虛擬機器安裝Ubuntu的方法,可以參考「學習輕鬆應用 ROS 機器人作業系統的技術 – ROS 安裝教學」。Ubuntu 安裝的版本,Kneron官方建議為16.04版本,但是在此建議安裝Ubuntu 18.04 LTS 版本,因為16.04版本在Python pip安裝上有bug,而且16.04版本的支援已過期。
(2) 安裝完Ubuntu後,即可開始進行KL520開發,如果是原機安裝Ubuntu就不需要進行前述在Windows安裝Zadig驅動程式的步驟。
(3) 上述步驟皆完成後,即可開始進行環境建置。首先,先下載「KL520_Dongle_Ubuntu1804.zip」,並將檔案解壓縮存在「Home/USER」。
(4) 對zip檔按右鍵選擇Extract Here即可解壓縮
(5) 內附環境建置安裝腳本
(6) 直接開啟Terminal, 輸入指令:$ bash KL520_Dongle_Environment_Install.sh,按下Enter , 輸入密碼後Enter。
(7) 等待約20分鐘(速度依個別網路及電腦效能而不同),安裝完成後顯示畫面如下圖所示:
(8) 如果使用編譯完的bin可以直接執行Dongle的範例,不過要使用python的範例還要安裝python的環境。
(三) Ubuntu環境腳本內容說明
接著介紹「KL520_Dongle_Environment_Install.sh」環境建置安裝腳本的內容。
(1) 將過去apt更新失敗lock暫存檔刪除,以便後續apt安裝套件
(2) 安裝及更新python3 pip套件管理,以及安裝virtualenv套件
(3) 以原始碼安裝python3.8.6,Kneron建議Python使用3.8.6版本,這裡安裝是為了建構virtualenv使用3.8.6版本, 導入virtualvenv時使用的python3.8.6路徑為:/usr/local/python3 。
(4) 設定KL520_Dongle的USB權限
(5) 安裝docker以使用Kneron提供的Toolchain,用於將AI模型轉化為.nef耐能神經網路加速器的模型格式。
(6) 將host_lib的各個C++語言KL520_Dongle範例進行編譯
(四)安裝Python虛擬環境
(1) 「KL520_Venv_Setup.sh」為安裝venv虛擬環境腳本。
輸入指令:$ bash KL520_Venv_Setup.sh,按下 Enter 。
(2) Python虛擬環境建置完成如下圖所示:
(五)Python環境腳本內容
繼續向大家介紹「KL520_Venv_Setup.sh」venv虛擬環境腳本的內容。
(1) 從/usr/local/python3引入3.8.6到venv虛擬環境
(2) 進入到venv虛擬環境
(3) 安裝KL520_Dongle所需等套件
(六)啟動Python虛擬環境
(1) 接下來我們開始使用Python虛擬環境, 輸入指令:$ source ./venv/bin/activate
(2) 當出現使用者名稱前面多了(venv),即代表現在使用Python已是在虛擬環境venv了,如下圖所示:
(3) 如果要查看虛擬環境的python版本,輸入指令:$ python –version,按下Enter。可以看到python版本為3.8.6,如下圖所示:
三、測試範例程式
接下來我們要使用 Kneron KL520 USB AI Dongle 與 羅技logi C270 HD 網路攝影機 實際測試範例程式。
(1)首先輸入指令:$ lsusb,可以看到「ID 3231:0100」與「Webcam C270」,這就表示系統已讀取到我們所使用的Kneron KL520 USB AI Dongle及與羅技logi C270 HD 網路攝影機。
注意:使用範例程式時,必須接著攝影機與KL520_Dongle
(2) 範例程式在官方提供的「host_lib/python」中,輸入指令:$ cd host_lib/python/
(3) 執行KL520_Dongle的python範例
輸入指令:$ python main.py -t KL520-cam_dme_async_post_host_yolo,測試視覺辨識功能,可以看到畫面中圈選了物體,如下圖所示:
四、Kneron官方範例程式
官方所提供的範例程式如下:
KL520-cam_dme_async_post_host_yolo
KL520-cam_dme_serial_post_host_ssd_fd
KL520-cam_dme_serial_post_host_yolo
KL520-cam_dme_serial_ssd_fd
KL520-cam_isi_async_parallel_post_host_yolo
KL520-cam_isi_async_parallel_yolo
KL520-cam_isi_async_ssd_fd
KL520-cam_isi_async_yolo
KL520-cam_isi_serial_yolo
KL520-get_crc
KL520-get_kn_num
KL520-get_model_info
KL520-get_nef_model_metadata
KL520-soft_reset
KL520-update_app_nef_model
KL520-update_fw
(1) 呼叫方式皆以輸入指令:$ python main.py -t 範例程式名
(2) 其中「KL520-cam_isi_async_parallel_post_host_yolo」要update 特定 model 才能使用
要在上一次上傳tiny_yolo_v3的
fw_scpu.bin
fw_ncpu.bin
models_520.nef
才可以成功執行
(3)「KL520-cam_isi_async_ssd_fd」要update 特定 model 才能使用
要在上一次上傳ssd_fd_lm的
fw_scpu.bin
fw_ncpu.bin
models_520.nef
才可以成功執行
五、結語
由上述的範例程式執行中,可以確認使用 Kneron KL520 USB AI Dongle 對深度神經網路做加速是很有效果的,每秒處理12幀照片不是問題,不過KL520 是針對推理設計的加速器,模型得用PC編譯學習,推薦給有需要的夥伴們選購。