YOLOv9使用教程(包括YOLOv9+DeepSORT)

本文详细介绍了如何安装和配置YOLOv9模型,包括在Ubuntu系统上的步骤,设置权重,进行图像和视频推理,以及训练过程中的注意事项。还涉及了如何将YOLOv9与DeepSORT算法结合进行对象检测和跟踪的代码示例。
摘要由CSDN通过智能技术生成

完整教程来自:

How to Train YOLOv9 on a Custom Dataset

YOLOv9+DeepSORT教程和代码:

GitHub - sujanshresstha/YOLOv9_DeepSORT: This repository contains code for object detection and tracking in videos using the YOLOv9 object detection model and the DeepSORT algorithm.

本文旨在记录学习,如有侵权则会删除。

1. 安装YOLOv9软件包和第三方库:

git clone https://github.com/SkalskiP/yolov9.git

cd yolov9

pip3 install -r requirements.txt -q

 (可选)可以先检查当前虚拟环境下已有的库,在requirements.txt中注释掉,节省时间

        例如:torch和torchvision

conda list

        如果报超时的错建议把-q去掉,看看是哪个库安装有问题

        -q指静态安装,在安装库的过程中不会打印信息

pip3 install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple

         报错(先不管):

 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.

2. 设置主目录下载权重:

        考虑到Ubuntu机子可能没法翻墙,这里不用官网教程。

        先在能翻墙的Windows上下好权重文件再发给Ubuntu。

  GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

         yolov9文件夹下手动建立weights文件夹,保存权重文件

        模型大小:s<m<c<e

        YOLOv9-s和YOLOv9-m还没放出来

3. 模型推理:

        下载一张狗的图片传到Ubuntu

        https://media.roboflow.com/notebooks/examples/dog.jpeg

        对这张图片进行推理:

        保证命令窗在yolov9文件的路径下,下面命令要使用相对路径

python detect.py --weights weights/yolov9-c.pt --conf 0.1 --source data/dog.jpeg --device 0

        

        出现这条语句表示推理成功,在对应路径中可以看到结果

         结果如下:

         在视频上实验速度:

video 1/1 (1046/1050) /home/user/aaLBwork/YOLOv9_DeepSORT-main/yolov9/street.mp4: 384x640 24 persons, 7 bicycles, 1 car, 1 motorcycle, 1 truck, 5 handbags, 3 potted plants, 35.8ms
video 1/1 (1047/1050) /home/user/aaLBwork/YOLOv9_DeepSORT-main/yolov9/street.mp4: 384x640 24 persons, 8 bicycles, 2 cars, 1 motorcycle, 1 truck, 5 handbags, 1 tie, 3 potted plants, 35.3ms
video 1/1 (1048/1050) /home/user/aaLBwork/YOLOv9_DeepSORT-main/yolov9/street.mp4: 384x640 24 persons, 8 bicycles, 1 car, 2 motorcycles, 1 truck, 5 handbags, 1 tie, 3 potted plants, 38.8ms
video 1/1 (1049/1050) /home/user/aaLBwork/YOLOv9_DeepSORT-main/yolov9/street.mp4: 384x640 22 persons, 5 bicycles, 1 car, 1 motorcycle, 1 truck, 4 handbags, 1 tie, 3 potted plants, 36.8ms
video 1/1 (1050/1050) /home/user/aaLBwork/YOLOv9_DeepSORT-main/yolov9/street.mp4: 384x640 23 persons, 6 bicycles, 2 cars, 2 motorcycles, 1 truck, 1 backpack, 3 handbags, 1 tie, 2 potted plants, 36.0ms
Speed: 0.4ms pre-process, 36.4ms inference, 1.0ms NMS per image at shape (1, 3, 640, 640)
 

4. 模型训练:

        0. 找数据集的网站:

        The latest in Machine Learning | Papers With Code

        包含各类文章,数据集,模型排名

        OpenDataLab 引领AI大模型时代的开放数据平台

        国产数据集平台,种类很多(不用翻墙)

        Roboflow Universe: Open Source Computer Vision Community

        针对视觉的数据集交流平台

        1. 数据集下载:

        本博客采用roboflow下载数据集,好处在于:

        几百张图片的小数据集比较好找;能够在下载时提前选择标签类型(txt、json)

        安装roboflow库:

pip install roboflow

        找到数据集对应的下载代码:

        先在Roboflow Universe: Open Source Computer Vision Community找到想要的数据集,点进界面如下图这种所示。

        

        然后点download找到需要的数据集标签类型,例如YOLOv7,点击后选择show download code,就可以看到对应下载代码,例子如下所示:

        

        自建一个dataDown.py文件,把这一段放进dataDown.py文件运行即可。

from roboflow import Roboflow
rf = Roboflow(api_key="****************")
project = rf.workspace("fyp-5uyrm").project("fyp2022")
version = project.version(2)
dataset = version.download("yolov7")

        命令行运行:

python dataDown.py

        有报错cv的错的话,在要先在命令行运行以下代码:

