电动车闯红灯检测数据集 建立基于深度学习Yolov5电动车闯红灯检测识别 pytorch 深度学习目标检测算法yolov5训练
pytorch 深度学习目标检测算法yolov5训练电动车闯红灯检测数据集 建立基于深度学习Yolov5电动车闯红灯检测识别文章目录pytorch 深度学习目标检测算法yolov5训练电动车闯红灯检测数据集 建立基于深度学习Yolov5电动车闯红灯检测识别1. 数据准备数据集结构数据标注数据划分2. 环境搭建安装依赖3. 数据配置4. 模型训练使用YOLOv5进行训练5. 配置超参数6. 模型推理单张图片推理7. 批量推理8. 性能评估mAP计算自定义评估脚本yolov5电动车闯红灯检测 可检测 红灯 绿灯 电动车三类1基于YOLOv5的电动车闯红灯检测系统涉及多个步骤包括数据准备、环境搭建、模型训练、超参数配置、模型推理、批量推理以及性能评估。以下是详细的实现步骤和代码示例。1. 数据准备数据集结构确保你的数据集结构如下traffic_dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/数据标注每个图像文件对应一个.txt文件格式为YOLO适用的标注格式每行包含类别ID和边界框信息归一化后的中心点坐标和宽高。例如0 0.5 0.5 0.2 0.2 1 0.7 0.3 0.1 0.1数据划分将数据集按比例划分为训练集和验证集例如9:1。importosimportrandomfromshutilimportcopyfile# 定义数据集路径dataset_pathtraffic_datasetimages_pathos.path.join(dataset_path,images)labels_pathos.path.join(dataset_path,labels)# 创建目录os.makedirs(images_path,exist_okTrue)os.makedirs(labels_path,exist_okTrue)# 获取所有图像文件image_files[fforfinos.listdir(dataset_path)iff.endswith(.jpg)orf.endswith(.png)]random.shuffle(image_files)# 按比例划分训练集和验证集train_ratio0.9train_sizeint(len(image_files)*train_ratio)train_imagesimage_files[:train_size]val_imagesimage_files[train_size:]# 复制文件到对应的目录forimg_fileintrain_images:label_fileimg_file.replace(.jpg,.txt).replace(.png,.txt)copyfile(os.path.join(dataset_path,img_file),os.path.join(images_path,train,img_file))copyfile(os.path.join(dataset_path,label_file),os.path.join(labels_path,train,label_file))forimg_fileinval_images:label_fileimg_file.replace(.jpg,.txt).replace(.png,.txt)copyfile(os.path.join(dataset_path,img_file),os.path.join(images_path,val,img_file))copyfile(os.path.join(dataset_path,label_file),os.path.join(labels_path,val,label_file))2. 环境搭建安装依赖# 创建并激活虚拟环境conda create-ntraffic_detectionpython3.8conda activate traffic_detection# 安装YOLOv5和相关库pipinstalltorch torchvisiongitclone https://github.com/ultralytics/yolov5.gitcdyolov5 pipinstall-rrequirements.txt3. 数据配置在traffic_dataset/目录下创建一个名为data.yaml的数据配置文件内容如下train:./images/train/val:./images/val/nc:3names:[red_light,green_light,non_motor_vehicle]4. 模型训练使用YOLOv5进行训练cdyolov5 python train.py--img640--batch16--epochs100--data../traffic_dataset/data.yaml--weightsyolov5s.pt5. 配置超参数在训练过程中可以通过修改yolov5/data/hyps/hyp.scratch.yaml文件来设置超参数。以下是一些常见的超参数及其说明lr0: 初始学习率默认值通常为0.01。lrf: 最终学习率因子默认值通常为0.01。momentum: 动量默认值通常为0.937。weight_decay: 权重衰减默认值通常为0.0005。6. 模型推理单张图片推理fromyolov5.models.experimentalimportattempt_loadfromyolov5.utils.datasetsimportLoadImagesfromyolov5.utils.generalimportnon_max_suppression,scale_coordsfromyolov5.utils.torch_utilsimportselect_deviceimportcv2importtorchdefinfer_image(weights,img_path):deviceselect_device()modelattempt_load(weights,map_locationdevice)datasetLoadImages(img_path)forpath,img,im0s,vid_capindataset:imgtorch.from_numpy(img).to(device)imgimg.float()/255.0ifimg.ndimension()3:imgimg.unsqueeze(0)predmodel(img,augmentFalse)[0]prednon_max_suppression(pred,conf_thres0.25,iou_thres0.45)fordetinpred:iflen(det):det[:,:4]scale_coords(img.shape[2:],det[:,:4],im0s.shape).round()for*xyxy,conf,clsinreversed(det):labelf{model.names[int(cls)]}{conf:.2f}plot_one_box(xyxy,im0s,labellabel,color(0,255,0),line_thickness3)cv2.imshow(Traffic Detection,im0s)cv2.waitKey(0)cv2.destroyAllWindows()if__name____main__:weightsruns/train/exp/weights/best.ptimg_pathpath/to/test_image.jpginfer_image(weights,img_path)7. 批量推理importosdefbatch_infer_images(weights,directory):forfilenameinos.listdir(directory):iffilename.endswith(.jpg)orfilename.endswith(.png):image_pathos.path.join(directory,filename)annotated_frameinfer_image(weights,image_path)cv2.imwrite(foutput_{filename},annotated_frame)if__name____main__:weightsruns/train/exp/weights/best.ptdirectorypath/to/imagesbatch_infer_images(weights,directory)8. 性能评估mAP计算YOLOv5自带评估功能可以在验证集上计算mAP。cdyolov5 python val.py--img640--batch16--data../traffic_dataset/data.yaml--weightsruns/train/exp/weights/best.pt自定义评估脚本如果你想要更详细的评估指标比如针对特定类别的准确率和召回率可以编写自定义脚本。fromsklearn.metricsimportprecision_recall_fscore_supportdefevaluate_model(model,dataset):all_preds[]all_labels[]forimages,labelsindataset:predsmodel(images)pred_classes[int(pred.cls[0])forpredinpreds]true_classeslabels.numpy().flatten()all_preds.extend(pred_classes)all_labels.extend(true_classes)precision,recall,f1,_precision_recall_fscore_support(all_labels,all_preds,averageweighted)print(fPrecision:{precision:.2f}, Recall:{recall:.2f}, F1 Score:{f1:.2f})# 示例评估模型性能evaluate_model(model,val_dataset)以上就是关于如何在YOLOv5基础上构建电动车闯红灯检测系统的完整指南包括数据准备、环境搭建、模型训练、超参数配置、模型推理、批量推理以及性能评估代码。根据实际需求调整上述代码段关键代码示例仅供参考。

