【第三届】:“玄铁杯”RISC-V应用创新大赛(基于yolov5和OpenCv算法 — 智能警戒哨兵)

news2024/11/26 12:25:47


文章目录

前言

一、智能警戒哨兵是什么?

二、方案流程图

三、硬件方案

四、软件方案

五、演示视频链接

总结


前言

        最近参加了第三届“玄铁杯”RISC-V应用创新大赛,我的创意题目是基于  yolov5和OpenCv算法 — 智能警戒哨兵

        先介绍一下比赛:如下

赛事介绍:

        玄铁杯全球RISC-V应用创新大赛,由芯片开放社区发起,已连续举办至第三届。过去两年,大赛共吸引近3000名开发者参赛,产生500余份创意方案,涵盖工业智能、泛机器人、视觉及可穿戴设备、车载设备、碳中和、智慧社区、智慧家居等领域。


一、智能警戒哨兵是什么?

        创意方案主题:智能警戒哨兵系统

        方案:矽速 · LicheePi 4A  +  智能警戒哨兵  +  崇德队

        一、智能警戒哨兵 — 创意设计方案背景

        在现代社会中,交通安全一直是人们关注的重要问题之一。吸烟驾驶和疲劳驾驶是导致交通事故的常见原因之一,对驾驶员和乘客的生命安全构成威胁。为了提高道路安全,并减少交通事故的发生,我们需要一种创新的方法来监测车内吸烟行为和主驾驶员的疲劳程度。

        基于这个背景,我们提出了一种创意设计,利用矽速·LicheePi 4A开发板和摄像头来制作一个车内吸烟及主驾驶员是否疲劳驾驶的监测系统。该系统旨在通过实时监测车内吸烟行为以及主驾驶员的疲劳程度,提供及时的警示和提醒,以保障驾驶安全。

        通过图像处理算法和计算机视觉技术,我们可以对摄像头捕获的图像进行分析和处理。针对司机疲劳驾驶程度,并及时发出警报。    

        二、智能警戒哨兵 — 硬件设计

        1. 矽速·LicheePi 4A开发板:作为核心处理器,提供强大的计算能力和丰富的接口。

        2. 语音模块,用于语音提示和报警

        3. USB摄像头

        5. 显示屏显示模块

        三、智能警戒哨兵 — 主要软件设计

        在智能警戒哨兵的软件设计中,主要涉及领域:疲劳检测。这两个领域通过图像处理和计算机视觉算法相互交互,实现对驾驶员行为的监测和分析,以提供准确的警示和提醒。

        在疲劳检测领域,系统使用图像处理算法来实时分析驾驶员的眼睛状态、面部表情和头部姿态,以判断是否处于疲劳状态。具体的交互过程可以描述如下:

        1.驾驶员眼睛状态监测:系统通过图像处理算法实时分析驾驶员的眼睛状态,监测眼睛的闭合频率和眨眼频率。如果检测到驾驶员的眼睛频繁闭合或眨眼频率降低,系统将判断驾驶员处于疲劳状态。

        2.驾驶员面部表情分析:系统利用面部表情识别算法分析驾驶员的面部表情,例如嘴巴的张合程度和眉毛的位置。如果检测到驾驶员的嘴巴关闭时间较长或眉毛位置下降,系统将判断驾驶员处于疲劳状态。

        3. 头部姿态监测:系统通过头部姿态识别算法实时监测驾驶员的头部姿态,检测头部是否开始下沉。如果检测到驾驶员头部姿态下沉,系统将判断驾驶员处于疲劳状态。

        系统能够实时监测驾驶员的疲劳状态,并根据分析结果提供相应的警示和提醒。这种交互的人体+数据分析能力的整合使得系统能够准确地判断驾驶员的状态,提高道路安全性并降低交通事故的发生率。

二、方案流程图


三、硬件方案

板卡介绍:

        LicheePi 4A 是基于 Lichee Module 4A 核心板的 高性能 RISC-V Linux 开发板,以 TH1520 为主控核心(4xC910@1.85G, RV64GCV,4TOPS@int8 NPU, 50GFLOP GPU),板载最大 16GB 64bit LPDDR4X,128GB eMMC,支持 HDMI+MIPI 双4K 显示输出,支持 4K 摄像头接入,双千兆网口(其中一个支持POE供电)和 4 个 USB3.0 接口,多种音频输入输出(由专用 C906 核心处理)。

        LicheePi 4A 是截止目前(2023Q2)为止最强的 RISC-V SBC。性能约为上一代 RISC-V SBC VisionFive2的2倍;未开启专用指令集加速的情况下,性能逼近基于 ARM A72 的树莓派 4,在开启相关指令集加速的情况下,可以与树莓派 4 持平。而且最高具备 16GB 超大内存,是树莓派 4 最高配置 8GB 内存的两倍!

