前言
主要借助人臉識別云服務器的應用來介紹 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 系統。以下是鏈接
/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