1.項(xiàng)目簡(jiǎn)介
本項(xiàng)目旨在基于rk3568開發(fā)一個(gè)車載人臉識(shí)別系統(tǒng),運(yùn)行yocto文件系統(tǒng),支持rtsp實(shí)時(shí)傳輸。該系統(tǒng)將使用rk3568作為主控芯片,使用STM32mp157作為rtsp服務(wù)器,通過攝像頭獲取實(shí)時(shí)視頻流,并利用深度學(xué)習(xí)算法進(jìn)行人臉檢測(cè)、識(shí)別和比對(duì)。系統(tǒng)支持lcd實(shí)時(shí)顯示視頻流,同時(shí),系統(tǒng)支持rtsp實(shí)時(shí)傳輸,可以將視頻流通過網(wǎng)絡(luò)傳輸?shù)絩tsp服務(wù)器,在其他設(shè)備拉流,實(shí)現(xiàn)實(shí)時(shí)監(jiān)控和管理。系統(tǒng)具有廣泛的應(yīng)用前景,可以應(yīng)用于車輛安全管理、駕駛員身份認(rèn)證等領(lǐng)域。
2.系統(tǒng)框圖
系統(tǒng)硬件層面上,外接2K mipi攝像頭imx335,實(shí)時(shí)獲取攝像頭數(shù)據(jù),將攝像頭數(shù)據(jù)進(jìn)行數(shù)據(jù)量化裁剪等操作之后,導(dǎo)入訓(xùn)練好的人臉識(shí)別深度學(xué)習(xí)模型,然后將處理后的圖像顯示到本地的1920x1080分辨率的lcd,然后通過rtsp協(xié)議將圖像數(shù)據(jù)推送到服務(wù)器,在手機(jī)端或PC端進(jìn)行拉流,實(shí)時(shí)監(jiān)控帶人臉識(shí)別標(biāo)識(shí)的圖像。
系統(tǒng)框圖如下:
主控cpu:RK3568
- Quad-core Cortex-A55 up to 2.0GHz
- Mali-G52 GPU
- 1TOPS NPU
- LPDDR4/LPDDR4X/DDR4/DDR3/DDR3L/LPDDR3, ECC
- 4KP60 H.265/H.264/VP9 video decoder
- 1080P60 H.264/H.265 video encoder
- 8M ISP with HDR
- Dual dislplay, LVDS/MIPI-DSI/RGB/eDp/RGB/HDMI2.0/EBC
- 1x8ch I2S/TDM, 1x8ch PDM, 2x2ch I2S
- USB3.0 x2/SATA3.0 x3/PCIE2.1/QSGMII,PCIE3.0 1x2Lanes/2x1Lane
rtsp服務(wù)器:STM32mp157
- STM32MP157 Arm?-based dual Cortex??A7 800 MHz 32 bits +
Cortex??M4 32 bits MPU in a TFBGA361 package - ST PMIC STPMIC1
- 4-Gbit DDR3L, 16 bits, 533 MHz
- 1-Gbit/s Ethernet (RGMII) compliant with IEEE-802.3ab
- USB OTG HS
- Audio codec
- 4 user LEDs
- 2 user and reset push-buttons, 1 wake-up button
- 5 V / 3 A USB Type-C? power supply input (not provided)
- Board connectors:
Ethernet RJ45
4 × USB Host Type-A
USB Type-C? DRP
MIPI DSI?
HDMI?
Stereo headset jack including analog microphone input
microSD? card
GPIO expansion connector (Raspberry Pi? shield capability)
ARDUINO? Uno V3 expansion connectors - On-board ST-LINK/V2-1 debugger/programmer with USB reenumeration capability: Virtual COM port and debug port
- STM32CubeMP1 and full mainline open-source Linux? STM32 MPU
OpenSTLinux Distribution (such as STM32MP1Starter) software and
examples
– Support of a wide choice of Integrated Development Environments
(IDEs) including IAR Embedded Workbench?, MDK-ARM, and
STM32CubeIDE
3. 各部分功能說明
3.1.rk3568板載端
rk3568板載端運(yùn)行yocto文件系統(tǒng),Yocto 是一個(gè)很強(qiáng)大的構(gòu)建工具,其功能不僅僅是用來獲取BSP源碼和簡(jiǎn)單地編譯源碼,開發(fā)者還可以使用Yocto對(duì)其開發(fā)板添加各種第三方開發(fā)庫,而不需要每次重新從零開始編譯源碼,解決第三方依賴的方式進(jìn)行開發(fā),對(duì)開發(fā)效率的提高有很大的幫助。也可以基于Yocto的構(gòu)建規(guī)則,把自己定義的開發(fā)板卡添加到Y(jié)octo的構(gòu)建工程中,便于向第三方進(jìn)發(fā)布。
1. 本系統(tǒng)在kernel層面上支持mipi dsi驅(qū)動(dòng)lcd,支持mipicsi驅(qū)動(dòng)攝像頭,支持以太網(wǎng),支持wifi無線網(wǎng)絡(luò)。
2. 本系統(tǒng)在環(huán)境上支持weston桌面系統(tǒng),支持瑞芯微的RKNN Toolkit Lite2推理庫。
以此為支撐,我們可以在此系統(tǒng)上面完成攝像頭采集圖像,然后送到rknn庫進(jìn)行推理,之后通過以太網(wǎng)或者wifi推流到pc端或手機(jī)端。
3.2. rtsp服務(wù)端
本項(xiàng)目使用stm32MP157(得捷贊助開發(fā)板),運(yùn)行rtsp 服務(wù)器
服務(wù)器使用開源工具mediamtx
下載位置https://github.com/bluenviron/mediamtx/releases
使用mediamtx有點(diǎn)非常多
不管是在windows還是linux,安裝和使用都極其簡(jiǎn)單;
文檔比較詳細(xì),使用過程中遇到的問題很少,不需要去參考其他文檔;
支持rtsp、rtmp、hsl;并且延遲處理的比較好;
集成webrtc可直接播放視頻;
可進(jìn)行視頻訪問加密處理;
3.3. pc拉流端
PC端進(jìn)行拉流可以使用ffplay或者直接使用mediamtx的網(wǎng)頁拉流功能,
1. 使用mediamtx網(wǎng)頁拉流功能時(shí)需要配置
配置完成之后,重啟stm32mp157上的mediamtx服務(wù)器,然后保證在同一局域網(wǎng)的情況下,瀏覽器輸入如下地址進(jìn)行拉流
http://192.168.21.117:8889/live/stream/
2. 使用ffplay拉流
確保在同一局域網(wǎng),使用一下命令進(jìn)行拉流,其中192.168.21.117為rtsp服務(wù)器,也就是stm32mp157的IP地址。
ffplay rtsp://192.168.21.117:8554/live/stream
使用ffplay拉流延遲較高。
3.4.手機(jī)拉流端
手機(jī)拉流使用的是easyplayer,EasyPlayer RTSP 播放器是由EasyDarwin團(tuán)隊(duì)開發(fā)和維護(hù)的一個(gè)完善的RTSP流媒體播放器項(xiàng)目,視頻編碼支持H.264,H.265,MPEG4,MJPEG,音頻支持G711A,G711U,G726,AAC,支持RTSP over TCP/UDP協(xié)議,支持軟/硬解碼,是一套極佳的安防流媒體平臺(tái)播放組件
4.作品源碼
源碼主要包含自行構(gòu)建的yocto文件系統(tǒng)以及python編寫的應(yīng)用程序
https://gitee.com/jia_yuhao/digikey_rk3568/tree/master
源碼下載
# git clone https://gitee.com/jia_yuhao/digikey_rk3568.git
5.作品視頻
https://www.bilibili.com/video/BV1rt421H79s/?spm_id_from=333.999.0.0&vd_source=de29f8018dea6c4485b6ec360c0595d7
6.項(xiàng)目總結(jié)
rk3568NPU算力僅1TOPS,算力不算太高,并且RKNN Toolkit Lite2推理庫為python接口的庫,在不接入人臉識(shí)別推理運(yùn)算的情況下,rtsp可以實(shí)時(shí)穩(wěn)定的運(yùn)行,幀率穩(wěn)定在30fps。
但是,接入人臉識(shí)別的算法后,lcd實(shí)時(shí)顯示幀率只有15fps左右,而通過rtsp推流幀率就只有7-8 fps了。后續(xù)可以考慮使用C++接口的推理庫。在1TOPS的算力下,幀率應(yīng)該會(huì)有所提升。
另外,使用開源rtsp工具進(jìn)行拉流,基本上有1-2秒的延遲。應(yīng)該跟解碼邏輯,解碼參數(shù)和解碼緩存等有關(guān)。