我个人使用实物图:

             

我个人使用usb摄像头:

                              


四、软件方案

        由window电脑pycharm编写程序,再由XFTP软件将程序放入licheepi 4A中,运行程序,由VNC远程桌面查看运行效果。

对坐标进行判断。

        疲劳驾驶检测系统的实现。它使用了图像处理库OpenCV和人脸识别库dlib来实时监测驾驶员的疲劳状态。系统通过摄像头捕获驾驶员的面部图像,然后分析眨眼频率、打哈欠频率等指标来评估驾驶员的疲劳程度。根据评估结果,系统会在界面上显示实时变化图表,并通过语音播报警告驾驶员。整个系统使用了wxPython构建了一个GUI界面,包括了图表展示、语音播报等功能。

        

主要使用的库:


五、演示视频链接

      【第三届】:“玄铁杯”RISC-V应用创新大赛(基于yolov5和OpenCv算法 — 智能警戒哨兵)_哔哩哔哩_bilibili

【第三届】:“玄铁杯”RISC-V应用创新大赛(基于yolov5和OpenCv算法 — 智能警戒哨兵)


总结

        通过以上设计方案,车内疲劳驾驶系统能够实时监测驾驶员的疲劳状态,提供及时的警示和提醒,以增强驾驶员的安全意识,减少交通事故的发生。这种基于视觉实现的系统可以有效地监测和预防驾驶员的疲劳驾驶和吸烟行为,提高道路安全性和乘车体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1301062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg抽取视频h264数据重定向

根据视频重定向技术解析中的 截获解码视频流的思路,首先需要解决如何输出视频码流的问题。 目前只针对h264码流进行获取,步骤如下: 打开mp4文件并创建一个空文件用于存储H264数据 提取一路视频流资源 循环读取流中所有的包(AVPacket),为…

pytorch中的归一化:BatchNorm、LayerNorm 和 GroupNorm

1 归一化概述 训练深度神经网络是一项具有挑战性的任务。 多年来,研究人员提出了不同的方法来加速和稳定学习过程。 归一化是一种被证明在这方面非常有效的技术。 1.1 为什么要归一化 数据的归一化操作是数据处理的一项基础性工作,在一些实际问题中&am…

【c++随笔16】reserve之后,使用std::copy会崩溃?

【c随笔16】reserve之后,使用std::copy会崩溃? 一、reserve之后,使用std::copy会崩溃?二、函数std::reserve、std::resize、std::copy1、std::resize:2、std::reserve:3、std::copy: 三、崩溃原因分析方案1、你可以使…

【概率方法】重要性采样

从一个极简分布出发 假设我们有一个关于随机变量 X X X 的函数 f ( X ) f(X) f(X),满足如下分布 p ( X ) p(X) p(X)0.90.1 f ( X ) f(X) f(X)0.10.9 如果我们要对 f ( X ) f(X) f(X) 的期望 E p [ f ( X ) ] \mathbb{E}_p[f(X)] Ep​[f(X)] 进行估计&#xff0…

极速学习SSM之SpringMVC笔记

文章目录 一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点 二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式:warc>引入依赖 3、配置web.xmla>默认配置方式b>扩展配置方式 4、创建请求控制器5、创建springMVC…

ansible中的角色

1.理解roles在企业中的定位及写法 查看创建目录结构 ansible - galaxy list 指定新的位置 vim ansible.cfg roles_path ~/.ansible/roles 建立项目 cd roles/ ansible-galaxy init vsftpd tree vsftpd/ 编辑任务执行(顺序)文件 vim vsftpd/tas…

selenium库的使用

来都来了给我点个赞收藏一下再走呗🌹🌹🌹🌹🌹 目录 一、下载需要用到的python库selenium 二、selenium的基本使用 1.在python代码引入库 2.打开浏览器 3.元素定位 1)通过id定位 2)通过标…

Go开发运维:Go服务发布到K8S集群

