news 2026/4/28 6:28:30

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

.NET 中常见计时器大全

文章目录1.System.Threading.Timer(线程计时器)1.1. 方法签名1.2. 参数说明1.3. 特殊值处理1.4. 示例&#xff1a;动态控制计时器2.System.Timers.Timer(服务器计时器)2.1. 示例&#xff1a;定期检查服务状态3.System.Windows.Forms.Timer(Windows计时器)3.1. 示例&#xff1a;…

作者头像 李华
网站建设 2026/4/25 15:07:18

三防手持平板赋能仓库WMS系统移动作业高效率

在现代仓储物流管理中&#xff0c;WMS系统的高效运转已成为企业提升作业效率、降低出错率的关键。然而&#xff0c;传统的作业方式常因设备不匹配、环境复杂等因素&#xff0c;影响系统效能的最大化释放。 一、工业级设计&#xff0c;无惧严苛作业环境 仓储作业环境复杂&#…

作者头像 李华
网站建设 2026/4/25 6:08:07

什么是可信计算?基于可信计算的网络安全自适应防护关键技术及应用

什么是可信计算可信计算是指如果一个实体的行为总是按照预期的方式和目标进行&#xff0c;则该实体是可信的。它通过构建从硬件通电到软件运行的全程可信节点监控与保护机制&#xff0c;确保所有环节的安全可信。可信计算经历了从V1.0的容错计算、V2.0的被动可信到V3.0及新时期…

作者头像 李华
网站建设 2026/4/20 11:13:44

Flutter状态管理全解析:Provider vs Bloc vs Riverpod实战对比

一、为什么需要状态管理&#xff1f; 1.1 Flutter状态管理的挑战 在Flutter中&#xff0c;状态管理面临三大核心挑战&#xff1a; 跨组件通信&#xff1a;如何在不同层级组件间共享数据性能优化&#xff1a;如何避免不必要的重建代码可维护性&#xff1a;如何组织复杂应用的…

作者头像 李华
网站建设 2026/4/25 14:03:08

管理案例丨华恒智信助力某大型钢铁集团人力资源管理咨询服务项目——以系统性诊断与双维考核,驱动效率与效能双重提升

【客户类型】生产制造行业、钢铁冶金行业、重型制造业、跨行业多元化集团 【问题类型】组织绩效考核体系重建、跨部门协同机制优化、业绩与管理平衡发展、人力资源管理、企业管理一、项目背景&#xff1a;领军企业的绩效管理之困该集团公司是一家立足山西、辐射全国的行业巨头&…

作者头像 李华