基于dlib检测和随机森林分类的驾驶员危险驾驶(人脸)检测

6 篇文章 0 订阅
2 篇文章 0 订阅

        前提:这篇文章的源头喃,是为了公司的一个训练营里交的实战报告,因为当时也赶时间,所以弄的挺马虎的,但也是一次实践了。想深入了解,或者看一下代码效果的,可以在gitee上找到我的源码,也是有中文注释的。(图像数据集的链接在下面哈)

danger_drive detection: 危险驾驶检测分类,从数据创建到逻辑推理和算法实现。

目录

项目背景

方法逻辑

数据处理

 模型构建与选择

代码函数简述

 模型评价

 效果展示


项目背景

        为了在车辆驾驶员处于疲劳驾驶或不专心驾驶等危险驾场景驶时,对驾驶员进行提醒,我们需要对当前驾驶员的驾驶状态进行一个识别分类。

方法逻辑

        通过人脸识别,获取驾驶员前脸,当没有识别到前脸时,认为驾驶员没有观察前方车况,识别到前脸后,再识别出人脸的特征标识点,包括左、右眼睛,嘴巴等轮廓标识点,利用眼睛的轮廓标识点判断当前驾驶员眼睛的闭合度,连续低于设定的阈值认为当前处于闭眼状态,利用嘴巴的轮廓标识点判断当前驾驶员嘴巴的打开程度,连续高于某个阈值认为是处于打哈欠状态。基于前面获得的各种状态数据输入分类模型来获得当前是否危险驾驶和危险驾驶的严重性。

数据处理

        原始数据集是网上公共的疲劳驾驶图像数据集 :疲劳驾驶行为数据集 - 飞桨AI Studio,我将其分为了训练集和测试集两部分,训练集2475张,测试集439张。就没有弄验证集哈

        对图像人脸识别并编码进行逻辑判断得到分类模型训练数据文件data.txt 和分类模型测试数据文件datatest.txt。如下图所示,每一行表示当前一张图片的数据,总共有7个,前5个是模型输入数据,分别表示眼睛轮廓长宽比,被认为是眼的次数,嘴巴轮廓长宽比,被认为是打哈欠的次数,前脸丢失检测的次数,这样的数据不仅包含了当前帧图像的信息,也包括了之前图像的信息;后两个是模型输出真值,分别表示处于危险驾驶,处于非常危险驾驶状态,当都为0表示不是危险驾驶状态。下图是一个部分data.txt的示例

295d885f274048a8bd8aa338680f7f73.png

 模型构建与选择

         前脸以及脸部轮廓标识点识别选择了Dlib人脸识别开源库,Dlib保持着很好的更新节奏,文档也写得相当清晰,是一个优秀的人脸识别开源库。用它来得到我们分类模型的输入数据是一个不错的选择。

        因为该数据输入与输出间逻辑性较强,分类模型选择了随机森林分类模型,它是含有多个决策树的分类器,具有训练速度快,抗过拟合能力强的特点。我用sklearn开源库搭建了随机森林分类模型。

代码函数简述

3f9d8d6596d24d4d8b0901ec8d002ce5.png

 fc6ca778b84745a38f2f642e83df38ea.png

 模型评价

30f4a4c01407434f92747795055385aa.png

 效果展示

模型可视化:

4个决策树组成的随机森林模型

5189cfc6c1544aa7b1c5e740101ec15f.png

80e39cceec654d118fa947296d3984f4.png

Figure1 l连续丢失前脸检测

c375245501004be9ab887bd2dd493a11.png

Figure2  多次被判断为打哈欠或闭眼后仍然存在闭眼

d825385cd6624f1daa8bb34f120c8368.png

Figure3多次被判断为打哈欠或闭眼后仍然存在打哈欠

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值