Ubuntu下无脑跑通yolov5目标检测与跟踪(Pycharm+Pytorch1.7.1+Cuda10.1)

此文章记录如何在ubuntu下部署yolov5网络,并训练自己的数据集

环境:ubuntu16.04+Pycharm+Pytorch1.7.1+Cuda10.1
具体如何在ubuntu下配置深度学习环境,可以参照此篇博客

一、配置环境并运行例程

1. 下载yolov5

下载地址:github链接
下载方式:进入github页面,点击右上角的code,复制图中网址。在目标文件夹中打开终端(进入目标文件夹中右键点击弹出框中的在终端打开),运行以下命令,将yolov5下载至该目录中

git clone https://github.com/ultralytics/yolov5

在这里插入图片描述
如果在pycharm中配置了深度学习环境,也可以像下图一样,先进入其中的Teminal界面,在到目标文件夹下(我这里将yolov5保存在了curling_detection文件夹下),运行上述命令,将yolov5下载到此文件夹下。
注意:此处需要先进入深度学习的环境中(我这里是lls_pytorch
在这里插入图片描述
下载完成后,会在目标文件夹下出现名为yolov5的文件夹,打开文件夹,包含以下内容。
在这里插入图片描述

2. 配置环境依赖

yolov5中的requirements.txt,这是一个配置环境依赖的脚本,里面包含了对所需各种库的版本要求。
先进入yolov5文件夹下,运行下面命令来配置环境依赖
shell pip install -r requirements.txt
在这里插入图片描述

3. 下载预训练模型

在路径yolov5/weights/下有脚本download_weights.sh,执行脚本可以下载yolov5系列的s,m,l,x四个模型,由于这里我只用到了最轻量级(当然也是最快)的yolov5s,所以我这里将脚本列表中的’m’、‘l’、'x’均删掉了,然后进入yolov5目录下执行该文件,使用

bash ./weights/download_weights.sh

在这里插入图片描述
下载完成后,会生成一个名为yolov5s.pt的压缩包,将此压缩包移至yolov5/weights/目录下。

4. 下载例程中的coco128数据集

可以直接进入网页中进行下载,然后放到yolov5的同级目录下
下载地址:在此处
注意观察coco128数据集的目录格式,在其数据集下分为了images和label文件夹,一个存放原图像,而另一个是存放的是与之对应的打标签后生成的txt文件。
在制作自己数据集时也要以此目录格式组织。(具体如何打标签后文会提到)
在这里插入图片描述

5. 数据集配置文件

关于coco128数据集的配置文件,yolov5中都已经为我们写好,下面做简要介绍。
首先在yolov5/data/文件夹下有一个coco128.yaml文件,该文件中写有数据集的训练集train和验证集val路径,类别数nc,类别名称names
(由于我们已经下载好了数据集,这里可以将下载网址注释掉)
在这里插入图片描述

6. 选择一个模型进行训练

yolov5/models中存放着模型的配置文件,我们打开yolov5s的配置文件yolov5s.yaml。当我们需要用自己的数据集进行训练时,只需改动该文件下的类别数nc
在这里插入图片描述

7. 开始训练

还是在yolov5目录下,运行下述命令

python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --weights ./weights/yolov5s.pt
> 参数说明:
--img 640 训练和测试输入大小,默认为[640, 640]
--batch 16 默认为16
--epoch 5 训练执行的周期数,一个epoch遍历一遍数据集
--data 数据集的配置文件路径
--cfg:模型的配置文件,默认为yolov5s.yaml
--weights 初始化权重参数路径,默认值''

在这里插入图片描述
开始训练:
在这里插入图片描述
最后,在训练结束后,会在yolov5/runs/train/下生成相应的exp文件夹,第n次测试会生成一个名为expn的文件夹,打开此文件夹,里面存放着训练的结果,最重要的是其中weights文件中的权重文件,其中包括best.pt为过程中效果最好的权重文件,last.pt为最后一次的权重文件。将best.pt改名为coco128.pt放入到yolov5/weights文件夹下。
在这里插入图片描述

8. 推理测试
  • 使用摄像头进行测试
python detect.py --source 0
  • 使用单张图片进行测试
    yolov5/data/images中存放着为我们准备好的两张图片bus.jpg和zidane.jpg
    例:我们使用bus.jpg进行测试,原图如下
    在这里插入图片描述
    我们在终端中运行下面的命令:

    python detect.py --source ./data/images/bus.jpg --weights ./weights/coco128.pt --conf 0.25
    

    参数说明
    –source 测试图片的路径
    –weights 训练得到的权重文件
    –conf 0.25 只显示置信度大于0.25的部分

最终的结果存放在yolov5/runs/detect中的最后一个exp文件中,最终的结果如下:
在这里插入图片描述

二、训练自己的数据集

实验目的:使用yolov5实现对冰壶的检测与跟踪

1. 收集数据

拍摄大量的冰壶图片。(这里我收集了516张冰壶图片)
在yolov5的同级目录下创建新的文件夹(我这里设置为curling_data),且包含images和labels两个子文件夹
将所有的冰壶图片放在images文件夹中

2. 制作标签数据

这里使用的打标签工具为labelImg
下载地址:github官网地址
具体安装使用方法可以参考这篇博客
标注要选择yolo格式,这样生成的文件为.txt文件,将所有.txt标签文件存放在label文件夹下。这样,image和label文件夹下分别存放着图片以及与之对应的标签文件。如下所示:
注意:如果你的标签数据是xml格式,xml与txt文件间的转换可以参考这篇博客
在这里插入图片描述

3. 组织文件结构

像上述coco样例一样,我们的数据集也要按下面的目录结构组织。
在这里插入图片描述
分别在images和labels文件夹下新建两个文件夹train和val,train中存放需要训练的图片(即516张冰壶图片),val中存放训练集中的一部分用作验证。创建好文件夹好,可以通过以下命令快速实现文件的移动

cd images/ #进入images文件夹
cp 2020010900*.jpg ./val #将0-99图片复制到val文件夹中
mv *.jpg ./train #将所有的jpg图片移动到train文件夹中
cd labels/ #进入labels文件夹
cp 2020010900*.txt ./val #将0-99txt文件复制到val文件夹中
mv *.txt ./train #将所有的txt文件移动到train文件夹中

整理好后的目录格式如下:
在这里插入图片描述

4. 修改配置文件

进入yolov5/data目录下,修改coco128.yaml文件内容。这里,我们可以先复制一份coco128.yaml,然后更名为curling516.yaml,修改内容如下:
声明trainval文件的路径,类别数nc以及类别名names(这里分为了两类,分别为red和yellow代表冰壶的颜色)
在这里插入图片描述

5. 修改模型配置文件

进入yolov5/models目录下,修改yolov5s.yaml文件内容。这里,我们可以先复制一份yolov5s.yaml,然后更名为curling_yolov5s.yaml,只需要修改类别数nc:
在这里插入图片描述

6. 开始训练

使用yolov5s进行训练,进入到yolov5文件夹下
执行训练命令:

python train.py --img 640 --batch 16 --epochs 30 --data ./data/curling516.yaml --cfg ./models/curling_yolov5s.yaml --weights ./weights/yolov5s.pt

训练结束后,会在yolov5/runs/train目录下的最后一个exp文件夹下生成一个名为weights文件夹,我们将该文件间里面的权重文件best.pt文件复制到yolov5/weights中,并更名为curling516_best.pt

7. 使用训练好的预训练模型进行测试
  • 单张图片测试
    和上面的coco样例一样,可以在网上找一张冰壶图片,在yolov5/data下新建一个文件夹名为curling_img,将图片存放在该文件夹中。
    执行测试命令:
python detect.py --source ./data/curling_img/curling.jpg --weights ./weights/curling516_best.pt --conf 0.5

最后会在yolov5/runs/detect目录下最后一个exp文件夹中生成检测后的图片如下:
在这里插入图片描述
在这里插入图片描述

  • 视频测试目标跟踪效果
    同样,可以将一段冰壶视频存放在yolov5路径下,然后执行下面命令(curling.avl为视频名称)
python detect.py --source curling.avl --weights ./weights/curling516_best.pt --conf 0.5

最终结果也保存在了yolov5/runs/detect的最后一个exp文件夹中。

参考文献:
1. Yolov5详细使用教程,以及使用yolov5训练自己的数据集
2. wiki/Train-Custom-Data
3. Ubuntu下深度学习环境的配置
4. 在 Ubuntu下安装使用labelImg
5. Yolo格式和Voc格式的相互转换

  • 26
    点赞
  • 207
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Anaconda、PyCharmPyTorch都是在Python开发中非常实用的工具。下面将分别介绍它们的安装。 首先,Anaconda是一个数据科学的IDE,含有许多科学计算库和Python包。在其官方网站(https://www.anaconda.com/products/individual)上下载对应操作系统的安装包,双击打开安装即可。在安装时需要进行一些设置,比如选择安装路径和添加环境变量等。安装完成后,可以在Anaconda的Navigator中找到安装好的Python环境,并在其中安装需要的包。 其次,PyCharm是一个受欢迎的Python开发工具,它有专业版和社区版两个版本。在其官方网站(https://www.jetbrains.com/pycharm/download/)上下载对应版本的安装包,双击打开安装即可。在安装时同样需要进行一些配置,比如选择安装路径、添加环境变量等。安装完成后,可以在PyCharm打开Anaconda中安装的Python环境,方便地进行Python开发。 最后,PyTorch是一个深度学习框架,安装流程有点复杂。首先需要安装Anaconda,然后在其中创建一个新的环境。在命令行上输入以下命令即可安装PyTorch: ``` conda install pytorch torchvision torchaudio cpuonly -c pytorch ``` 其中,包含了PyTorch的核心模块torch,以及一些常用的扩展模块torchvision和torchaudio。如果希望使用GPU进行计算,则需要额外安装对应的CUDA工具。 总的来说,Anaconda、PyCharmPyTorch都是非常实用的工具,在安装时需要注意一些配置,这些工具能够提高Python开发的效率和学习深度学习的体验。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值