yolov8训练火车轨道车站人员数据集 构建gui界面,识别检测车站重点人群(盲人婴儿轮椅)

以下文字及代码仅供参考。
实现目标:车站特殊人员检测与识别
车站重点人群关注数据集,轨道交通数据集
在这里插入图片描述

9868张,yolo和voc标注
4类,标注数量:
Normal: 正常 - 15272
Blind: 盲人 - 2675
Stroller: 婴儿推车 - 2842
Wheelchair: 轮椅 - 2970
Image num: 图像数量 - 9868
在这里插入图片描述
1
在这里插入图片描述

1
在这里插入图片描述
使用YOLOv8来训练和评估车站重点人群关注数据集。详细介绍从安装依赖、准备数据集、配置YOLOv8、训练和评估模型到构建GUI应用程序的完整流程。![

  1. 在这里插入图片描述

](https://i-blog.csdnimg.cn/direct/9554fe246e53443ba3fa2e05ad315541.png)

1. 安装依赖

首先确保你的环境中已经安装了必要的库。这里我们主要需要PyTorch和Ultralytics的YOLOv8实现。

pip install torch torchvision torchaudio  # 根据需要选择适合的版本
pip install ultralytics opencv-python

2. 准备数据集

假设你已经下载了数据集,并且它包含了YOLO格式和VOC格式的标注文件。确保数据集结构如下:

station_crowd/
├── images/
│   ├── train/
│   └── val/
└── labels/
    ├── train/
    └── val/

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

train: ./station_crowd/images/train/
val: ./station_crowd/images/val/

nc: 4  # 类别数量
names: ['Normal', 'Blind', 'Stroller', 'Wheelchair']

3. 配置YOLOv8

3.1 加载预训练模型或自定义模型

你可以选择加载YOLOv8的预训练模型开始训练,或者根据自己的需求定义模型架构。

from ultralytics import YOLO

# 加载预训练的YOLOv8n模型
model = YOLO('yolov8n.yaml')  # 或者 'yolov8n.pt' 如果你想从预训练权重开始

4. 训练模型

接下来,使用定义好的data.yaml文件开始训练。

# 开始训练
results = model.train(data='path/to/data.yaml', epochs=100, imgsz=640, batch=16)
  • epochs: 设置训练轮数。
  • imgsz: 输入图像的尺寸。
  • batch: 每批次图像的数量。

5. 评估模型

训练完成后,可以在验证集上评估模型性能。

# 在验证集上评估模型性能
metrics = model.val()
print(f"Validation mAP: {metrics.box.map}")

6. 构建GUI应用程序(可选)

提供一个简单的PyQt5 GUI示例,用于展示YOLOv8的检测结果。

首先,确保安装了PyQt5。

pip install PyQt5

然后,编写以下代码来构建GUI。

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget, QPushButton, QFileDialog
from PyQt5.QtGui import QPixmap, QImage
import cv2
import numpy as np
from ultralytics import YOLO

class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('YOLOv8 Crowd Detection')
        self.setGeometry(100, 100, 800, 600)

        self.image_label = QLabel(self)
        self.button = QPushButton("Load Image", self)
        self.button.clicked.connect(self.load_image)

        vbox = QVBoxLayout()
        vbox.addWidget(self.image_label)
        vbox.addWidget(self.button)
        self.setLayout(vbox)

        self.model = YOLO('path/to/your/best.pt')  # 使用训练好的模型

    def load_image(self):
        fname, _ = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\', "Image files (*.jpg *.png)")
        if fname:
            self.show_image(fname)

    def show_image(self, image_path):
        results = self.model.predict(source=image_path)
        img = cv2.imread(image_path)
        for r in results:
            for box in r.boxes.xyxy:
                x1, y1, x2, y2 = map(int, box)
                cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)

        height, width, channel = img.shape
        bytes_per_line = 3 * width
        q_img = QImage(img.data, width, height, bytes_per_line, QImage.Format_RGB888).rgbSwapped()
        pixmap = QPixmap.fromImage(q_img)
        self.image_label.setPixmap(pixmap)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = AppDemo()
    demo.show()
    sys.exit(app.exec_())

总结

如何使用YOLOv8训练车站重点人群关注数据集的整个过程,包括安装依赖项、准备数据集、配置YOLOv8、训练和评估模型以及构建一个简单的GUI应用程序展示检测结果。

仅供参考。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