相关新闻

职业技能培训机构如何利用QClaw+Skills做豆包GEO:知识库搭建×内容创作×效果监测的完整实操手册

职业技能培训机构如何利用QClaw+Skills做豆包GEO:知识库搭建×内容创作×效果监测的完整实操手册

2026年,一个想学技能的年轻人,不再去街头找培训班了。他们打开豆包,打一行字:”30岁转行学什么好?”或者”学挖掘机多少钱、包就业吗?”或者”电工证在哪里考、多久能下证?”然后等AI给出答案。…

2026/10/13 4:42:36 阅读更多 →
Windows 上同时安装多个 node 版本

Windows 上同时安装多个 node 版本

一、实践步骤 1.1 卸载已安装的 node,然后安装 nvm-windows nvm 版本选择问题: nvm 版本 适用场景 原因与建议 1.1.12 需要安装 Node.js 18 及以下版本 这是 1.1 系列的最终版,非常稳定。强烈建议使用此版本,因为它没有 1.2 系列存…

2026/10/11 19:15:38 阅读更多 →
MatrixOne Git4Data 技术详解(十)·深度学习篇:训练数据怎么管——lakeFS 管文件,MatrixOne 管元数据

MatrixOne Git4Data 技术详解(十)·深度学习篇:训练数据怎么管——lakeFS 管文件,MatrixOne 管元数据

前面九篇一直在结构化数据上打转:前四篇讲清了 Git4Data 是什么、怎么用、和其他方案分别站在哪一层;第五到第七篇是数据运维;第八、九篇进入 AI 训练,用一个风控模型走通了全流程总图和数据集发布与泄漏。 这一篇,我…

2026/10/11 19:15:41 阅读更多 →

最新新闻

Windows进程隔离与DLL加载原理科普

Windows进程隔离与DLL加载原理科普

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 20:07:15 阅读更多 →
hyperframes:面向HTML视频体验的轻量级CLI构建工具

hyperframes:面向HTML视频体验的轻量级CLI构建工具

1. 项目概述:什么是 hyperframes?它不是“超帧”,而是一套面向现代网页视频体验的轻量级 CLI 工具链你可能在 GitHub Trending 或前端技术社区里偶然刷到过hyperframes这个词——它不像 React、Vite 那样铺天盖地,也没有被各大技术…

2026/10/14 20:07:15 阅读更多 →
openrig 工作台:AI 编程 CLI 工具的环境编排与装配实践

openrig 工作台:AI 编程 CLI 工具的环境编排与装配实践

1. 从 openrig 这个名字说起:它到底想解决什么问题第一次看到 openrig 这个词,我下意识把它拆成了 open 和 rig 两部分。rig 在工程语境里通常指“装配好的成套设备”或者“临时搭建起来的工作台”,比如矿机、测试台、演出灯光架都叫 rig。所…

2026/10/14 20:07:15 阅读更多 →
Linux内核层定制实战指南:从配置裁剪到模块补丁与性能优化

Linux内核层定制实战指南:从配置裁剪到模块补丁与性能优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 20:07:15 阅读更多 →
ponytail命令行技能管理插件框架:从安装到实战全解析

ponytail命令行技能管理插件框架:从安装到实战全解析

1. 项目定位:先把“ponytail”到底解决什么问题说清楚我第一次看到ponytail这个名字,第一反应是“马尾辫”,还以为是某种发型类的创意项目。后来翻完它的文档才发现,这其实是一款定位非常干净的命令行技能管理插件框架——它的核心…

2026/10/14 20:07:15 阅读更多 →
ACM-ICPC校赛同步赛复盘:备赛、算法策略与真实赛场经验

ACM-ICPC校赛同步赛复盘:备赛、算法策略与真实赛场经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 20:06:14 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →