智能辅助驾驶是当前最热门的研究和实际落地应用的模块代码,无论本身就是人工智能方向的码农还是想刚入门的新人都可以通过这个小项目,来打开或充实自己的代码编程和落地能力。

智能辅助驾驶 —— 注意力监测

项目背景说明:

注意力监测功能主要通过传感器和算法实时监测驾驶员的注意力状态,防止因分心或疲劳导致事故。核心逻辑分为数据采集、状态分析和预警触发三个部分。

数据采集通常依赖车内摄像头、方向盘传感器或红外传感器。摄像头捕捉驾驶员的面部特征(如眼睑闭合度、视线方向),方向盘传感器检测握力变化,红外传感器辅助夜间监测。

状态分析环节采用计算机视觉和机器学习算法。面部特征数据通过卷积神经网络(CNN)提取关键点,结合时序模型(如LSTM)判断注意力持续性。

以下是我对注意力监测中数据采集、状态分析的总结和自己的小小落地试用:

环境搭建:

推流:
ffmpeg                    8.0.0           gpl_he3062b8_906    conda-forge
opencv-python             4.13.0.92                pypi_0    pypi

关键的检测:
torch                     2.8.0+cu126              pypi_0    pypi
torchvision               0.23.0+cu126             pypi_0    pypi
ultralytics               8.0.224                  pypi_0    pypi
numpy                     2.0.2                    pypi_0    pypi

代码运行的整体逻辑:

        获取实时视频流  -  打开MediaMTX  - 推流 - VLC查看推流视频  -- 终端执行注意力检测指令

1、获取目标视频流【以自己的电脑摄像头为目标】获取对应的摄像头名称:

终端运行:
ffmpeg -list_devices true -f dshow -i dummy  

        回车会得到自己本地电脑对应的摄像头名称:

例如:video -- 视频设备类型

[dshow @ 0000020DFEFCFD40] "Integrated Webcam" (video)

2、将该设备推流【这里只是推流给本地127.0.0.1, 不经过互联网、不传给别人、不上云】

终端指令:

ffmpeg -f dshow -rtbufsize 10M -i video="Integrated Webcam" -pix_fmt yuv420p -c:v libx264 -preset ultrafast -tune zerolatency -f flv rtmp://127.0.0.1:1935/live/cam  

# video="Integrated Webcam" = 推流的设备
# rtmp://127.0.0.1:1935/live/cam = 推流的整体地址
# 127.0.0.1 = 你的本机电脑(不经过互联网、不传给别人、不上云)
#1935 = RTMP 默认端口
#/live/cam = 自定义流地址

运行效果:正常效果本机摄像头已经启用

[libx264 @ 000002bcab6ba7c0] profile Constrained Baseline, level 3.1, 4:2:0, 8-bit
[libx264 @ 000002bcab6ba7c0] 264 - core 161 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=11 lookahead_threads=11 sliced_threads=1 slices=11 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, flv, to 'rtmp://127.0.0.1:1935/live/cam':
  Metadata:
    encoder         : Lavf58.45.100
    Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720, q=-1--1, 30 fps, 1k tbn, 30 tbc
    Metadata:
      encoder         : Lavc58.91.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A

# 下面这一行是实时变化的,这只是截取的其中一刻
frame= 4574 fps= 30 q=23.0 size=   84259kB time=00:02:32.93 bitrate=4513.4kbits/s speed=   1x 

错误运行效果:这个就是没有在运行推流指令前打开MediaMTX

    Last message repeated 2 times                                                                     
[dshow @ 000001c4df184f00] real-time buffer [Integrated Webcam] [video input] too full or near too full (97% of size: 10000000 [rtbufsize parameter])! frame dropped!                                       
    Last message repeated 2 times                                                                     
[dshow @ 000001c4df184f00] real-time buffer [Integrated Webcam] [video input] too full or near too full (99% of size: 10000000 [rtbufsize parameter])! frame dropped!                                       
    Last message repeated 2 times                                                                     
[dshow @ 000001c4df184f00] real-time buffer [Integrated Webcam] [video input] too full or near too full (100% of size: 10000000 [rtbufsize parameter])! frame dropped!                                      
    Last message repeated 36 times                                                                    
[tcp @ 000001c4df18f080] Connection to tcp://127.0.0.1:1935 failed: Error number -138 occurred
[rtmp @ 000001c4df18eb80] Cannot open connection tcp://127.0.0.1:1935                                 
rtmp://127.0.0.1:1935/live/cam: Unknown error

终端实时监测的指令:注要和推流的地址、端口号保持一致!!

# rtmp://127.0.0.1 -- 本机地址 
:1935/live/cam  --  端口号
python keypoint.py --source rtmp://127.0.0.1:1935/live/cam

整体的项目代码感兴趣可以git上获取完整代码:GDB-Creator/Driver-Attention-Detection-in-ADA: 初级的智能辅助驾驶的数据收集和分析,简单的完成了本地电脑设备的识别、推流、实时检测

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