目录 一、实验 1.Go服务发布到k8s集群 二、问题 1.如何从Harbor拉取镜像 一、实验 1.Go服务发布到k8s集群 (1)linux机器安装go(基于CentOS 7系统) yum install go -y (2)查看版本 go version (3)创…

UE引擎 LandscapeGrass 实现机制分析(UE5.2)

前言 随着电脑和手机硬件性能越来越高,游戏越来越追求大世界,而大世界非常核心的一环是植被,目前UE5引擎提供给植被生成的主流两种方式为 手刷植被和LandscapeGrass(WeightMap程序化植被)。当然UE5.3推出新一代PCGFramework 节点程序化生成框…

办公word-从不是第一页添加页码

总结 实际需要注意的是,分隔符、分节符和分页符并不是一个含义 分隔符包含其他两个;分页符:是增加一页;分节符:指将文档分为几部分。 从不是第一页插入页码1步骤 1,插入默认页码 自己可以测试时通过**…

一文掌握Ascend C孪生调试

1 What,什么是孪生调试 Ascend C提供孪生调试方法,即CPU域模拟NPU域的行为,相同的算子代码可以在CPU域调试精度,NPU域调试性能。孪生调试的整体方案如下:开发者通过调用Ascend C类库编写Ascend C算子kernel侧源码&am…

784. 字母大小写全排列

字母大小写全排列 描述 : 给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。 题目 : LeetCode 784.字母大小写全排列 : 784. 字母大小写全排列 分析…

JavaScript常用技巧专题二

文章目录 一、前言二、生成随机字符串三、转义HTML特殊字符四、单词首字母大写五、将字符串转换为小驼峰六、删除数组中的重复值七、移除数组中的假值八、获取两个数字之间的随机数九、将数字截断到固定的小数点十、日期10.1、计算两个日期之间天数10.2、从日期中获取是一年中的…

fd信息查看

一、/proc/pid/fdinfo和/proc/pid/fd的含义 二、实例 ref: linux下的/proc/pid/fdinfo和/proc/pid/fd_proc/417/fdinfo/0-CSDN博客 linux select read阻塞_图解Linux的IO模型和相关技术-CSDN博客

实现加盐加密方法以及java nio中基于MappedByteBuffer操作大文件

自己实现 传统MD5可通过彩虹表暴力破解, 加盐加密算法是一种常用的密码保护方法,它将一个随机字符串(盐)添加到原始密码中,然后再进行加密处理。 1. 每次调用方法产生一个唯一盐值(UUID )密码…

生产问题: 利用线程Thread预加载数据缓存,其它类全局变量获取缓存偶发加载不到

生产问题: 利用线程Thread预加载数据缓存偶发加载不到 先上代码 public class ThreadTest {//本地缓存Map<String, Object> map new HashMap<String, Object>();class ThreadA implements Runnable{Overridepublic void run() {System.out.println("Thread…

【崩坏:星穹铁道】卡芙卡狂喜!1.5版本新遗器值不值得刷?

《崩坏&#xff1a;星穹铁道》在1.5版本上线了4套新的遗器套装&#xff0c;照例还是两套外圈遗器两套内圈遗器&#xff0c;分别可以通过幽冥之径侵蚀隧洞副本和模拟宇宙第八世界刷取。 那么本期闲游盒小盒子就简单解析一下这4套新遗器&#xff0c;它们的属性适合哪些角色&#…

2021版吴恩达深度学习课程Deeplearning.ai 05序列模型 12.5

学习内容 05.序列模型 1.1 为什么用序列模型 1.序列模型常见的应用 1.2 注释 notation 1.*T_x(i)表示训练样本x(i)的序列长度&#xff0c;T_y(i)表示target(i)的序列长度2.训练集表示单词的方式*构建字典的方式*在训练集中查找出现频率最高的单词*网络搜集常用字典3.如果遇…

微服务——服务保护Sentinel

雪崩问题 在单体项目里面&#xff0c;如果某一个模块出问题会导致整个项目都有问题。 在微服务项目里面&#xff0c;单独一个服务出问题理论上是不会影响别的服务的。 但是如果有别的业务需要调用这一个模块的话还是会有问题。 问题产生原因和解决思路 最初那只是一个小小…

GEE影像升尺度(10m->250m)

GEE影像升尺度&#xff08;10m->250m&#xff09; 代码 var ext /* color: #d63000 *//* shown: false *//* displayProperties: [{"type": "rectangle"}] */ee.Geometry.Polygon([[[108.74625980473367, 28.562445155322063],[108.74625980473367, …