使用深度学习模型yolov5算法训练无人机视角下行人检测数据集 建立基于深度学习的行人检测系统 无人机行人检测数据集的训练及应用

使用深度学习模型训练无人机视角下行人检测数据集 建立基于深度学习的行人检测系统 无人机行人检测数据集的训练及应用


以下文字及代码仅供参考学习。
无人机行人检测数据集,检测无人机视角下步行和骑车的人
在这里插入图片描述

标签为people
在这里插入图片描述
1
在这里插入图片描述
使用深度学习模型训练无人机视角下的行人和骑车人检测系统,并进行推理,我们可以采用YOLOv5作为示例框架。以下是详细的环境配置、数据准备、模型训练以及推理代码。

环境配置

首先,确保你的开发环境已准备好。这里以YOLOv5为例:

安装依赖
  1. 创建并激活虚拟环境(可选但推荐):
python -m venv yolov5-env
source yolov5-env/bin/activate  # 在Windows上使用 `yolov5-env\Scripts\activate`
  1. 克隆YOLOv5仓库:
git clone https://github.com/ultralytics/yolov5
cd yolov5
  1. 安装必要的依赖:
pip install -r requirements.txt

数据准备

假设你已经有了一个标注好的无人机视角下行人和骑车人的数据集,格式为YOLO格式(每个图像有一个对应的.txt文件,其中包含边界框信息和类别标签)。你需要创建一个配置文件(如data.yaml),用于指定训练和验证数据集路径及类别信息:

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

nc: 1  # number of classes
names: ['people']  # class names

模型训练

使用以下命令开始训练你的模型。你可以从头开始训练,或者使用预训练权重来加速训练过程:

python train.py --img 640 --batch 16 --epochs 50 --data ./path/to/data.yaml --weights yolov5s.pt
  • --img: 输入图像尺寸。
  • --batch: 批量大小。
  • --epochs: 训练周期数。
  • --data: 数据集配置文件的路径。
  • --weights: 预训练权重文件的路径。

推理代码

训练完成后,可以使用以下Python脚本对新视频或图像进行推理:

from ultralytics import YOLO
import cv2

# 加载训练好的模型
model = YOLO('runs/train/exp/weights/best.pt')  # 替换为你的最佳模型路径

def detect_people(image_path):
    """
    对给定图像执行行人和骑车人检测。
    :param image_path: 图像文件路径。
    """
    img = cv2.imread(image_path)
    
    # 进行推理
    results = model(img)

    # 处理结果并绘制边界框
    for result in results:
        boxes = result.boxes.cpu().numpy()
        for box in boxes:
            r = box.xyxy[0].astype(int)
            cv2.rectangle(img, (r[0], r[1]), (r[2], r[3]), (0, 255, 0), 2)
            cls = int(box.cls[0])
            label = f'people {box.conf[0]:.2f}'
            cv2.putText(img, label, (r[0], r[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

    # 显示结果
    cv2.imshow('People Detection', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    # 调用detect_people函数处理单张图片
    detect_people('path/to/test/image.jpg')  # 替换为你的测试图像路径

视频处理

如果同学想要处理视频流或视频文件,可以稍微修改上述detect_people函数,使其能够读取并处理视频帧:

def process_video(video_path=0):
    """
    处理视频流或视频文件。
    :param video_path: 视频文件路径或摄像头设备ID,默认为0表示使用默认摄像头。
    """
    cap = cv2.VideoCapture(video_path)

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        # 对每一帧进行推理
        results = model(frame)

        # 绘制结果
        for result in results:
            boxes = result.boxes.cpu().numpy()
            for box in boxes:
                r = box.xyxy[0].astype(int)
                cv2.rectangle(frame, (r[0], r[1]), (r[2], r[3]), (0, 255, 0), 2)
                cls = int(box.cls[0])
                label = f'people {box.conf[0]:.2f}'
                cv2.putText(frame, label, (r[0], r[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
        
        # 显示结果
        cv2.imshow('People Detection', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):  # 按Q键退出
            break
    
    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    # 运行时指定视频文件路径或留空以使用摄像头
    process_video(video_path='path/to/your/video.mp4')  # 替换为你的视频文件路径或留空

建立一个基于深度学习的行人检测系统,利用训练好的权重文件(例如YOLOv5模型的best.pt),主要涉及到环境配置、加载模型、执行推理等步骤。以下是一个详细的指南,帮助你快速搭建这样一个系统。

环境配置

首先确保你的环境中已安装了必要的库和依赖项。这里以YOLOv5为例进行说明:

  1. 创建并激活虚拟环境(可选但推荐):

    python -m venv yolov5-env
    source yolov5-env/bin/activate  # 在Windows上使用 `yolov5-env\Scripts\activate`
    
  2. 克隆YOLOv5仓库

    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    
  3. 安装必要的依赖

    pip install -r requirements.txt
    

加载模型与执行推理

假设你已经有了训练好的权重文件(如best.pt),接下来可以按照以下步骤加载模型并对新的图像或视频进行推理。

对单张图片进行行人检测

以下是一个简单的Python脚本示例,演示如何对单张图片执行行人检测:

from pathlib import Path
import cv2
from ultralytics import YOLO

# 加载预训练的YOLOv5模型
model = YOLO('path/to/your/best.pt')  # 替换为你的模型路径

def detect_people(image_path):
    """
    对给定图像执行行人检测。
    :param image_path: 图像文件路径。
    """
    img = cv2.imread(image_path)
    
    # 进行推理
    results = model.predict(img)

    # 处理结果并绘制边界框
    for result in results:
        boxes = result.boxes.cpu().numpy()
        for box in boxes:
            r = box.xyxy[0].astype(int)
            if model.names[int(box.cls)] == 'people':  # 假设类别名为'people'
                cv2.rectangle(img, (r[0], r[1]), (r[2], r[3]), (0, 255, 0), 2)
                label = f'{model.names[int(box.cls)]} {box.conf:.2f}'
                cv2.putText(img, label, (r[0], r[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)

    # 显示结果
    cv2.imshow('People Detection', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    # 调用detect_people函数处理单张图片
    detect_people('path/to/test/image.jpg')  # 替换为你的测试图像路径
对视频流或视频文件进行行人检测

如果想要处理视频流或视频文件,可以稍微修改上述detect_people函数,使其能够读取并处理视频帧:

def process_video(video_path=0):
    """
    处理视频流或视频文件。
    :param video_path: 视频文件路径或摄像头设备ID,默认为0表示使用默认摄像头。
    """
    cap = cv2.VideoCapture(video_path)

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        # 对每一帧进行推理
        results = model.predict(frame)

        # 绘制结果
        for result in results:
            boxes = result.boxes.cpu().numpy()
            for box in boxes:
                r = box.xyxy[0].astype(int)
                if model.names[int(box.cls)] == 'people':  # 假设类别名为'people'
                    cv2.rectangle(frame, (r[0], r[1]), (r[2], r[3]), (0, 255, 0), 2)
                    label = f'{model.names[int(box.cls)]} {box.conf:.2f}'
                    cv2.putText(frame, label, (r[0], r[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2)
        
        # 显示结果
        cv2.imshow('People Detection', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):  # 按Q键退出
            break
    
    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    # 运行时指定视频文件路径或留空以使用摄像头
    process_video(video_path='path/to/your/video.mp4')  # 替换为你的视频文件路径或留空

基本框架,你可以根据实际需要进一步定制,比如增加更复杂的目标跟踪算法、优化性能或改进用户界面等。请确保将代码中的路径替换为你自己的数据集路径和模型路径。仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值