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