pip uninstall opencv-python

pip install opencv-python-headless==4.8.0.74 -i https://pypi.mirrors.ustc.edu.cn/simple

        2. 开始训练:

python train.py --batch 4 --epochs 20 --img 640 --device 0 --min-items 0 --close-mosaic 15 --data ./FYP2022-2/data.yaml --weights ./weights/yolov9-c.pt --cfg ./models/detect/yolov9-c.yaml --hyp ./data/hyps/hyp.scratch-high.yaml

        实时显示显卡使用情况:

watch -n 1 nvidia-smi

        报错:AttributeError: 'list' object has no attribute 'view'

pred_distri, pred_scores = torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split(
AttributeError: 'list' object has no attribute 'view'

        解决方法:

        去yolov9/utils/loss_tal.py把167行代码更改:

feats = p[1] if isinstance(p, tuple) else p

        改成:

feats = p[1] if isinstance(p, tuple) else p[0] 

        成功运行:

        

        单机多卡分布式训练(DDP):

python train.py --batch 24 --epochs 20 --img 640 --device 0,1,2,3 --min-items 0 --close-mosaic 15 --data ./FYP2022-2/data.yaml --weights ./weights/yolov9-c.pt --cfg ./models/detect/yolov9-c.yaml --hyp ./data/hyps/hyp.scratch-high.yaml

        报错:Attributeerror: ‘FreeTypeFont‘ object has no attribute ‘getsize‘

pip install Pillow==9.5

        3. YOLO训练KITTI数据集:

        用yolov5训练kitti数据集-CSDN博客

5. YOLOv9+DeepSORT代码运行:

        先在网站下载YOLOv9+DeepSORT源代码并解压:GitHub - sujanshresstha/YOLOv9_DeepSORT: This repository contains code for object detection and tracking in videos using the YOLOv9 object detection model and the DeepSORT algorithm.

        

        将前文中YOLOv9复制一份到YOLOv9_DeepSORT解压后的文件下,文件夹结构如下:

        

        按照前文的教程运行YOLOv9+DeepSORT的requirements.txt文件:

pip3 install -r requirements.txt

        

        核心就是object_tracking.py文件,将object_tracking.py和视频复制到yolov9文件夹中,打开yolov9的文件夹,应当如下所示:

        画框的是上一步操作复制进来的,剩下的是yolov9本身自带的文件。

        然后根据自己下的yolov9权重文件改object_tracking.py的第41行,使权重名称对应:

        

        更改对应的命令行路径:

        

        实现程序运行并保存结果:

$mkdir video_output

$python object_tracking.py --video ./street.mp4 --output ./video_output/output.mp4

        结果展示:

         

        

        

         运行时间:

Frame time: 0.0791172981262207
Frame time: 0.07877635955810547
Frame time: 0.07926011085510254
Frame time: 0.07754135131835938
Frame time: 0.09343552589416504
Frame time: 0.13364338874816895
Frame time: 0.09375524520874023
Frame time: 0.15111160278320312
Frame time: 0.15563488006591797
Frame time: 0.15617108345031738
Frame time: 0.150360107421875
Frame time: 0.14967060089111328

Yolov5+DeepSort是一种目标检测和目标跟踪的算法组合,可以在视频中实现实时的多目标跟踪。在GitHub上,你可以找到相关的源码和使用教程。 以下是使用Yolov5+DeepSort源码的一般步骤: 1. 下载源码:首先,你需要在GitHub上找到Yolov5和DeepSort的源码仓库,并将其下载到本地。 2. 安装依赖:在运行源码之前,你需要安装相关的依赖库。通常,这些依赖库包括PyTorch、NumPy、OpenCV等。你可以根据源码仓库中的要求进行安装。 3. 准备数据集:为了训练和测试模型,你需要准备一个适当的数据集。这个数据集应该包含标注好的图像或视频,并且标注信息应该包括目标的类别和位置。 4. 训练模型:使用准备好的数据集,你可以开始训练Yolov5模型。根据源码仓库中的指导,你需要运行相应的训练脚本,并设置好相关的参数,如学习率、批大小等。训练过程可能需要一定的时间,具体取决于你的硬件配置和数据集的大小。 5. 测试模型:在训练完成后,你可以使用训练好的Yolov5模型进行目标检测。根据源码仓库中的指导,你需要运行相应的测试脚本,并提供待检测的图像或视频作为输入。测试过程将输出检测到的目标及其位置。 6. 应用DeepSort:一旦你完成了目标检测,你可以将DeepSort算法应用于检测到的目标,以实现目标跟踪。根据源码仓库中的指导,你需要运行相应的跟踪脚本,并提供目标检测的结果作为输入。跟踪过程将输出每个目标的唯一ID和轨迹信息。 以上是一般的使用教程概述,具体的步骤和细节可能因源码仓库的不同而有所差异。建议你在GitHub上找到对应的源码仓库,并参考其中的详细文档和示例代码来进行具体操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值