动态可调的码流传输系统、驾驶员行为监控系统

我要开发同款
大席2023年12月22日
25阅读
开发技术C/C++
所属分类机器视觉、编解码、地平线开发板、pytorch、ffmpeg

作品详情

此系统的最初设计目标是用于车路协同等场景,开发板在前端进行采集编码,发送到后端处理。后来也将此系统用于驾驶员行为监控(物流公司等对驾驶员的危险驾驶监控)开发语言c++最开始采集端是树莓派,后来觉得价格过高,性价比考虑,采集端(编码端)选用了地平线旭日3开发板。接收端可以跨linux和windows。功能包括:1)从摄像头模块采集视帧可以用ffmpeg进行采集(采集端是电脑、或者树莓派或其它开发板等时);也可以用地平线芯片硬件API直接采集(采集端是地平线开发板时)。2)缩放视频。可以用ffmpeg进行缩放(采集端是电脑、或者树莓派或其它开发板等时);也可以用地平线芯片硬件API直接缩放(采集端是地平线开发板时,速度更快)3)将视频编码成h264可以用ffmpeg进行编码(采集端是电脑、或者树莓派或其它开发板等时),这种软件的编码的方式,在720p或者1080P高清时,在电脑上速度尚可,在树莓派上编码速度明显不够。在树莓派上用树莓派的硬件编码,速度还行。实际使用时,在地平线开发板上接了两路usb摄像头和一个MIPI摄像头。用地平线的硬件编码API,同时对三路码流进行编码,性能能够达到使用需求。4)原始音频采集使用alsa库采集的pcm声音。5)声音的编码使用lame库把原始的声音编码成mp36)视频和声音的混合把h264和mp3混合成mp4文件。7)文件的滚动存储地平线开发板接硬盘,音视频编码成的mp4文件, 5分钟一个mp4文件,超过一个月的文件自动删除。8)动态码流传输当某些情况触发时,编码端向服务器即时发送h264码流,以及mp3声音流。网络是5G网络。发送追求最小的延时,其中分辨率、帧率、码流、gopsize可以根据网络状况等,进行动态的调整。比如编码端感觉网络有点拥堵,就通知接收端要降低分辨率和码流,发送新的分辨率、帧率、码流等参数给解码端,等解码端完成参数的更新调整,编码端发送新的参数的视频流到解码端。接收端可以马上播放收到的视频流和声音。经测试,采集编码到接收端播放几乎感觉不到有延时。9)驾驶员手离开方向盘监控这是危险驾驶监控的一项。驾驶员手离开方向盘时,会马上提示他,并马上把码流发送给服务端,同时作出记录。功能实现上分两步,第一步,在画面中检测到方向盘,第二步,切割出方向盘图片,判断方向盘上有没有手。在画面中检测到方向盘用的yolov5,判断方向盘上有没有手用的resnet进行分类。训练框架是pytorch。先在训练服务器上用labelimg对大批量驾驶室的图片进行方向盘标注,训练出方向盘检测模型。然后用此模型剪切出所有方向盘的方框图片。然后把方向盘图片进行分类,分为有手的方向盘图片和没有手的方向盘图片,分别放在两个目录下,然后进行分类模型训练。训练的模型经测试准确率接近100%,分别转换成onnx通用模型。然后用地平线的模型转换工具,把onnx模型转换成地平线专有的bin模型方式。然后用地平线的模型推导API,调用模型,对传进来的摄像头图片进行检测以及分类。经测试,检测及分类,模型推导使用的时间都是40毫秒以内。10)恶劣天气(大雾、大雪、大雨)判断和9)类似,不再赘述。11)还有其它一些比如车流量判断、驾驶员长时间不动等等判断,不再赘述。这些工作都是由我本人独立完成
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论