当前位置: 首页 > news >正文

基于深度学习的驾驶员疲劳监测系统的设计与实现

点击以下链接获取源码:
https://download.csdn.net/download/qq_64505944/88421622?spm=1001.2014.3001.5503

基于深度学习的驾驶员疲劳监测系统的设计与实现

1 绪论
在21世纪,各国的经济飞速发展,人民越来越富裕,道路上的汽车也逐年增多,根据交通管理局的相关统计,到2022年,我国的汽车保有量已经高达3.02亿辆。在给人们带来生活便利的同时,交通事故发生的频率也在随着汽车保有量的升高而逐年攀升,这给交通安全带来了非常严峻的挑战。尤其对于出租车、公交车等公共交通,一旦发生意外,后果是非常严重的。我国由于发生交通事故而死亡的人数一直位于世界前列,交通安全问题受到越来越多学者的关注。
交通事故是由驾驶员、道路条件、汽车损坏等多重因素导致的,但大部分交通事故的缘由是驾驶员的不安全行为。驾驶员的不安全行为有疲劳驾驶、疲劳驾驶、酒后驾驶等,都会在一定程度上导致交通事故的发生。早期的研究主要集中在研究驾驶员疲劳驾驶方向,而实际上疲劳驾驶更为常见。根据美国印第安纳大学的相关调研数据,有高达90%的交通事故均与驾驶员的行为有密切的联系,是由驾驶员的不当操作引发的,疲劳驾驶成为导致交通事故的最大“杀手”。根据交通管理局相关研究表明,我国每年发生约200万起的交通事故,这其中由于驾驶员疲劳驾驶而导致的交通事故占据了高达80%的比。
根据国际标准化组织( ISO )的定义,疲劳驾驶指的是驾驶员在驾驶时,将自身注意力分散的指向与正常驾驶不相干的行为,如瞌睡点头、打哈欠、向后座拿东西等行为,疲劳驾驶是一个常见的并极其危险的行为。有研究表明,边开车边打电话,交通事故发生的几率会增加4倍;边开车边喝水,增加1.5倍;开车与旁人交谈,增加0.6倍;当驾驶员注视其他目标超过2秒时,交通事故发生的几率也会增加3倍以。从这些数据来看,疲劳驾驶是不可忽视的安全性问题,如果能够对驾驶员的危险行为进行实时准确的检测并提醒,就可以在源头上降低交通事故发生的几率,这是社会强烈的需求。但是目前,在驾驶员疲劳行为识别方面,得到实际广泛应用的产品暂时还没有出现。
随着二十一世纪以来计算机科学的飞速发展,计算机在计算能力方面已经远远超越十年前,并且信息交流趋向全球化,数据可以通过各种各样的渠道采集,数据集不再是问题,深度学习发展速度飞快,出现了很多效果优秀的卷积神经网络模型)。如dlib库里面的深度残差网络ResNet已经可以有很高准确率的识别了
本文就驾驶员疲劳行为识别进行研究,将深度学习技术应用到疲劳驾驶研究领域中,在一定程度上,对开展疲劳驾驶识别领域具有一定的意义。

1.1 驾驶员疲劳监测系统发展现状
在多年来,关于驾驶员异常行为的识别一直是一个比较热门的研究方向,早期主要集中在研究驾驶员疲劳驾驶方向。近几年,国内外关于驾驶员异常疲劳行为的识别研究逐渐增多。
研究人员对于驾驶员疲劳行为识别大致分为三类,基于生理数据、基于行驶车辆数据以及驾驶员行为数据。早期的研究人员利用人体生理数据来检测驾驶员的疲劳程度,如心电图、脑电图等,这类方法需要让驾驶员在身上时刻戴生理特征传感器,带来极大的不便;另一类研究人员利用行驶车辆数据来检测驾驶员的疲劳行为,如行驶速度、方向盘运动等,这类方法检测速度不够快,不适用于实时的检测疲劳行为;随着深度学习、计算机视觉I20等技术领域的兴起,越来越多的学者开始利用驾驶员行为数据进行疲劳行为的检测。

1.2 设计内容及问题
本系统主要是使用Python的opencv和dlib库函数,实现驾驶员疲劳监测系统的各种信息的采集与功能的实现,通过各种脸部,眼球坐标收集而来的信息来进行计算,通过计算出的前后数据对比即可判定驾驶员是否疲劳
本系统达到的目标如下:
(1)打哈欠监测模块:嘴巴张大且相对较长时间保持这一状态,记录一次。
(2)眨眼监测模块:眼睛微闭,此时眨眼次数增多,且眨眼速度变慢,记录一次。
(3)点头监测模块:瞌睡点头,记录一次。
(4)可视化界面模块:拥有参数调整功能,和疲劳类型的检查以及脱岗监测。

