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

铁路铁轨轨道缺陷检测数据集

铁路铁轨轨道缺陷检测数据集
铁轨缺陷检测数据集
类别为’damage’,‘dirt’,‘unknown’,‘gap’,‘d_dent’,‘d_crush’,‘d_scratch’,‘d_slant’
原数据集399张 扩充三倍后一共1596张
txt或xml格式
基于铁轨缺陷检测数据集构建一个使用YOLOv8进行目标检测的系统。以下是详细的步骤和完整的代码示例。


声明:文章内所有代码仅供参考!


步骤概述

  1. 安装依赖
  2. 准备数据集
  3. 配置YOLOv8
  4. 训练模型
  5. 评估模型
  6. 构建GUI应用程序
  7. 运行应用程序

1. 安装依赖

首先确保你已经安装了必要的库,包括PyTorch、YOLOv8和其他相关库。

pipinstalltorch torchvision opencv-python-headless matplotlib pillow PyQt5 ultralytics

2. 准备数据集

假设你的数据集已经转换为YOLO格式,并且目录结构如下:

dataset/ ├── images/ │ ├── train/ │ │ ├── image1.jpg │ │ └── ... │ ├── val/ │ │ ├── image1.jpg │ │ └── ... │ └── test/ │ ├── image1.jpg │ └── ... └── labels/ ├── train/ │ ├── image1.txt │ └── ... ├── val/ │ ├── image1.txt │ └── ... └── test/ ├── image1.txt └── ...

每个图像文件对应一个标签文件,标签文件包含对象的类别ID和边界框坐标(x_center, y_center, width, height),归一化到[0, 1]范围。

3. 配置YOLOv8

创建一个data.yaml文件来定义数据集路径和类别信息。

data.yaml
# dataset/data.yamltrain:./images/trainval:./images/valtest:./images/testnc:8names:['damage','dirt','unknown','gap','d_dent','d_crush','d_scratch','d_slant']

4. 训练模型

使用YOLOv8训练模型。假设你已经在项目目录下。

yolotask=detectmode=trainmodel=yolov8n.ptdata=../dataset/data.yamlepochs=50imgsz=640batch=16name=railway_defect_detection

5. 评估模型

训练完成后,你可以使用以下命令评估模型性能。

yolotask=detectmode=valmodel=runs/detect/railway_defect_detection/weights/best.ptdata=../dataset/data.yaml

6. 构建GUI应用程序

使用PyQt5构建一个简单的GUI应用程序,允许用户上传图像并查看检测结果。

GUI 应用程序
[<title="Railway Defect Detection GUI using YOLOv8">]importsysimporttorchimportnumpyasnpfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QVBoxLayout,QWidget,QFileDialog,QMessageBoxfromPyQt5.QtGuiimportQPixmap,QImagefromPILimportImageimportcv2classRailwayDefectDetectionApp(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("Railway Defect Detection Using YOLOv8")self.setGeometry(100,100,800,600)self.original_image_label=QLabel(self)self.detected_image_label=QLabel(self)self.upload_button=QPushButton("Upload Image",self)self.upload_button.clicked.connect(self.upload_image)self.process_button=QPushButton("Process Image",self)self.process_button.clicked.connect(self.process_image)self.process_button.setEnabled(False)layout=QVBoxLayout()layout.addWidget(self.original_image_label)layout.addWidget(self.detected_image_label)layout.addWidget(self.upload_button)layout.addWidget(self.process_button)container=QWidget()container.setLayout(layout)self.setCentralWidget(container)# Load pre-trained modelself.model=torch.hub.load('ultralytics/yolov8','custom',path='runs/detect/railway_defect_detection/weights/best.pt')defupload_image(self):options=QFileDialog.Options()file_name,_=QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()","","Images (*.png *.xpm *.jpg);;All Files (*)",options=options)iffile_name:self.image_path=file_name pixmap=QPixmap(file_name)self.original_image_label.setPixmap(pixmap.scaled(350,350))self.process_button.setEnabled(True)defprocess_image(self):ifhasattr(self,'image_path'):image=Image.open(self.image_path).convert('RGB')results=self.model(image)detected_image=results.render()[0]detected_pixmap=QPixmap.fromImage(self.convert_to_qimage(detected_image))self.detected_image_label.setPixmap(detected_pixmap.scaled(350,350))else:QMessageBox.warning(self,"Warning","Please upload an image first.")defconvert_to_qimage(self,pil_image):ifpil_image.mode=="RGB":format=QImage.Format_RGB888elifpil_image.mode=="RGBA":format=QImage.Format_RGBA8888else:raiseValueError(f"Unsupported image mode:{pil_image.mode}")qimage=QImage(pil_image.tobytes(),pil_image.width,pil_image.height,format)returnqimageif__name__=="__main__":app=QApplication(sys.argv)window=RailwayDefectDetectionApp()window.show()sys.exit(app.exec_())

解释

  1. 安装依赖:确保安装了所有必要的库。
  2. 准备数据集:按照YOLOv8的要求组织数据集。
  3. 配置YOLOv8:创建data.yaml文件定义数据集路径和类别信息。
  4. 训练模型:使用YOLOv8训练模型。
  5. 评估模型:评估训练好的模型性能。
  6. 构建GUI应用程序
    • 创建主窗口和布局。
    • 添加按钮用于上传和处理图像。
    • 实现图像上传功能。
    • 实现图像处理功能,调用模型进行检测并显示结果。
  7. 运行应用程序:保存上述脚本到相应的Python文件中,然后运行训练和评估脚本:
yolotask=detectmode=trainmodel=yolov8n.ptdata=../dataset/data.yamlepochs=50imgsz=640batch=16name=railway_defect_detection yolotask=detectmode=valmodel=runs/detect/railway_defect_detection/weights/best.ptdata=../dataset/data.yaml python railway_defect_gui.py
http://www.jsqmd.com/news/1108529/

相关文章:

  • 多租户 SaaS 权限怎么设计?从组织、角色到资源隔离
  • 实战案例:基于AI视觉与视频分析的SOP装配动作实时防错系统落地分享
  • 5秒解锁音乐自由:ncmdump如何让网易云NCM格式秒变通用MP3
  • 3个设计哲学:芋道源码如何重塑企业级Java开发范式
  • Sunshine游戏串流:打造你的终极跨平台游戏云主机
  • 从公开资料看必火AI数字人:产品定位、核心场景与内容链路
  • 3大AI图像处理工具,让Krita选区效率提升10倍
  • 房产估价模型:三层可解释架构与领域特征工程实战
  • Agent记忆管理怎么设计的?
  • 手机号查QQ号终极指南:本地化隐私保护解决方案
  • FreeClip2 | 请叫我小HiFi!新手闭眼抄作业✅
  • Windows本地语音识别终极指南:3大核心技术突破让电脑自动记录一切对话
  • 芋道源码框架深度解析:5大企业级架构优势与技术选型指南
  • paperxie 论文写作实操指南:跟着页面填写流程,一站式搞定全类型学术文稿
  • 大模型学习路线图:小白也能轻松入门,收藏这份进阶指南
  • Sunshine游戏串流主机完全指南:如何快速搭建你的跨平台游戏云
  • VMware虚拟机网络不通?7个致命配置陷阱正在偷走你的连接(附逐行诊断脚本)
  • RustNfsSvc - Windows下的 NFS4 服务器
  • 深度解析UnrealPakViewer:Pak文件分析的3大核心技术实现
  • Range-based 循环语法
  • 收藏!没有CS背景?小白也能逆袭成为AI工程师(附实操路线图)
  • 【计算机毕业设计案例】基于 SpringBoot 的应急仓储物资数字化管理系统的设计与实现 基于 SpringBoot 的应急物资申领出库审批系统(程序+文档+讲解+定制)
  • stl 容器新增的实用方法介绍
  • 如何免费解锁Wand专业版:从2小时限制到无限游戏体验
  • Selenium WebDriver在.NET 4.8.1 ClickOnce部署中的五大痛点与解决方案
  • 移动云盘签到 - 青龙面板自动签到脚本
  • STM32与74HC32硬件消抖键盘设计实践
  • 程序员量化交易实战 28:把价格输入抽象成价格源
  • auto 关键字
  • 千屏千面,第一眼不能砸:登录场景的“适配“与“防闪“之道