python代码查重-k-means algorithm代写-Python code代写
python代码查重

python代码查重-k-means algorithm代写-Python code代写

需求书

python代码查重 环境:Python语言,Pycharm、opencv平台,Visual studio2017实现:做一个简易版疲劳监测系统(简称SFMS)实现功能模块:图像采集——电脑摄像头,在opencv平台使用函数提取,并抽帧图像预处理——用YCgCr肤色检测模型过滤图像的复杂背景,初步筛选出人脸区域

环境:Python语言,Pycharm、opencv平台,Visual studio2017

实现:做一个简易版疲劳监测系统(简称SFMS)

实现功能模块:

图一

系统实现流程:

图二

疲劳状态判定的阈值参数:

图三

各模块实现使用算法:

python代码查重
python代码查重

人脸识别模块: python代码查重

图像采集——电脑摄像头,在opencv平台使用函数提取,并抽帧

图像预处理——用YCgCr肤色检测模型过滤图像的复杂背景,初步筛选出人脸区域

人脸定位——利用Haar特征训练AdaBoost多视角人脸分类器对人脸进行精准定位

人脸、特征点跟踪——基于卡尔曼滤波的人脸跟踪算法。卡尔曼滤波是一种递归的估计,只要获知上一时刻状态的估计值以及当前状态的观测值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息。

卡尔曼滤波算法主要是由预估和校正两部分组成。它利用时间更新方程建立对当前状态的先验估计,及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计值;校正过程负责反馈,利用测量更新方程在预估过程的先验估计值及当前测量变量的基础上建立起对当前状态的改进的后验估计。

特征提取——基于Dlib库的人脸68特征点检测方法。基于Dlib库的人脸上68个特征关键点检测图,利用Dlib训练好的“shape_predictor_68_face_land-marks.dat”模型,从视频流中得到人脸68个关键点,根据驾驶员眼部及嘴部相关点坐标计算对应指标来判定其是否疲劳。

我们截取其中需要的脸部特征——眼睛和嘴巴。人的左右眼各有6个关键点(36-41和42-47),我们通过式子(2)可以得到眼睛长宽比,设置阈值,超出阈值,就判定为闭眼。人嘴部正常闭合时,上下嘴唇之间的高度为 h(62-66)=0、左右嘴角之间的宽度 w(48-54)为一定值,当开始说话时 h(62-66)变大、w(48-54)减小,深度疲劳打哈欠时h(62-66)最大、w(48-54)最小。根据式子(3)可以测算得出嘴巴张合比,同样设置阈值,这时不必再设置时间限制了,超出阈值即可判断驾驶员在打哈欠,是“疲劳状态”了。

            (2)

   (3)

疲劳预警——利用PERCLOS算法来进行疲劳程度判断。PERCLOS值得计算方法如式子(4)所示: python代码查重

PERCLOS=(闭合帧数/总有效帧数)×100%                           (4)

利用卡尔曼滤波进行人眼区域跟踪,随后采用 k-NN 分类器对 P70(闭眼70%)、P80(闭眼80%)、EM(闭眼50%)和正常(闭眼小于20%)四种状态的人眼进行分类。根据已有的研究表明,闭眼程度大于50%作为判定疲劳标准时,识别准确率可以达到94%。

对嘴部的张合状态的疲劳检测方式比较简单,通过设定阈值即可判断是否处于疲劳状态。而对于头部运动即点头频率的疲劳检测方法为判断低头时长,当监测到低头时长超过3.5个帧时,则判定为疲劳状态并对此进行报警提示。

驾驶风格识别模块:

驾驶风格识别技术的分类模块目的在于将驾驶转向、加速和制动情况做一个分类数据处理,通过对以上三种参数的经验型训练,把驾驶员的驾驶风格分为普通驾驶型、激进驾驶型和冷静驾驶型三类,由此可以预测分类为某种驾驶风格类型的驾驶员的疲劳驾驶状态。每位驾驶员的疲劳驾驶表现不同,对此做好分类是一种定制型的识别方法。

分类用k-means算法。

K-means聚类算法是根据数据集中样本的相似性将样本分为k簇,其模型的精确度与k值有关。缺点就是强制性的聚类使得每位驾驶员的驾驶风格只能是一种,但是实际应用中一个人的驾驶风格通常是多变的。这使得分类辨识结果在提高疲劳监测率的效果不明显。如图3-5表示的k-means聚类算法的伪代码可得知,该算法的时间复杂度为O(tknm),其中,t为迭代次数,k为簇的数目,n为样本点数,m为样本点维度。空间复杂度为O(m(n+k)),其中,k为簇的数目,m为样本点维度,n为样本点数。由此可看出k-means算法的复杂度不高,能够实现局部最优化。但是对于较模糊和较分散的数据的处理准确度不高。通过对数据进行预处理,处理操作包括数据归一化和数据标准化,不断地调试k值,可以实现对k-means聚类算法优化与改进处理。

驾驶风格的辨识模块采用利用CNN卷积神经网络模型对所有功能模块中需要用到训练集和测试集训练的部分进行应用。

k-means聚类算法的伪代码

驾驶行为识别模块:  python代码查重

先定位出人体关键特征点。根据时间序列来分析,一段时间内的人体关键特征点的变化和行动轨迹,从而判断所做出的的手势,进而得以识别。

OpenPose是基于卷积神经网络和监督学习的一种实时多人骨架提取算法,SFMS系统提取2D人体骨架对二维图像进行处理工作[2]。OpenPose算法需要先对人体特征点进行点定位,然后将点与点之间连接形成2D人体骨架。2D骨架的形成方法为在SFMS系统调用COCO_18检测模型,识别18个关节点,将相邻的关键点连接。通过之后建立的手势行为数据库,与实时监测定位到的18个关节点匹配,若这18个关节点的坐标与手势行为数据库中的数据匹配,那么说明存在打哈欠捂嘴,或者揉眼睛(遮盖眼部)的行为,进而判定疲劳状态,对此报警一分钟实现疲劳预警功能。如图所示,为二维的人体关键特征18点图。

首先,先对数据收集。采集手势视频,每个视频中包含一种手势,该手势为左手臂曲臂抬至嘴部附近,即人体特征点6和7的坐标变化,表示捂嘴或揉眼睛举动。视频时长1分钟,共采集两个不同司机的2段视频共4段视频,共收集30张手势图像。(视频从网上找即可,如果网上没有合适的照片再找我,我来录个视频)

其次,对数据库进行交叉验证。将4段视频随机分为训练集与测试集,采用留一法验证系统手势识别精度。

最后,进行在线测试。经测试,返回两个结果,一是判断是否有手势,二是识别手势类型,SFMS系统要求无手势识别准确率≥94%,手势类别识别准确率≥85%。

 

更多代写:计算机作业抄袭  act代考  数学代写  apa文中引用  research proposal范文  Report怎么写

合作平台:essay代写 论文代写 写手招聘 英国留学生代写

python代码查重
python代码查重

发表回复