2 系统需求分析与结构
2.1 驾驶员疲劳监测系统的需求分析
2.1.1 需求概论
近针对危险驾驶行为所导致的大量交通事故问题,世界各国已出台一系列法律法规来进行应对。但执法难、取证难、监管人力成本高使得危险驾驶行为难以杜绝。如果能从技术上对开车时的疲劳行为进行有效的监测,确保行为发生后能够及时发现与矫正,不仅能减少危险驾驶监管成本,还能大大降低交通事故发生概率。由于危险驾驶行为的危险性和高发性,国内外学者提出了多种驾驶行为监测技术方案,基于行车数据的驾驶行为监测需在车内安装传感器设备,由于传感器成本高,且该方法易受到道路环境的影响,所以很难投入到实际应用;基于驾驶员生理信号的驾驶行为监测需将生理信号提取设备戴到驾驶员身体上,除了设备本身存在价格昂贵、体积大的缺点外,还会影响驾驶员的驾驶操作,实用性较差。我们的目的就是寻找驾驶员疲劳检测系统成本更低的可行方案

2.1.2 用户需求
驾驶员疲劳监测系统是一个针对大多数普通人的开车安全保障,杜绝疲劳,杜绝疲劳。了解和分析大多数普通人的驾车习惯,需要实现系统的识别率高,制作成本低,购买价格低。系统要实现信息的采集,如人脸坐标、人眼坐标、嘴巴坐标,通过计算判断驾驶员是否疲劳。
根据分析,系统需满足一下用户需求:
(1)考虑到使用驾驶员疲劳监测系统的用户可能会是消费观念的人,购买汽车成本有限,需要降低使用的门槛,驾驶员疲劳监测系统控制需要准确率高便宜耐用,所有驾驶员的汽车都能普及。
(2)驾驶员疲劳监测系统需要有眨眼检测模块,打哈欠检测模块,瞌睡点头模块,可视化界面模块这四大功能模块。
(3)驾驶员疲劳监测系统需要长时间的开启,整个系统的功耗和稳定性要到达足够的水平。
(4)驾驶员疲劳监测系统需要直观的显示驾驶员的状态信息。

2.1.3 功能需求
通过对用户需求的分析,确定了本个系统功能由驾驶员眨眼检测模块,打哈欠监测功能模块,瞌睡点头功能模块总共三大功能模块组成。以下是各功能模块实现的具体功能:
(1)驾驶员眨眼检测模块功能需求:读取位置、瞳孔朝向、眼睛开合度、眨眼频率、瞳孔收缩率等数据,通过计算,如果超过疲劳标准连续3帧内,眼睛长宽比为 0.2,就认定为疲劳。
(2)打哈欠监测功能需求:嘴巴张大且相对较长时间保持这一状态,如果超过疲劳标准连续3帧内,嘴部长宽比为 0.5,就认定为疲劳。
(3)瞌睡点头功能模块的功能需求:采集人脸朝向数据,如果超过疲劳标准连续3帧内,pitch(x)旋转角为 0.3,就认定为疲劳。

2.2 驾驶员疲劳监测系统的可行性分析
可行性分析是通过对Python第三方库opencv和dlib库的整体函数和相关信息,从技术、经济、工程等方面进行整体的一个分析以及调查,进而提供一个综合性的系统的分析方法,为项目决策做准备。提出有关于驾驶员疲劳监测系统这个项目的投资价值和构建该项目的意见,可行性分析应具有前瞻性、公平性、稳定性、科学性的特点。

2.2.1 社会需求可行性分析
迄今为止,已经有越来越多的汽车搭载驾驶员疲劳监测系统,让人们的出行安全进一步的到保障,距离驾驶员疲劳监测系统的初次出现已经过去了很多年。世界上首个驾驶员疲劳监测系统的问世以来。世界各国都开始发展驾驶员疲劳监测系统。随着集成技术以及互联网技术的持续突破,驾驶员疲劳监测系统正式走进消费级市场,越来越低的价格也吸引了众多的消费者购买和使用搭载驾驶员疲劳监测系统的汽车。在国内,消费级的智能家居控制系统产品市场已经变得十分火热。各大科技厂商的入场,互联网上的有关辅助驾驶的信息的传递,以及汽车的普及都使得驾驶员疲劳监测系统跟越来越多的人有接触。越来越多的消费者都体验到了驾驶员疲劳监测系统带来的对安全的提升。社会对驾驶员疲劳监测系统的接受程度也大大的加强,驾驶员疲劳监测系统市场目前来说还没有饱和,还有发展空间。

