☰
无人机视角下行人检测数据集 基于深度学习的行人检测系统 无人机行人检测数据集的训练及应用
2026/10/21 2:37:01 网站建设 项目流程

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

文章目录

  • 使用深度学习模型训练无人机视角下行人检测数据集 建立基于深度学习的行人检测系统 无人机行人检测数据集的训练及应用
      • 环境配置
        • 安装依赖
      • 数据准备
      • 模型训练
      • 推理代码
      • 视频处理
      • 环境配置
      • 加载模型与执行推理
        • 对单张图片进行行人检测
        • 对视频流或视频文件进行行人检测

以下文字及代码仅供参考学习。
无人机行人检测数据集,检测无人机视角下步行和骑车的人

标签为people

1

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

环境配置

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

安装依赖
  1. 创建并激活虚拟环境(可选但推荐):
python-mvenv yolov5-envsourceyolov5-env/bin/activate# 在Windows上使用 `yolov5-env\Scripts\activate`
  1. 克隆YOLOv5仓库:
gitclone https://github.com/ultralytics/yolov5cdyolov5
  1. 安装必要的依赖:
pipinstall-rrequirements.txt

数据准备

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

train:./path/to/train/imagesval:./path/to/val/imagesnc:1# number of classesnames:['people']# class names

模型训练

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

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

推理代码

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

fromultralyticsimportYOLOimportcv2# 加载训练好的模型model=YOLO('runs/train/exp/weights/best.pt')# 替换为你的最佳模型路径defdetect_people(image_path):""" 对给定图像执行行人和骑车人检测。 :param image_path: 图像文件路径。 """img=cv2.imread(image_path)# 进行推理results=model(img)# 处理结果并绘制边界框forresultinresults:boxes=result.boxes.cpu().numpy()forboxinboxes: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函数,使其能够读取并处理视频帧:

defprocess_video(video_path=0):""" 处理视频流或视频文件。 :param video_path: 视频文件路径或摄像头设备ID,默认为0表示使用默认摄像头。 """cap=cv2.VideoCapture(video_path)whilecap.isOpened():ret,frame=cap.read()ifnotret:break# 对每一帧进行推理results=model(frame)# 绘制结果forresultinresults:boxes=result.boxes.cpu().numpy()forboxinboxes: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)ifcv2.waitKey(1)&0xFF==ord('q'):# 按Q键退出breakcap.release()cv2.destroyAllWindows()if__name__=='__main__':# 运行时指定视频文件路径或留空以使用摄像头process_video(video_path='path/to/your/video.mp4')# 替换为你的视频文件路径或留空

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

环境配置

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

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

    python-mvenv yolov5-envsourceyolov5-env/bin/activate# 在Windows上使用 `yolov5-env\Scripts\activate`
  2. 克隆YOLOv5仓库:

    gitclone https://github.com/ultralytics/yolov5cdyolov5
  3. 安装必要的依赖:

    pipinstall-rrequirements.txt

加载模型与执行推理

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

对单张图片进行行人检测

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

frompathlibimportPathimportcv2fromultralyticsimportYOLO# 加载预训练的YOLOv5模型model=YOLO('path/to/your/best.pt')# 替换为你的模型路径defdetect_people(image_path):""" 对给定图像执行行人检测。 :param image_path: 图像文件路径。 """img=cv2.imread(image_path)# 进行推理results=model.predict(img)# 处理结果并绘制边界框forresultinresults:boxes=result.boxes.cpu().numpy()forboxinboxes:r=box.xyxy[0].astype(int)ifmodel.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函数,使其能够读取并处理视频帧:

defprocess_video(video_path=0):""" 处理视频流或视频文件。 :param video_path: 视频文件路径或摄像头设备ID,默认为0表示使用默认摄像头。 """cap=cv2.VideoCapture(video_path)whilecap.isOpened():ret,frame=cap.read()ifnotret:break# 对每一帧进行推理results=model.predict(frame)# 绘制结果forresultinresults:boxes=result.boxes.cpu().numpy()forboxinboxes:r=box.xyxy[0].astype(int)ifmodel.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)ifcv2.waitKey(1)&0xFF==ord('q'):# 按Q键退出breakcap.release()cv2.destroyAllWindows()if__name__=='__main__':# 运行时指定视频文件路径或留空以使用摄像头process_video(video_path='path/to/your/video.mp4')# 替换为你的视频文件路径或留空

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询