news 2026/5/1 4:52:13

训练 分心驾驶行为识别模型 ,支持从分类任务到目标检测任务的多种应用场景。17类驾驶员疲劳驾驶状态检测数据集的训练及应用 YOLOV8疲劳驾驶检测系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
训练 分心驾驶行为识别模型 ,支持从分类任务到目标检测任务的多种应用场景。17类驾驶员疲劳驾驶状态检测数据集的训练及应用 YOLOV8疲劳驾驶检测系统

驾驶员分心驾驶目标检测数据集
SFDDD数据集基础上加入自己创建的数据
数据集提供标签文件

yolo和voc两种标注方式
类别数量:17类
类别名称: 每一类图像数 ,每一类标注数
Safe Driving 2056,2056
Texting right 1331,1331
Calling right 1343,1343
Texting left 1260,1260
Calling left 1257,1257
Adjusting radio 1530,1530
Drinking 1542,1542
Reaching behind 1604,1604
Hair and makeup 1425,1425
Talking to passengers 1540,1540
Yawn 1477,1477
Wiping glass 680,680
Smoking 789,789
Voice right 618,618
Voice left 666,666
Nodding Off 1410,1410
Look down 756,756

1

以下是驾驶员分心驾驶目标检测数据集的完整统计表格(基于 SFDDD 并融合自建数据):


📊 驾驶员分心驾驶检测数据集统计表

序号类别名称(英文)类别名称(中文)图像数量标注框数量
1Safe Driving安全驾驶2,0562,056
2Texting right右手发短信1,3311,331
3Calling right右手打电话1,3431,343
4Texting left左手发短信1,2601,260
5Calling left左手打电话1,2571,257
6Adjusting radio调节收音机1,5301,530
7Drinking饮水1,5421,542
8Reaching behind向后伸手1,6041,604
9Hair and makeup整理头发/化妆1,4251,425
10Talking to passengers与乘客交谈1,5401,540
11Yawn打哈欠1,4771,477
12Wiping glass擦拭挡风玻璃680680
13Smoking吸烟789789
14Voice right右侧语音操作618618
15Voice left左侧语音操作666666
16Nodding Off点头打瞌睡1,4101,410
17Look down低头看下方756756
总计20,24420,244

说明

  • 每张图像仅包含一个行为类别(单标签分类+检测场景,通常以整图作为目标区域)
  • 提供YOLO (.txt)PASCAL VOC (.xml)两种标注格式
  • 数据集在SFDDD(State Farm Distracted Driver Detection)基础上扩展了部分新类别(如 Wiping glass、Voice left/right 等)
  • 适用于驾驶员状态监控、智能座舱、ADAS 安全预警系统

该数据集可直接用于训练分心驾驶行为识别模型,支持从分类任务到目标检测任务的多种应用场景。

以下是完整的基于 YOLOv8 的驾驶员分心驾驶行为识别系统详细代码实现,适用于你提供的17 类分心行为数据集(含 Safe Driving)。该系统支持:

✅ 图像上传
✅ YOLOv8 行为分类/检测(根据标注方式)
✅ Web 界面(Flask)
✅ 中文结果展示
✅ 支持 YOLO/VOC 格式(本例按图像级分类任务实现,因每图仅一个标签)

💡 注:SFDDD 及类似数据集通常为图像分类任务(每张图一个行为标签),但若你的标注是边界框形式(如人脸+手部区域),则为检测任务。此处按分类任务实现(更常见且高效),若需检测版可告知。


📁 一、项目结构

driver_distraction_yolov8/ ├── data/ │ └── dataset.yaml# 分类数据集配置├── models/ │ └── best.pt# 训练好的 YOLOv8-cls 模型├── static/ │ ├── uploads/# 用户上传图像│ └── results/# 可选:保存带标签的图├── templates/ │ ├── index.html# 上传页│ └── result.html# 结果页├── app.py# Flask 应用├── classify.py# 核心分类模块├── requirements.txt └── README.md

