1.项目简介
本项目旨在基于rk3568开发一个车载人脸识别系统,运行yocto文件系统,支持rtsp实时传输。该系统将使用rk3568作为主控芯片,使用STM32mp157作为rtsp服务器,通过摄像头获取实时视频流,并利用深度学习算法进行人脸检测、识别和比对。系统支持lcd实时显示视频流,同时,系统支持rtsp实时传输,可以将视频流通过网络传输到rtsp服务器,在其他设备拉流,实现实时监控和管理。系统具有广泛的应用前景,可以应用于车辆安全管理、驾驶员身份认证等领域。
2.系统框图
系统硬件层面上,外接2K mipi摄像头imx335,实时获取摄像头数据,将摄像头数据进行数据量化裁剪等操作之后,导入训练好的人脸识别深度学习模型,然后将处理后的图像显示到本地的1920x1080分辨率的lcd,然后通过rtsp协议将图像数据推送到服务器,在手机端或PC端进行拉流,实时监控带人脸识别标识的图像。
系统框图如下:
主控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服务器: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板载端运行yocto文件系统,Yocto 是一个很强大的构建工具,其功能不仅仅是用来获取BSP源码和简单地编译源码,开发者还可以使用Yocto对其开发板添加各种第三方开发库,而不需要每次重新从零开始编译源码,解决第三方依赖的方式进行开发,对开发效率的提高有很大的帮助。也可以基于Yocto的构建规则,把自己定义的开发板卡添加到Yocto的构建工程中,便于向第三方进发布。
1. 本系统在kernel层面上支持mipi dsi驱动lcd,支持mipicsi驱动摄像头,支持以太网,支持wifi无线网络。
2. 本系统在环境上支持weston桌面系统,支持瑞芯微的RKNN Toolkit Lite2推理库。
以此为支撑,我们可以在此系统上面完成摄像头采集图像,然后送到rknn库进行推理,之后通过以太网或者wifi推流到pc端或手机端。
3.2. rtsp服务端
本项目使用stm32MP157(得捷赞助开发板),运行rtsp 服务器
服务器使用开源工具mediamtx
下载位置https://github.com/bluenviron/mediamtx/releases
使用mediamtx有点非常多
不管是在windows还是linux,安装和使用都极其简单;
文档比较详细,使用过程中遇到的问题很少,不需要去参考其他文档;
支持rtsp、rtmp、hsl;并且延迟处理的比较好;
集成webrtc可直接播放视频;
可进行视频访问加密处理;
3.3. pc拉流端
PC端进行拉流可以使用ffplay或者直接使用mediamtx的网页拉流功能,
1. 使用mediamtx网页拉流功能时需要配置
配置完成之后,重启stm32mp157上的mediamtx服务器,然后保证在同一局域网的情况下,浏览器输入如下地址进行拉流
http://192.168.21.117:8889/live/stream/
2. 使用ffplay拉流
确保在同一局域网,使用一下命令进行拉流,其中192.168.21.117为rtsp服务器,也就是stm32mp157的IP地址。
ffplay rtsp://192.168.21.117:8554/live/stream
使用ffplay拉流延迟较高。
3.4.手机拉流端
手机拉流使用的是easyplayer,EasyPlayer RTSP 播放器是由EasyDarwin团队开发和维护的一个完善的RTSP流媒体播放器项目,视频编码支持H.264,H.265,MPEG4,MJPEG,音频支持G711A,G711U,G726,AAC,支持RTSP over TCP/UDP协议,支持软/硬解码,是一套极佳的安防流媒体平台播放组件
4.作品源码
源码主要包含自行构建的yocto文件系统以及python编写的应用程序
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.项目总结
rk3568NPU算力仅1TOPS,算力不算太高,并且RKNN Toolkit Lite2推理库为python接口的库,在不接入人脸识别推理运算的情况下,rtsp可以实时稳定的运行,帧率稳定在30fps。
但是,接入人脸识别的算法后,lcd实时显示帧率只有15fps左右,而通过rtsp推流帧率就只有7-8 fps了。后续可以考虑使用C++接口的推理库。在1TOPS的算力下,帧率应该会有所提升。
另外,使用开源rtsp工具进行拉流,基本上有1-2秒的延迟。应该跟解码逻辑,解码参数和解码缓存等有关。