基于RTT-Draco的疲劳驾驶监控系统设计案例

2023-08-15  

疲劳驾驶一直是交通界的焦点与痛点,每年都有大量司机因疲劳驾驶导致伤亡。传统的疲劳驾驶预防,大都基于司机 自身角度,通过正常的作息和合理的行车安排来提前减少疲劳驾驶发生的可能性,而未能从疲劳驾驶已经可能发生的角度及时的避免疲劳驾驶的继续。


从这个角度出发,我们将传统的疲劳驾驶预防与提醒方式,与人脸识别结合,设计了疲劳驾驶监测与提醒装置。可以识别抽烟、喝水、使用手机、闭眼、睁眼、闭嘴、张嘴等行为状态。


注:本项目为2022中国大学生计算机设计大赛RT-Thread@中智讯物联网专项赛参赛作品。项目已在github上整体开源,赛后将在本论坛整体开源,这里只做部分代码及流程解释。


使用平台:RTT—DracoAI套件
模型部署插件:RT-AK
代码编写工具:RT-Thread Stdio 2.1.5

我就不按比赛要求写那种产品介绍类的东西了,技术平台直接上干货,模型部分使用yolo-fastest,模型流程图如下

1.jpg

1.jpg

1.jpg

使用RT-AK进行部署

基础运行命令

python aitools.py --project= --model= --model_name= --platform=k210 --clear

示例

$ D:Projectedge-aiRT-AKrt_ai_tools>python aitools.py --project=D:ProjectK210_Demok210_rthread_bsp --model=.Modelsmnist.tflite --model_name=mnist --platform=k210 --embed_gcc=D:Projectk210_third_toolsxpack-riscv-none-embed-gcc-8.3.0-1.2bin --dataset=.platformsplugin_k210datasetsmnist_datasets

部署成功示意图

1.jpg

在RT-Thread stdio中工程目录下更新软件包,将会使用到LCD,Camera,USART做监控串口,SPI1(wifi),以及co2传感器使用的i2c。setting中配置图如下

1.jpg

接下来就是软件包的包含,使用了sgp30和gps_rmc,rw007驱动软件包会自动包含,具体配置不做赘述(rw007驱动记得改频率不然用不了),会在整体开源后补充。

这里展示以下部分代码流程截图,首先进行硬件初始化和模型初始化

1.jpg

之后为了保证流畅运行,各外设进行了多线程的创建和处理

1.jpg

这里遇到了一个神奇的bug,将摄像头采集的图片裁剪后放入kpu中会倒是kpu的图像失败

只有不裁剪的240*320图片直接进入kpu中才能完美显示,这里重写了一个image_seg函数解决了这个问题,进入模型进行运算并对运算结果进行处理

1.jpg

之后就是屏幕显示onenet上传图片巴拉巴拉的就可以了,上传图片使用了http post,onenet自己的那个软件包不好用,这里就不赘述了。模型各类别的准确度如下图

1.jpg

因为抽烟这样的行为在屏幕中表现的实在是太小了,准确度相较于其他略有下降,在RTT-Draco上的运行时间约为360ms。这里没有办法插入视频,就从视频里截了一张识别的效果图。

1.jpg

到此,该项目完成了车辆定位,车内co2浓度检测,驾驶员不良行为检测等功能,且具备了声光震动提醒,基本符合疲劳驾驶监控系统的定位和要求。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。