📦 二、环境依赖(requirements.txt

ultralytics==8.2.0 flask==2.3.3 opencv-python==4.8.0 numpy==1.24.3 Pillow==9.5.0

安装:

pipinstall-rrequirements.txt

🧠 三、类别定义(17类)

# classify.pyCLASS_NAMES=["安全驾驶","右手发短信","右手打电话","左手发短信","左手打电话","调节收音机","饮水","向后伸手","整理头发/化妆","与乘客交谈","打哈欠","擦拭挡风玻璃","吸烟","右侧语音操作","左侧语音操作","点头打瞌睡","低头看下方"]

⚠️ 顺序必须与训练时dataset.yaml一致。


📄 四、分类数据集配置data/dataset.yaml

# data/dataset.yaml (用于训练)train:../data/images/trainval:../data/images/valnc:17names:['Safe Driving','Texting right','Calling right','Texting left','Calling left','Adjusting radio','Drinking','Reaching behind','Hair and makeup','Talking to passengers','Yawn','Wiping glass','Smoking','Voice right','Voice left','Nodding Off','Look down']

✅ 使用yolo task=classify进行训练。


🔍 五、核心分类模块classify.py

# classify.pyimportcv2importosfromultralyticsimportYOLO CLASS_NAMES=["安全驾驶","右手发短信","右手打电话","左手发短信","左手打电话","调节收音机","饮水","向后伸手","整理头发/化妆","与乘客交谈","打哈欠","擦拭挡风玻璃","吸烟","右侧语音操作","左侧语音操作","点头打瞌睡","低头看下方"]defrun_classification(input_path,model_path="models/best.pt"):""" 对单张驾驶员图像进行分心行为分类 :param input_path: 输入图像路径 :param model_path: YOLOv8-cls 模型路径 :return: (预测类别中文名, 置信度) """model=YOLO(model_path)results=model(input_path)# 获取预测结果probs=results[0].probs# 分类概率pred_class_id=int(probs.top1)confidence=float(probs.top1conf)ifpred_class_id>=len(CLASS_NAMES):raiseValueError("预测类别ID超出范围")predicted_class=CLASS_NAMES[pred_class_id]returnpredicted_class,confidence

🌐 六、Web 应用app.py

# app.pyfromflaskimportFlask,render_template,request,redirect,url_forimportosfromclassifyimportrun_classification app=Flask(__name__)UPLOAD_FOLDER='static/uploads'ALLOWED_EXTENSIONS={'png','jpg','jpeg'}app.config['UPLOAD_FOLDER']=UPLOAD_FOLDERdefallowed_file(filename):return'.'infilenameandfilename.rsplit('.',1)[1].lower()inALLOWED_EXTENSIONS@app.route('/')defindex():returnrender_template('index.html')@app.route('/upload',methods=['POST'])defupload_file():if'file'notinrequest.files:returnredirect(request.url)file=request.files['file']iffile.filename==''ornotallowed_file(file.filename):returnredirect(request.url)filename=file.filename filepath=os.path.join(app.config['UPLOAD_FOLDER'],filename)os.makedirs(app.config['UPLOAD_FOLDER'],exist_ok=True)file.save(filepath)try:predicted_class,confidence=run_classification(filepath,model_path="models/best.pt")exceptExceptionase:returnf"<h2>识别失败:{str(e)}</h2>"returnrender_template('result.html',original=filename,predicted_class=predicted_class,confidence=f"{confidence:.2%}")if__name__=='__main__':app.run(debug=True,host='0.0.0.0',port=5000)

🖼️ 七、前端模板

templates/index.html

<!DOCTYPEhtml><html><head><title>驾驶员分心行为识别</title><style>body{font-family:Arial;text-align:center;margin-top:50px;}.upload-btn{padding:10px 20px;background:#28a745;color:white;border:none;cursor:pointer;}.upload-btn:hover{background:#218838;}</style></head><body><h1>🚗 驾驶员分心行为智能识别系统</h1><p>支持17种驾驶行为,包括安全驾驶与各类分心动作</p><formmethod="post"enctype="multipart/form-data"action="/upload"><inputtype="file"name="file"accept="image/*"required><br><br><buttontype="submit"class="upload-btn">上传图像并识别</button></form></body></html>

templates/result.html

<!DOCTYPEhtml><html><head><title>识别结果</title><style>body{font-family:Arial;text-align:center;margin-top:40px;}img{max-width:80%;margin:20px;border:1px solid #ccc;}.result-box{background:#f8f9fa;padding:20px;border-radius:8px;display:inline-block;margin:20px;}.safe{color:green;}.danger{color:red;}</style></head><body><h2>🔍 识别结果</h2><imgsrc="{{ url_for('static', filename='uploads/' + original) }}"alt="驾驶员图像"><divclass="result-box"><h3>行为类别:<spanclass="{% if predicted_class == '安全驾驶' %}safe{% else %}danger{% endif %}">{{ predicted_class }}</span></h3><p>置信度:{{ confidence }}</p></div><br><ahref="/">← 返回上传</a></body></html>

🚀 八、模型训练命令(供参考)

# 使用 YOLOv8 分类模型训练yolo classify train\data=data/dataset.yaml\model=yolov8n-cls.pt\epochs=50\imgsz=224\batch=64\project=runs/classify\name=driver_distraction

训练完成后,将runs/classify/driver_distraction/weights/best.pt复制到models/目录。


▶️ 九、运行系统

python app.py

访问:http://localhost:5000


🎯 十、系统特点

特性说明
🚗17类行为覆盖包含安全驾驶与16种典型分心行为
📱实时识别单图推理 < 100ms(GPU)
🌐Web界面友好中文显示,绿色/红色高亮安全/危险行为
📊高置信度输出显示预测概率,便于阈值判断
🔒隐私保护图像仅本地处理,不上传云端

💡 扩展建议

  • 视频流分析:接入摄像头或车载视频流实现实时监控
  • 报警机制:当检测到“吸烟”、“打瞌睡”等高危行为时触发警报
  • 多模态融合:结合方向盘握力、眼动追踪等传感器数据
  • 移动端部署:导出 ONNX/TensorRT 模型用于嵌入式设备

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 6:43:14

句柄到底是个啥?

文章目录1、什么是句柄&#xff1f;2、句柄与普通指针的区别&#xff1f;1、什么是句柄&#xff1f; 句柄&#xff08;Handle&#xff09;是一个是用来标识对象或者项目的标识符&#xff0c;可以用来描述窗体、文件等&#xff0c;值得注意的是句柄不能是常量—引自科学百科通过…

作者头像 李华
网站建设 2026/5/1 4:51:34

回溯算法详解:从原理到实战(C++代码实现)

前言回溯算法是基于**深度优先搜索&#xff08;DFS&#xff09;**的经典算法思想&#xff0c;核心是“尝试-回退”&#xff0c;通过遍历解空间找到所有符合条件的解。它广泛应用于排列、组合、子集等问题&#xff0c;本文将结合LeetCode经典例题&#xff0c;用C实现回溯算法&am…

作者头像 李华
网站建设 2026/5/1 2:29:00

webrtc 联播数据编码发送流程

文章目录webrtc 联播数据编码发送流程1 创建 VideoSendStreamImpl2 创建RTPSenderVideo3 创建编码器4 编码后数据流向webrtc 联播数据编码发送流程 1 创建 VideoSendStreamImpl WebRtcVideoChannel::WebRtcVideoSendStream::RecreateWebRtcStream media/engine/webrtc_video_…

作者头像 李华
网站建设 2026/4/23 13:28:12

JavaScript——js基础(详细 全面),适合新手小白,收藏这篇就够了

目录 前言: JavaScript 是什么&#xff1f;JavaScript 简介 1.JavaScript历史 2.JavaScript 具有以下特点 第一个JavaScript程序 1.在脚本文件中编写JavaScript代码 2.JavaScript代码执行顺序 基本语法 1.变量 2.数据类型 3.算术运算符 4.赋值运算 5.字符串运算符…

作者头像 李华
网站建设 2026/4/30 6:46:39

守护智慧校园数字命脉:微隔离构建全局可视、精准防护的内网安全

引言&#xff1a;象牙塔内的内网安全隐忧高校作为人才培养和知识创新的主阵地&#xff0c;其网络系统已演进为支撑核心教学科研、承载海量师生数据与关键管理业务的复杂数字中枢。“智慧校园”的建设虽然实现了教学与管理的跃升&#xff0c;却也同步放大了内网安全的脆弱性。当…

作者头像 李华