前言
主要借助人臉識別云服務(wù)器的應(yīng)用來介紹 RV1126 的 Debian10 系統(tǒng)和 Rockx。
Debian10:Rockchip 只為 RV1126 適配了 Buildroot 系統(tǒng),雖然 Buildroot 系統(tǒng)開銷非常小但是對于應(yīng)用開發(fā)部署并不是那么友好。所以 Firefly 為 RV1126 適配了 Debian10 ,Debian10 的優(yōu)勢就是擁有豐富的 deb 資源,通過 apt 可以快速搭建好你的開發(fā)環(huán)境,同時也可以方便搞深度學(xué)習(xí)的小伙伴使用 Python 進行開發(fā)。
Rockx:Rockx 是 Rockchip 發(fā)布的一套供用戶快速構(gòu)建 AI 應(yīng)用的 API 接口。Rockx 可以讓用戶暫時不需要理會 AI 模型生成,快速上手 Rockchip npu 平臺。目前 Rockx 支持 人臉識別、車牌識別、手指和人體關(guān)鍵點識別、目標檢測等等模型。
應(yīng)用介紹
大家可能使用過、阿里等人臉識別 API,基本原理就是通過硬件搭建云服務(wù)器并且封裝出一套 http 接口提供給客戶調(diào)用自己的硬件進行云計算。本案例將在 Core-1126-JD4 上搭建一套類似的服務(wù)完成云人臉識別。
環(huán)境搭建
硬件:Core-1126-JD4(配套底板)
系統(tǒng):Debian10
1. 升級 Debian10
設(shè)備出廠是默認自帶 Buildroot 系統(tǒng)的,如果你沒有升級 Debian10 請參考 Wiki 升級 Debian10 系統(tǒng)。以下是鏈接
/zh_CN/CORE-1126-JD4/Debian10.html
2. 拉取代碼
sudo apt update
sudo apt install git
git clone https://gitee.com/Blg-daijh/pywebservice.git -b rv1126_rockx
3. 環(huán)境搭建
sudo apt update
sudo apt install libdbus-1-dev
sudo apt install libglib2.0-dev
sudo apt install libdbus-glib-1-dev
sudo apt install python3-pip
pip3 install flask
4. 編譯識別程序
make
應(yīng)用運行
1. 運行服務(wù)端程序
# 下面命令在 RV1126 運行================
sudo chmod 777 /dev/galcore
# 代碼中 rockx 目錄的路徑
export ROCKX_DATA_PATH=/home/firefly/pywebservice/rockx/
./client &
# 運行前需要自己修改 Pywebservice.py host ip 設(shè)置為自己網(wǎng)絡(luò) ip,可以通過 ifconfig 查看
python3 Pywebservice.py
2. 客戶端運行程序
# 下面命令在與 RV1126 處于同一局域網(wǎng)的設(shè)備運行(電腦或者其他 ARM 設(shè)備)
# 運行前根據(jù)自己的 RV1126 ip 修改 Pyupload.py
python3 Pyupload.py
3. 效果
客戶端會向云上傳當(dāng)前目錄的 test.jpg,服務(wù)器會計算出人臉并且標記重新編碼成 jpg 格式圖片返回給用戶,輸出結(jié)果保存為 test_save.jpg
FAQ
1. 只有 2.0 T 算力,不適合做云服務(wù)器吧?
的確在單塊 Core-1126-JD4,搭建服務(wù)并沒有什么意義,但是 Core-1126-JD4 適配Cluster Server R1服務(wù)器,單個服務(wù)器可以接入 10 塊 Core-1126-JD4。
可進入維基教程了解更多內(nèi)容
10 塊還是不夠用?Core-1126-JD 還適配了Cluster Server R2 最多可以接入 72 塊 Core-1126-JD4,144T 算力,同時每塊 RV1126 支持同時硬件編解碼 4 路 1080p 碼流,72 塊理論上可以處理 288 路 1080p 視頻流 。
可進入維基教程了解更多內(nèi)容
2. 接入如此多 Soc 網(wǎng)絡(luò)帶寬夠嗎?
Cluster Server R2已經(jīng)適配了萬兆網(wǎng)絡(luò),有充足的帶寬
3. 軟件結(jié)構(gòu)?
為了讓大家了解 Debian10 在軟件部署在的快捷方便性,應(yīng)用使用了 Python flask 模塊搭建 Webservice ,npu 識別方面也是使用了高度封裝的 Rockx 讓大家不需要理會模型開發(fā),另外還使用了 Dbus 進行 Python 和 C 進程之間的通信。
4. Rockx 有相關(guān)介紹嗎?
其實 RV1126 源碼 SDK 中就包含了 Rockx 倉庫,里面就有豐富的示例和文檔說明,這是 SDK 中的路徑,sdk_path/external/rockx