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