2.2.2 系统技术可行性分析
驾驶员疲劳监测系统的软件部分主要使用的是Python,里面拥有大量的优秀的第三方库函数可以利用,如本次使用的主要是opencv和dlib库函数。Python有着方便快捷、学习成本低的优点,通过各种第三方的扩展库可以实现各种功能。
驾驶员疲劳监测系统主要使用的环境如下:Win11、Python3.9解释器、anaconda3、JupyterNotebook 技术
Opencv:图像处理
Dlib:一个很经典的用于图像处理的开源库,shape_predictor_68_face_landmarks.dat是一个用于人脸68个关键点检测的dat模型库,使用这个模型库可以很方便地进行人脸检测,并进行简单的应用。
Numpy:基于Python的n维数值计算扩展。
Imutils :一系列使得opencv 便利的功能,包括图像旋转、缩放、平移,骨架化、边缘检测、显示
matplotlib 图像(imutils.opencv2matplotlib(image)。
wx:python界面工具

2.3 驾驶员疲劳监测系统的结构

系统的总设计方案如下:

图2.1 系统设计结构图
3 驾驶员疲劳监测系统的设计
3.1 系统的开发环境
开发环境:Win11、Python3.6、anaconda3、JupyterNotebook 技术:
Opencv:图像处理
Dlib:一个很经典的用于图像处理的开源库,shape_predictor_68_face_landmarks.dat是一个用于人脸68个关键点检测的dat模型库,使用这个模型库可以很方便地进行人脸检测,并进行简单的应用。
Numpy:基于Python的n维数值计算扩展。
Imutils :一系列使得opencv 便利的功能,包括图像旋转、缩放、平移,骨架化、边缘检测、显示
matplotlib 图像(imutils.opencv2matplotlib(image)。
wx:python界面工具

3.2 系统功能的设计
本系统能够通过打哈欠(嘴巴张大且相对较长时间保持这一状态)、眨眼(或眼睛微闭,此时眨眼次数增多,且眨眼速度变慢)、点头(瞌睡点头)。本实验从人脸朝向、位置、瞳孔朝向、眼睛开合度、眨眼频率、瞳孔收缩率等数据入手,并通过这些数据,实时地计算出驾驶员的注意力集中程度,分析驾驶员是否疲劳驾驶和及时作出安全提示。

3.2.1 眨眼监测功能的设计
本功能能够收集眼部各种信息并作出是否疲劳的判断,功能图如图3.1所示

图3.1 眨眼监测功能功能图
眨眼监测功能的主要代码是eye.py,通过摄像头采集到的眼球坐标数据并进行一些预算判断是否疲劳

如果在连续3帧内,眼睛长宽比超过 0.2就可以认定为疲劳了
图3.2 眼球坐标的处理
眨眼的判定条件

图3.3 眨眼判定条件

图3.4眨眼计数

3.2.2 打哈欠监测功能的设计
基于dlib人脸识别68特征点检测、获取嘴部面部标志的索引,通过opencv对视频流进行灰度化处理,检测出人嘴的位置信息。
人脸特征点检测用到了dlib,dlib有两个关键函数:dlib.get_frontal_face_detector()和dlib.shape_predictor(predictor_path)。

前者是内置的人脸检测算法,使用HOG pyramid,检测人脸区域的界限(bounds)。
后者是用来检测一个区域内的特征点,并输出这些特征点的坐标,它需要一个预先训练好的模型(通过文件路径的方法传入),才能正常工作。
使用开源模型shape_predictor_68_face_landmarks.dat,可以得到68个特征点位置的坐标,连起来后,可以有如图所示的效果(红色是HOG pyramid检测的结果,绿色是shape_predictor的结果,仅把同一个器官的特征点连线)
嘴巴张大且相对较长时间保持这一状态就会被认定为疲劳。

图3.5 打哈欠监测功能功能图

思路:双阈值法哈欠检测——即对内轮廓进行检测:结合张口度与张口时间。
Yawn为符合打哈欠的帧数,N为1min内总帧数,设阈值为10%,当Freq>10%时认为打了一个深度哈欠或者至少连续两个浅哈欠,此时给出疲劳提醒,关键代码如图3.6所示。

图3.6 嘴巴坐标数据处理代码图

计算嘴巴的开合度和次数运行效果如图3.7

图3.7 打哈欠监测的运行图

3.2.3 瞌睡点头功能的设计

如何确定疲劳思路一:可利用姿态估计结果(如Pitch的读数)来判断是否点头及点头幅度
如何确定疲劳思路二:或用鼻尖处30号点的前后移动值(或是方差,方差表示一个单位时间数据的偏离程度,程度越大,则表示发生点头动作的概率越大、点头幅度越大)代码图如3.9所示。

图3.9 设计思路代码图

欧拉角也是非常适合来检测是否点头的函数,在本文中也应用了这种技术。核心代码如图3.10所示。

图3.10 点头欧拉角核心代码图

图3.11 运行结果图

3.2.4 可视化界面的设计
本功能主要是由wxFormBuilder编辑的,主要结构图如图3.12所示。

图3.12 主要结构图

图3.13 主要界面图

设计思路眨眼监测,打哈欠监测,瞌睡点头监测是并行的,多线程同时运行,以确保每个环节都不出错

3.14多线程代码图

在本次测试中除了认定为眨眼,打哈欠,瞌睡点头等标准之外,我还设定了在这些行为达到多少次就会认定为疲劳驾驶,确定疲劳提示:眨眼50次,打哈欠5次,瞌睡点头8次

图3.15认定标准图
4 系统测试
4.1 测试内容
4.1.1 软件部分测试
打开摄像头测试能否检测或识别到上述所述功能。测试用例如下:
眨眼测试

打哈欠测试

瞌睡点头测试

视频识别测试

4.2 测试结果
本次测试测试了系统的所有功能,目前系统通过了本次测试的所有测试,表明系统目前可以稳定正常的运行。

5 总结与改进
5.1驾驶员疲劳监测系统总结
本设计利用已有的计算机视觉库可以实现很多好玩和有用的应用,本文只是粗略地展示了一个进行实时人脸识别的dlib,还有很多可以改善的点来提高精度和效率,比如人脸受角度、表情影响很大,或者需要处理速度要求更高的场景;同时图像类别规模很大的情况下如何保证效果,如何优化这些都是难点。另外dlib中的提供的这些模型都是已经训练好的,我们可以到官方demo下载,demo给出了在一些benchmark中的效果,也可以自己训练得到这些模型,当然前提是你需要有GPU,并且要求很大量的数据以及丰富的调参经验,这些也都是深度学习中的点。

参考文献

学习记录参考:
cungudafa博客:Dlib模型之驾驶员疲劳检测系列(眨眼、打哈欠、瞌睡点头、可视化界面)
https://blog.csdn.net/cungudafa/article/details/103477960
https://blog.csdn.net/cungudafa/article/details/103496881
https://blog.csdn.net/cungudafa/article/details/103499230

谢 辞

光阴似箭,日月如梭。伴随着专业综合实训论文初稿的完成,大学最后一个作品专业综合实训也到达了尾声。
在此,我要首先感谢北京理工大学珠海学院全体老师在大学里对我的教导与栽培,感谢计算机学院所有的老师在大学来对学生的付出。老师们不仅教会我书里面的知识,还有教了我很多书里学不到的东西,教会了我如何一个人钻研学习,教会了我学会一个人思考,还教会我社会不是单打独斗,还要学会团队合作才能成为一个被社会需要的人。我还要感谢我的父母和同学朋友,他们每次都在我最需要帮助的时候给我鼓励与支持,帮我度过一个个难关。
本实训设计是由胡敬朋老师的悉心教导下完成的。从选题,到开题报告再到完成实训论文,这整个过程中都是胡敬朋老师在耐心的指导我完成。碰到不懂的技术问题,胡敬朋老师也仔细的给我讲解。我从胡敬朋老师感受到了对技术的认真和对教育事业的热情,从中我也学到了很多,胡老师的严格要求也让我努力成为更好的自己。
大学的青春是人生最美好的时间,希望多年以后会想起这段时间,只有美好的回忆。

附 录

附录1 eye.PY的代码

main.py代码

相关文章:

基于深度学习的驾驶员疲劳监测系统的设计与实现

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88421622?spm1001.2014.3001.5503 基于深度学习的驾驶员疲劳监测系统的设计与实现 1 绪论 在21世纪,各国的经济飞速发展,人民越来越富裕,道路上的汽车也逐…...

B树、B+树详解

B树 前言   首先,为什么要总结B树、B树的知识呢?最近在学习数据库索引调优相关知识,数据库系统普遍采用B-/Tree作为索引结构(例如mysql的InnoDB引擎使用的B树),理解不透彻B树,则无法理解数据…...

使用hugging face开源库accelerate进行多GPU(单机多卡)训练卡死问题

目录 问题描述及配置网上资料查找1.tqdm问题2.dataloader问题3.model(input)写法问题4.环境变量问题 我的卡死问题解决方法 问题描述及配置 在使用hugging face开源库accelerate进行多GPU训练(单机多卡)的时候,经常出现如下报错 [E Process…...

IDEA 修改插件安装位置

不说假话,一定要看到最后,不然你以为我为什么要自己总结!!! IDEA 修改插件安装位置 前言步骤 前言 IDEA 默认的配置文件均安装在C盘,使用时间长会生成很多文件,这些文件会占用挤兑C盘空间&…...

牛客网SQL160

国庆期间每类视频点赞量和转发量_牛客题霸_牛客网 select * from ( select tag,dt, sum(单日点赞量)over(partition by tag order by dt rows between 6 preceding and 0 following), max(单日转发量)over(partition by tag order by dt rows between 6 preceding and 0 follo…...

HDFS Java API 操作

文章目录 HDFS Java API操作零、启动hadoop一、HDFS常见类接口与方法1、hdfs 常见类与接口2、FileSystem 的常用方法 二、Java 创建Hadoop项目1、创建文件夹2、打开Java IDEA1) 新建项目2) 选择Maven 三、配置环境1、添加相关依赖2、创建日志属性文件 四、Java API操作1、在HDF…...

论文阅读之【Is GPT-4 a Good Data Analyst?(GPT-4是否是一位好的数据分析师)】

文章目录 论文阅读之【Is GPT-4 a Good Data Analyst?(GPT-4是否是一位好的数据分析师)】背景:数据分析师工作范围基于GPT-4的端到端数据分析框架将GPT-4作为数据分析师的框架的流程图 实验分析评估指标表1:GPT-4性能表现表2&…...

【数据结构】:二叉树与堆排序的实现

1.树概念及结构(了解) 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的有一个特殊的结点&#…...

纯css手写switch

CSS 手写switch 纯css手写switchcss变量 纯css手写switch 思路: switch需要的元素有:开关背景、开关按钮。点击按钮后,背景色变化,按钮颜色变化,呈现开关打开状态。 利用typecheckbox,来实现switch效果(修…...

PyTorch 深度学习之处理多维特征的输入Multiple Dimension Input(六)

1.Multiple Dimension Logistic Regression Model 1.1 Mini-Batch (N samples) 8D->1D 8D->2D 8D->6D 1.2 Neural Network 学习能力太好也不行(学习到的是数据集中的噪声),最好的是要泛化能力,超参数尝试 Example, Arti…...

LeetCode【438】找到字符串中所有字母异位词

题目&#xff1a; 注意&#xff1a;下面代码勉强通过&#xff0c;每次都对窗口内字符排序。然后比较字符串。 代码&#xff1a; public List<Integer> findAnagrams(String s, String p) {int start 0, end p.length() - 1;List<Integer> result new ArrayL…...

关于LEFT JOIN的一次理解

先看一段例子&#xff1a; SELECTproduct_half_spu.id AS halfSpuId,product_half_spu.half_spu_code,product_half_spu.half_spu_name,COUNT( product_sku.id ) AS skuCount,product_half_spu.create_on,product_half_spu.create_by,product_half_spu.upload_pic_date,produc…...

各报文段格式集合

数据链路层-- MAC帧 前导码8B&#xff1a;数据链路层将封装好的MAC帧交付给物理层进行发送&#xff0c;物理层在发送MAC帧前&#xff0c;还要在前面添加8字节的前导码&#xff08;分为7字节的前同步码1字节的帧开始定界符&#xff09;MAC地址长度6B数据长度46&#xff5e;1500B…...

【算法-动态规划】最长公共子序列

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...

区块链游戏的开发流程

链游&#xff08;Blockchain Games&#xff09;的开发流程与传统游戏开发有许多相似之处&#xff0c;但它涉及到区块链技术的集成和智能合约的开发。以下是链游的一般开发流程&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&…...

目标检测网络系列——YOLO V2

文章目录 YOLO9000better,更准batch Normalization高分辨率的训练使用anchor锚框尺寸的选择——聚类锚框集成改进——直接预测bounding box细粒度的特征图——passthrough layer多尺度训练数据集比对实验VOC 2007VOC 2012COCOFaster,更快网络模型——Darknet19训练方法Strong…...

15. Java反射和注解

Java —— 反射和注解 1. 反射2. 注解 1. 反射 动态语言&#xff1a;变量的类型和属性可以在运行时动态确定&#xff0c;而不需要在编译时指定 常见动态语言&#xff1a;Python&#xff0c;JavaScript&#xff0c;Ruby&#xff0c;PHP&#xff0c;Perl&#xff1b;常见静态语言…...

pdf处理工具 Enfocus PitStop Pro 2022 中文 for mac

Enfocus PitStop Pro 2022是一款专业的PDF预检和编辑软件&#xff0c;旨在帮助用户提高生产效率、确保印刷品质量并减少错误。以下是该软件的一些特色功能&#xff1a; PDF预检。PitStop Pro可以自动检测和修复常见的PDF文件问题&#xff0c;如缺失字体、图像分辨率低、颜色空…...

微信小程序入门开发教程

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…...

php函数

1. strstr() 返回a在b中的第一个位置 2.substr() 截取字符串 3.PHP字符串函数parse_str(将字符串解析成多个变量)-CSDN博客 4.explode() 字符串分割为数组 5.trim&#xff08;&#xff09; 1.去除字符串两边的 空白字符 2.去除指定字符 6.extract()函数从数组里…...

3.3 封装性

思维导图&#xff1a; 3.3.1 为什么要封装 ### 3.3.1 为什么要封装 **封装**&#xff0c;在Java的面向对象编程中&#xff0c;是一个核心的思想。它主要是为了保护对象的状态不被外部随意修改&#xff0c;确保数据的完整性和安全性。 #### **核心思想&#xff1a;** - 保护…...

Redis魔法:点燃分布式锁的奇妙实现

分布式锁是一种用于在分布式系统中控制对共享资源的访问的锁。它与传统的单机锁不同&#xff0c;因为它需要在多个节点之间协调以确保互斥访问。 本文将介绍什么是分布式锁&#xff0c;以及使用Redis实现分布式锁的几种方案。 一、前言 了解分布式锁之前&#xff0c;需要先了…...

iOS 项目避坑:多个分类中方法重复实现检测

#前言 在项目中,我们经常会使用分类 -> category。category在实际项目中一般有两个左右:1.给已有class增加方法,扩充起能力、2.将代码打散到多个文件中,避免因为一个类过于复杂而导致代码篇幅过长(应用于viewController中很好用) 但是 category 也有很多弊端~ **首…...

【003】EIS数据分析_#LIB

EIS数据分析 1. EIS测试及数据获取2. EIS数据分析2.1 EIS曲线划分 1. EIS测试及数据获取 点击查看往期介绍 2. EIS数据分析 2.1 EIS曲线划分 一般来说&#xff0c;实轴处的截获表示体电阻(Rb)&#xff0c;它反映了电解质&#xff0c;隔膜和电极的电导率。高频区的半圆对应于…...

Sprint framework Day07:注解结合 xml 配置

前言 Spring注解结合XML配置是指在Spring应用中&#xff0c;使用注解和XML配置的方式来进行Bean的定义、依赖注入和其他配置。这种方式可以充分利用Spring框架的注解和XML配置两种不同的配置方式的特点。 在Spring框架中&#xff0c;我们可以使用注解来定义Bean&#xff0c;如…...

LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流

LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流 1、背景2、设备接入播放2.1、查看通道2.2、直播播放 3、默认收流地址配置4、其它网络设备收流配置5、搭建GB28181视频直播平台 1、背景 服务器部署的时候&#xff0c;可能有多个网卡多个…...

js题解(四)

文章目录 批量改变对象的属性判断是否包含数字判断是否符合指定格式 批量改变对象的属性 给定一个构造函数 constructor&#xff0c;请完成 alterObjects 方法&#xff0c;将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。 function alterObjects(const…...

如何进行大数运算和高精度计算?

大数运算和高精度计算是在计算机编程中常见的需求&#xff0c;尤其是当处理大整数、分数、复数、浮点数等需要更多位数的数据时。在C语言中&#xff0c;由于原生的数据类型有限&#xff0c;您需要使用自定义的数据结构和算法来执行大数运算和高精度计算。在本文中&#xff0c;我…...

身份证读卡器跟OCR有何区别?哪个好?

二代身份证读卡器&#xff08;以下简称读卡器&#xff09;和OCR&#xff08;光学字符识别&#xff09;是两种常见的身份证信息获取技术&#xff0c;它们在原理、功能和应用方面存在一些区别。下面将详细介绍二者的区别并探讨哪个更好。 1. 原理&#xff1a; - 读卡器&#xff…...

华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 网络监控神器 bmon

华为云云耀云服务器L实例评测 &#xff5c; 实例评测使用之硬件参数评测&#xff1a;华为云云耀云服务器下的 Linux 网络监控神器 bmon 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什…...

C++ 设计模式 —— 组合模式

C 设计模式 —— 组合模式 0. 引用连接 本文主要的思路和代码&#xff0c;来自于对以下连接的学习和实现&#xff1a; 组合模式 1. 引言 1.1 什么是组合模式&#xff1f; 组合模式的定义组合模式的作用 组合模式是一种行为型设计模式&#xff0c;它将对象组合成树形结构以…...

华为云Stack的学习(九)

十、华为云Stack灾备服务介绍 1.云硬盘备份VBS 云硬盘备份服务&#xff08;VBS&#xff0c;Volume Backup Service&#xff09;可为云硬盘&#xff08;EVS&#xff0c;Elastic Volume Service&#xff09;创建备份&#xff0c;利用备份数据恢复云硬盘&#xff0c;最大限度保障…...

Flink中jobmanager、taskmanager、slot、task、subtask、Parallelism的概念

场景 一个工厂有三个车间每个车间两条生产线 生产流程如下 原料->加工->过滤->分类->美化->包装->下线 JobManager&#xff1a;工厂 在上述场景中&#xff0c;工厂就是jobManager&#xff0c;负责协调、调度和监控整个生产过程 TaskManager&#xff1a;车间…...

OpenHarmony docker环境搭建

OpenHarmony docker环境搭建 要求一台安装ubuntu的虚拟机,vscode软件 安装docker 在 Ubuntu 上安装 Docker 非常直接。我们将会启用 Docker 软件源&#xff0c;导入 GPG key&#xff0c;并且安装软件包。 首先&#xff0c;更新软件包索引&#xff0c;并且安装必要的依赖软件…...

【计算机网络】网络编程接口 Socket API 解读(11)

Socket 是网络协议栈暴露给编程人员的 API&#xff0c;相比复杂的计算机网络协议&#xff0c;API 对关键操作和配置数据进行了抽象&#xff0c;简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍&#xff0c;从而更好的理解 socket 编程。…...

Qt工具开发,该不该跳槽?

Qt工具开发&#xff0c;该不该跳槽? 就这样吧&#xff0c;我怕你跳不动。 嵌入式UI&#xff0c;目前趋势是向着LVGL发展。QT已经在淘汰期了。很多项目还在用&#xff0c;但技术上已经落后。QT短期内不会全面淘汰&#xff0c;但退位让贤的大趋势已经很清楚了。 最近很多小伙伴…...

【深度学习】DDPM,Diffusion,概率扩散去噪生成模型,原理解读

看过来看过去&#xff0c;唯有此up主&#xff0c;非常牛&#xff1a; Video Explaination(Chinese) 1. DDPM Introduction q q q - 一个固定&#xff08;或预定义&#xff09;的正向扩散过程&#xff0c;逐渐向图像添加高斯噪声&#xff0c;直到最终得到纯噪声。 p θ p_θ p…...

HT8699:内置 BOOST 升Y双声道音频功率放大器

HT8699是一款内置BOOST升Y模块的立体声音频功率放大器。HT8699具有AB类和D类切换功能&#xff0c;在受到D类功放EMI干扰困扰时&#xff0c;可切换至AB类音频功放模式。 在D类模式下&#xff0c;内置的BOOST升Y模块可通过外置电阻调节升Y值&#xff0c;即使是锂电池供电&#xf…...

利达卓越:关注环保事业,持续赋能科技

随着全球环境问题的日益突出,绿色金融作为一种新兴的金融模式逐渐受到各国的重视。绿色金融是指在金融活动中,通过资金、信贷和风险管理等手段,支持环境友好和可持续发展的项目和产业。绿色金融的出现是为了应对气候变化、资源短缺、污染问题等现实挑战,促进经济的绿色转型和可…...

Spring MVC中通过配置文件配置定时任务

Spring MVC中配置定时任务&#xff08;配置文件方式&#xff09; 1.步骤 1.步骤 1-1 在springmvc.xml&#xff08;配置文件&#xff09;的beans中添加 xmlns:task"http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http…...

AI项目十六:YOLOP 训练+测试+模型评估

若该文为原创文章&#xff0c;转载请注明原文出处。 通过正点原子的ATK-3568了解到了YOLOP&#xff0c;这里记录下训练及测试及在onnxruntime部署的过程。 步骤&#xff1a;训练->测试->转成onnx->onnxruntime部署测试 一、前言 YOLOP是华中科技大学研究团队在2021年…...

Flink报错could not be loaded due to a linkage failure

文章目录 1、报错2、原因3、解决 1、报错 在Flink上提交作业&#xff0c;点Submit没反应&#xff0c;F12看到接口报错信息为&#xff1a; 大概意思是&#xff0c;由于链接失败&#xff0c;无法加载程序的入口点类xx。没啥鸟用的信息&#xff0c;去日志目录继续分析&#xff1a…...

网络工程师--网络安全与应用案例分析

前言 需要网络安全学习资料的点击链接&#xff1a;【282G】网络安全&黑客技术零基础到进阶全套学习大礼包&#xff0c;免费分享&#xff01; 案例一&#xff1a; 某单位现有网络拓扑结构如下图所示&#xff0c;实现用户上网功能&#xff0c;该网络使用的网络交换机均为三…...

了解油封对汽车安全的影响?

油封也称为轴封或径向轴封&#xff0c;是车辆发动机、变速箱和其他各种机械系统中的重要部件。它们的主要功能是阻止重要发动机部件的液体(例如油或冷却剂)泄漏&#xff0c;同时防止污染物进入。这些看似简单的任务&#xff0c;但对汽车的安全性和可靠性有着深远的影响。 油封…...

创邻科技Galaxybase—激活数据要素的核心引擎

10月11日下午&#xff0c;创邻科技创始人张晨博士受杭州电子科技大学邀请&#xff0c;前往杭电校园开展交流分享。交流会中&#xff0c;张晨博士为现场的师生带来一场题为《图数据库——激活数据要素的新基建》的精彩分享&#xff0c;探讨数字经济时代底层技术的创新价值与图技…...

【Rust笔记】浅聊 Rust 程序内存布局

浅聊Rust程序内存布局 内存布局看似是底层和距离应用程序开发比较遥远的概念集合&#xff0c;但其对前端应用的功能实现颇具现实意义。从WASM业务模块至Nodejs N-API插件&#xff0c;无处不涉及到FFI跨语言互操作。甚至&#xff0c;做个文本数据的字符集转换也得FFI调用操作系统…...

玻璃生产过程中的窑内压力高精度恒定控制解决方案

摘要&#xff1a;在玻璃生产中对玻璃窑炉中窑压的要求极高&#xff0c;通常需要控制微正压4.7Pa&#xff08;表压&#xff09;&#xff0c;偏差控制在0.3Pa&#xff0c;而窑炉压力还会受到众多因素的影响&#xff0c;所以实现高稳定性的熔窑压力控制具有很大难度&#xff0c;为…...

创意营销:初期推广的多种策略!

文章目录 &#x1f34a; 预热&#x1f389; 制定预热计划和目标&#x1f389; 利用社交媒体传播&#x1f389; 创造独特的体验&#x1f389; 利用口碑营销&#x1f389; 定期发布更新信息&#x1f389; 案例说明 &#x1f34a; 小范围推广&#x1f389; 明确目标用户群体&#…...

【小黑嵌入式系统第一课】嵌入式系统的概述(一)

文章目录 一、嵌入式系统基本概念计算机发展的三大阶段CPU——计算机的核心什么是嵌入式系统嵌入式系统的分类 二、嵌入式系统的特点三、嵌入式系统发展无操作系统阶段简单操作系统阶段实时操作系统阶段面向Internet阶段 四、嵌入式系统的应用工业控制 工业设备通信设备信息家电…...

RK平台使用MP4视频做开机动画以及卡顿问题

rk平台android11以后系统都可以使用MP4格式的视频做开机动画,系统源码里面默认使用的是ts格式的视频,其实使用mp4的视频也是可以的。具体修改如下: diff --git a/frameworks/base/cmds/bootanimation/BootAnimation.cpp b/frameworks/base/cmds/bootanimation/BootAnimat…...