隨著人工智慧技術的進步,智能攝像頭的應用日益廣泛。為了因應後端AI運算分析的負載隨著攝像頭數量的增加而呈幾何級數增長,AI運算分析的趨勢正逐步向邊緣運算轉移。換言之,AI運算功能將被整合至攝像頭內部。C610開發板,搭載高通QCS610晶片,具備數位信號處理器(DSP),能夠執行簡易的AI運算。本文將介紹如何利用C610開發板打造一款UAC/UVC智能攝像頭。
開發環境
系統需求
需求 | |
作業系統 |
Ubuntu Desktop 18.04, 20.04, 以及 22.04 |
網際網路 |
工作在網際網路上 |
中央處理器 |
i7 8-核以上 |
記憶體 |
建議32GB 最少16GB |
磁碟空間 |
• SDK of Android 12: ≥1T 建議2TB以上 |
安裝作業系統
參考官網自行安裝作業系統到個人電腦上
教程: http://www.ubuntu.com/download/desktop/install-ubuntu-desktop
安裝docker引擎
使用以下指令安裝docker引擎
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
安裝與執行sdkmanager
下載與執行turbox-sdkmanager-setup.sh
sudo apt-get install wget
sudo wget https://sdkgit.thundercomm.com/api/v4/projects/4649/repository/files/turbox-sdkmanager-setup.sh/raw?ref=main -O /usr/bin/turbox-sdkmanager-setup.sh
sudo chmod +x /usr/bin/turbox-sdkmanager-setup.sh
執行turbox-sdkmanager-setup.sh 之後就會進入docker container中,可以看到下面的提示字串[turbox@sdkmanager-xx.xx-x.x.x]$
初始化sdkmanager
執行sdkmanager –init 進行初始化
下載SDK
執行sdkmanager –sdk_download ,然後依照提示選擇要下載的SDK
下載image
執行sdkmanager –image_download,依照提示選擇下載預先編譯好的image。
燒寫image到開發版
進入fastboot模式
關閉電源,長壓Volume down,按下Power on,然後五秒之後方開Volume down。
進入fastboot模式之後,在sudo fastboot devices可以得到裝置列表
燒寫image
執行以下指令進行燒寫
cd
sudo ./turbox_flash.sh --all -r -f -v debug
現在C610開發版可以開機了。我們再把他設定成一個UVC Cam的裝置。如下圖,USB type-c 會傳遞UVC資料過來給終端電腦。終端電腦透過WiFi來對C610做adb溝通。
安裝MPC-HC
從這裡https://github.com/clsid2/mpc-hc/releases/tag/2.0.0下載MPC-HC.2.0.0.x64.exe進行安裝。
加載測試檔案
從這裡下載AI model
把AI model 上傳到C610開發版之中
$ adb root
$ adb disable-verity
$ adb reboot
上傳AI model
$ adb root
$ adb remount
$ adb push yolov5m-320x320-int8.tflite /data/
$ adb push yolov5m.labels /data/
$ adb shell
# echo outputFormat=0 > /etc/camera/camxoverridesettings.txt
# sync
設定weston
$ adb root
$ adb shell
# vi /etc/xdg/weston/weston.ini
[output]
name=Virtual-1
mode=off
[output]
name=DSI-1
mode=on
[output]
name=DP-1
mode=off
# sync
以上修改做一次就可以了。
開始UVC UAC
WiFi連線設定
$ adb root
$ adb shell
# killall wpa_supplicant
# wpa_supplicant -iwlan0 -Dnl80211 -c /etc/misc/wifi/wpa_supplicant.conf &
使用wpa_cli 進行network的設定
# wpa_cli -iwlan0
> set_network 0 ssid "TP-LINK_4295"
> set_network 0 key_mgmt NONE
> disable_network 0
> enable_network 0
之後應該就可以看到WiFi 完成連線的訊息。
執行udhpc -iwlan0 取得IP 地址
然後把adb改到IP地址上。
$ adb tcpip 5556
$ adb connect 192.168.1.101:5556
$ adb -s 192.168.1.101:5556 shell
打開Weston
執行以下的指令已打開Weston
# setenforce 0
# export WESTON_DISABLE_ATOMIC=1
# export XDG_RUNTIME_DIR=/run/user/root
# weston –tty=1 –idle-time=123456 &
切換USB Type-C的模式
$ adb -s 192.168.1.101:5556
# usb_composition
之後依序9113, n, y, y, y
切換到UVC模式
執行以下指令切換到UVC模式
# source /etc/profile && chown -R qmmfsvr:qmmfsvr /run/user/root
# gst-umd-daemon -v /dev/video3 -a hw:1,0
此時,將USB Type-C線與PC連接,開啟MPC-HC播放器,即可觀看攝像頭傳輸的影像。
至此,DEMO展示完畢。
結語:
UVC攝像頭是一種廣泛應用的裝置。結合AI算法,不僅能豐富影像的功能,還能顯著減輕主機端的運算負擔。
常見問答:
Q: Yolo5m模型有什麼功能?
A: 用於影像優化。
Q: 必須使用Weston顯示伺服器嗎?
A: 不必。UVC裝置不需要使用螢幕桌面。
Q: 必須使用WiFi嗎?
A: 不需要。可以在開機時自動完成UVC設定,無需手動透過WiFi設定。本文中的步驟是為了演示需要使用WiFi來執行gst-umd-daemon指令。
Q: 必須使用MPC-HC播放器嗎?
A: 不必。MPC-HC僅用於播放攝像頭影像,可用其他播放軟體替代。
Q: Usb 切換中提到的9113是甚麼意思?
A: Usb composition中所指定的一種模式; 包含DIAG, UAC, UVC, ADB等功能
9113 - DIAG + UAC1 + UVC + ADB
評論