如何使用深度学习目标检测框架Yolov8训练非机动车检测数据集 训练出的权重来识别电动车 自行车 摩托车的检测 ——检测电动车违规进电梯、非机动车违停

非机动车电动车自行车数据集在这里插入图片描述

电动车、电瓶车、摩托车、自行车数据,目标检测;

训练集10000,验证集3278;
yolo格式、voc格式,

标签类别及标签个数:
motor:10987
bicycle:1667
person:31129
在这里插入图片描述

为了使用YOLOv8训练的目标检测模型,您可以遵循以下步骤。请注意,基于通用的YOLOv8训练流程,并假设已经安装了必要的环境和依赖项。在这里插入图片描述

1. 准备工作

确保您已经安装了YOLOv8及其依赖项。如果尚未安装,可以使用pip进行安装:

pip install ultralytics

2. 数据集准备

根据您的描述,数据集已准备好并划分为训练集和验证集,标注格式为YOLO和VOC两种。接下来,需要创建一个data.yaml文件来定义数据集路径和类别信息:

train: /path/to/train/images
val: /path/to/val/images

nc: 3 # 类别数量
names: ['motor', 'bicycle', 'person'] # 类别名称

3. 训练模型

使用YOLOv8命令行工具开始训练过程。下面是一个基本的训练命令示例:

yolo task=detect mode=train model=yolov8n.pt data=/path/to/data.yaml epochs=100 imgsz=640
  • task=detect 指定任务类型为目标检测。
  • mode=train 表示进入训练模式。
  • model=yolov8n.pt 定义使用的预训练模型权重,您可以选择不同大小的模型(如yolov8s.pt, yolov8m.pt等)。
  • data=/path/to/data.yaml 指向之前创建的data.yaml配置文件。
  • epochs=100 设置训练周期数。
  • imgsz=640 设置输入图像尺寸。

4. 关键代码片段

如果您更倾向于编程方式而非命令行工具,可以使用如下Python代码进行训练:

from ultralytics import YOLO

# 加载预训练模型
model = YOLO('yolov8n.pt')

# 开始训练
results = model.train(data='/path/to/data.yaml', epochs=100, imgsz=640)

5. 验证与测试

训练完成后,可以使用验证集评估模型性能:

yolo task=detect mode=val model=/path/to/your/trained/model.pt data=/path/to/data.yaml

或者在Python中:

results = model.val()

这将输出模型在验证集上的性能指标,如mAP值等。

创建一套基于训练好的YOLOv8权重的非机动车检测识别系统涉及几个关键步骤,包括加载模型、处理输入(视频或图像)、执行推理以及展示或保存结果。以下是一个简化的流程和示例代码,帮助您构建这样的系统。

1. 加载模型

首先,确保您的环境中已经安装了ultralytics库,并且拥有训练好的模型权重文件(.pt)。

from ultralytics import YOLO

# 加载训练好的模型权重
model = YOLO('/path/to/your/trained/model.pt')

2. 处理输入数据

您可以从图像或视频流中获取输入数据。下面分别给出处理图像和视频的示例。

图像检测
import cv2

# 读取待检测的图像
img = cv2.imread('/path/to/your/image.jpg')

# 执行推理
results = model(img)

# 解析结果并绘制边界框
for result in results:
    boxes = result.boxes.numpy()
    for box in boxes:
        r = box.xyxy
        cv2.rectangle(img, (int(r[0]), int(r[1])), (int(r[2]), int(r[3])), (0, 255, 0), 2)
        
# 展示结果图像
cv2.imshow('Detected Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
视频检测

对于实时视频流或视频文件,可以使用OpenCV来捕获每一帧进行处理。

cap = cv2.VideoCapture('/path/to/your/video.mp4') # 或者使用0作为参数以打开摄像头

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    
    # 执行推理
    results = model(frame)
    
    # 解析结果并绘制边界框
    for result in results:
        boxes = result.boxes.numpy()
        for box in boxes:
            r = box.xyxy
            cv2.rectangle(frame, (int(r[0]), int(r[1])), (int(r[2]), int(r[3])), (0, 255, 0), 2)
    
    # 展示结果
    cv2.imshow('Frame', frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

3. 结果处理与展示

上述代码片段中已经包含了简单的结果处理逻辑,主要是解析检测结果并在原图上绘制边界框。根据实际应用场景,您可能需要进一步处理这些结果,例如计算目标的位置、速度等信息,或者在检测到特定事件时触发报警。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值