当前位置: 首页 > news >正文

Yolo训练无人机视角斑马线目标检测数据集 检测车辆违停识别 使用 YOLOv5 来处理无人机视角下的斑马线目标检测任务

Yolo训练无人机视角斑马线目标检测数据集 检测车辆违停识别 使用 YOLOv5 来处理无人机视角下的斑马线目标检测任务。

文章目录

      • **1. 环境搭建**
        • 安装依赖
      • **2. 数据准备**
      • **3. 数据增强(可选)**
      • **4. 模型训练**
        • 配置超参数
        • 开始训练
      • **5. 模型推理**
        • 单张图片推理
      • **6. 批量推理**
      • **7. 性能评估**
        • mAP 和其他指标
      • **8. 构建 GUI 应用程序**

无人机视角斑马线目标检测数据集

数据类型:图片+yolo格式标签

类别:斑马线

数据准备到模型训练、推理和性能评估的详细步骤。使用YOLOv5来处理无人机视角下的斑马线目标检测任务。


1. 环境搭建

安装依赖
# 创建虚拟环境(可选)conda create-nzebra_crossing_detectionpython=3.8conda activate zebra_crossing_detection# 安装 PyTorch 和 torchvisionpipinstalltorch torchvision# 克隆 YOLOv5 仓库gitclone https://github.com/ultralytics/yolov5cdyolov5# 安装 YOLOv5 的依赖pipinstall-rrequirements.txt

2. 数据准备

假设你的数据集已经按照 YOLO 格式标注,文件结构如下:

dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/

每个图像文件在images/文件夹中,对应的标注文件(.txt)在labels/文件夹中。

创建一个data.yaml文件,用于描述数据集路径和类别信息:

# data.yamltrain:dataset/images/trainval:dataset/images/valtest:dataset/images/testnc:1# 类别数量(斑马线)names:['zebra_crossing']# 类别名称

3. 数据增强(可选)

为了提高模型的泛化能力,可以对数据进行增强。YOLOv5 提供了内置的数据增强功能,无需额外代码。

如果需要自定义增强策略,可以在yolov5/data/hyps/hyp.scratch.yaml中调整参数,例如增加随机裁剪或翻转的概率。


4. 模型训练

配置超参数

编辑yolov5/data/hyps/hyp.scratch.yaml文件,调整超参数以适应你的数据集。例如:

lr0:0.01# 初始学习率momentum:0.937weight_decay:0.0005
开始训练

运行以下命令开始训练:

python train.py--img640--batch16--epochs50--datadata.yaml--cfgmodels/yolov5s.yaml--weightsyolov5s.pt--namezebra_crossing_detection
  • --img 640: 输入图像大小。
  • --batch 16: 批量大小。
  • --epochs 50: 训练轮数。
  • --data data.yaml: 数据集配置文件。
  • --cfg models/yolov5s.yaml: 使用 YOLOv5 的小型模型(适合小数据集)。
  • --weights yolov5s.pt: 加载预训练权重。
  • --name zebra_crossing_detection: 训练结果保存目录。

5. 模型推理

单张图片推理

训练完成后,可以使用以下命令对单张图片进行推理:

python detect.py--weightsruns/train/zebra_crossing_detection/weights/best.pt--img640--conf0.25--sourcedataset/images/test/image_001.jpg
  • --weights: 使用训练好的模型权重。
  • --img 640: 输入图像大小。
  • --conf 0.25: 置信度阈值。
  • --source: 输入图像路径。

推理结果会保存在runs/detect/exp/文件夹中。


6. 批量推理

如果需要对多张图片或视频进行批量推理,可以将--source参数设置为文件夹路径或视频路径:

# 对文件夹中的所有图片进行推理python detect.py--weightsruns/train/zebra_crossing_detection/weights/best.pt--img640--conf0.25--sourcedataset/images/test/# 对视频进行推理python detect.py--weightsruns/train/zebra_crossing_detection/weights/best.pt--img640--conf0.25--sourcevideo.mp4

7. 性能评估

mAP 和其他指标

训练完成后,YOLOv5 会自动生成性能评估报告,包括 mAP(mean Average Precision)、Precision、Recall 等指标。这些信息会保存在runs/train/zebra_crossing_detection/results.csv文件中。

你也可以手动运行验证脚本:

python val.py--datadata.yaml--weightsruns/train/zebra_crossing_detection/weights/best.pt--img640

8. 构建 GUI 应用程序

使用 PyQt5 构建一个简单的 GUI 应用程序,用于加载图像、运行检测并显示结果。

importsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QVBoxLayout,QWidget,QFileDialogfromPyQt5.QtGuiimportQPixmapfromPILimportImage,ImageQtimporttorchfrompathlibimportPathclassDetectionApp(QMainWindow):def__init__(self):super().__init__()self.initUI()self.model=torch.hub.load('ultralytics/yolov5','custom',path='runs/train/zebra_crossing_detection/weights/best.pt')definitUI(self):self.setWindowTitle("斑马线检测系统")self.setGeometry(100,100,800,600)layout=QVBoxLayout()self.image_label=QLabel(self)self.image_label.setText("请选择一张图片进行检测")self.image_label.setAlignment(Qt.AlignCenter)layout.addWidget(self.image_label)self.load_button=QPushButton("加载图像",self)self.load_button.clicked.connect(self.load_image)layout.addWidget(self.load_button)self.detect_button=QPushButton("检测斑马线",self)self.detect_button.clicked.connect(self.detect_zebra_crossing)layout.addWidget(self.detect_button)container=QWidget()container.setLayout(layout)self.setCentralWidget(container)defload_image(self):options=QFileDialog.Options()file_name,_=QFileDialog.getOpenFileName(self,"选择图像文件","","Images (*.png *.jpg *.jpeg)",options=options)iffile_name:self.image_path=file_name pixmap=QPixmap(file_name)self.image_label.setPixmap(pixmap.scaled(640,640))defdetect_zebra_crossing(self):ifhasattr(self,'image_path'):results=self.model(self.image_path)img_with_boxes=results.render()[0]# 将结果转换为 QImage 并显示height,width,channel=img_with_boxes.shape bytes_per_line=3*width q_img=ImageQt.Image.fromarray(img_with_boxes).convert("RGB").rgbSwapped()self.image_label.setPixmap(QPixmap.fromImage(q_img))else:self.image_label.setText("请先加载一张图片")if__name__=='__main__':app=QApplication(sys.argv)window=DetectionApp()window.show()sys.exit(app.exec_())

仅供参考。

http://www.cnnetsun.cn/news/2021893.html

相关文章:

  • 别再手动导数据了!一个BTE配置搞定SAP物料主数据变更的实时外传
  • 多模态RAG系统:架构设计与工程实践
  • 2026免费GEO监测工具,AI搜索优化必看
  • 九大零成本查重平台推荐,包含爱毕业aibiye,支持无限检测与AI驱动改写优化
  • 【无人机】多架无人机的编队控制和轨迹规划(Matlab代码实现)
  • 解析 ()() 的 SLR(1) 解析器
  • Alembic 多分支迁移中依赖顺序的正确配置方法
  • 从零构建个人AI知识库:全流程实战指南与业务赋能方案
  • 告别选择困难:ThinkBook 14+ 2023 双系统引导终极方案对比(GRUB vs. BootICE)
  • python bcrypt
  • NVIDIA AX800加速器:5G vRAN与AI融合的云原生解决方案
  • 数学建模国赛C题:从模拟退火到NSGA-II,多目标优化算法实战对比与选型指南
  • 从sprintf到OLED_ShowString:深入理解STM32驱动OLED显示浮点数的数据流转与内存优化
  • FastAdmin实战:city-picker省市区组件如何优雅地获取并存储地区编码(附完整代码)
  • 从零封装一个Vue3.0流程编辑器?不如先拆解这个开源库(vue-flow-editor + G6 源码浅析)
  • M1 MacBook Pro 上 VMware Fusion 装 CentOS 8,我踩过的坑和高效配置全流程
  • 手把手教你用STM32CubeMX和HAL库驱动MPU9250(附完整代码)
  • 保姆级教程:在Ubuntu 20.04上复现DynaSLAM(基于ORB-SLAM2与Mask R-CNN)
  • R语言pheatmap进阶玩法:用聚类结果反向导出排序数据,搞定下游分析
  • 车载LIN总线测试入门:ISO 17987标准各部分到底该怎么读?(附工程师学习路线图)
  • Spring Boot 4.0 Agent-Ready架构成本优化实战(企业级Agent资源配额治理手册)
  • 现在不掌握Docker跨架构构建,2025年将无法交付IoT/边缘/AI推理应用——3个已落地客户架构迁移失败复盘与48小时重建路径
  • 别再让ESXi主机内存告警了!保姆级解读VMware内存回收四大机制(附实战配置)
  • 告别手动拖拽!用Quixel Bridge插件打造UE4/UE5自动化资产管线,提升美术效率
  • 从‘充电’到‘对话’:一文搞懂ISO 15118如何让电动汽车和电网‘聪明’地聊天
  • 5分钟快速上手Dism++:免费强大的Windows系统维护工具终极指南
  • 告别手绘!用Unity TileMap调色板高效搭建2D游戏地牢与平台关卡
  • 从数学噩梦到AI算法:一位20年老程序员的CSDN博客质量评分系统实战心得
  • 别再傻傻分不清了!一张图看懂IDS、IPS、防火墙、网闸到底有啥区别
  • 从.py文件到PyPI:手把手教你打包发布自己的Python工具包