news 2026/6/19 11:11:32

训练 分心驾驶行为识别模型 ,支持从分类任务到目标检测任务的多种应用场景。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/6/17 8:01:41

冰 挂——冬日的风景线

冬日群峰&#xff0c;俨然一座童话秘境。溪流收住奔涌的脚步&#xff0c;倒挂悬崖&#xff0c;凝作晶莹剔透的冰景。 有的如乳白软酪&#xff0c;柔润饱满&#xff0c;铺满整面山壁&#xff1b;有的似银白玉柱&#xff0c;清透晶亮&#xff0c;挺立于崖下石阶&#xff1b;有的像…

作者头像 李华
网站建设 2026/6/17 16:59:05

Linux SSH隧道代理转发及多层转发

描述 SSH 协议是 Linux 系统中使用较为频繁的协议之一&#xff0c;通常用于远程管理主机或服务器&#xff0c;默认使用 22 端口&#xff0c;可类比 Windows 系统中的 telnet&#xff08;23 端口&#xff09;&#xff0c;这里要介绍的是 ssh 除了远程连接外的另一强大特性&…

作者头像 李华
网站建设 2026/6/15 17:55:19

Codebuddy使用CloudBase MCP辅助AI编码基于Spec工作流开发的坦克大战小游戏

目录引言一、什么是基于Spec的工作流二、基于Spec的工作流实现方式1、专为规范驱动设计的IDE2、集成规范驱动功能的工具或插件三、实践开发坦克大战小游戏1、IDE Codebuddy插件安装CloudBase MCP2、需求澄清3、技术方案设计4、任务分解5、技术实现总结引言 在上一篇文章《浅谈…

作者头像 李华
网站建设 2026/6/15 22:59:10

Java真的不行了,一天收到586份简历

这是小红书上一位招聘Java的人事发布的Java人员找工作现状。 Java以前有多火&#xff0c;现在就有多难挤进这条赛道&#xff0c;岗位越来越少&#xff0c;就业人越来越多&#xff0c;技术越来越新&#xff0c;时代越来越进步&#xff0c;这十分要求还在传统Java道路上的人&…

作者头像 李华
网站建设 2026/6/17 11:11:10

“N皇后”问题解法

C实现N皇后问题&#xff08;回溯法详解OJ适配&#xff09;一、核心问题分析不同行&#xff1a;由于每个皇后占一行&#xff0c;可简化为“逐行放置”&#xff08;每行仅放一个皇后&#xff09;不同列&#xff1a;同一列不能有两个皇后不同对角线&#xff1a;主对角线&#xff0…

作者头像 李华