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

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

文章目录

  • 一、配置环境并运行例程
    • 1. 下载yolov5
    • 2. 配置环境依赖
    • 3. 下载预训练模型
    • 4. 下载例程中的coco128数据集
    • 5. 数据集配置文件
    • 6. 选择一个模型进行训练
    • 7. 开始训练
    • 8. 推理测试
  • 二、训练自己的数据集
    • 1. 收集数据
    • 2. 制作标签数据
    • 3. 组织文件结构
    • 4. 修改配置文件
    • 5. 修改模型配置文件
    • 6. 开始训练
    • 7. 使用训练好的预训练模型进行测试

一、配置环境并运行例程

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格式的相互转换

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

  1. YOLO学习01(跑通yolov5尝试)

    目录 一.前期理论学习 二.使用YOLO(复现yolov5) 1.环境搭建 2.认识YOLO代码中的文件并简单运行(detect.py) 3.模型训练(train.py) 一.前期理论学习 绘制思维导 ...

  2. 基于高通SNPE推理引擎的yolov5目标检测算法

    上图源自Snapdragon Neural Processing Engine SDK Reference Guide,它展示了一个Deep Learning Neural Network在SNPE环 ...

  3. 跑通Yolov5的一些心得

    跑通Yolov5的一些心得 1.文件安装准备(版本要求) #pytorch 1.5.1 #torchvision 0.6.1 #vs2015 conda create -n yolov5 python ...

  4. 简单快速建立pytorch环境YOLOv5目标检测 模型跑起来(超简单)

    简单快速建立pytorch环境+实现YOLOv5目标检测 模型跑起来(超简单) 一.下载yolov5模型代码: yolo代码 提取码:2022 下载后解压 二.简单快速创建pytorch环境: 1.条 ...

  5. yolov5目标检测神经网络——损失函数计算原理

    前面已经写了4篇关于yolov5的文章,链接如下: 1.基于libtorch的yolov5目标检测网络实现--COCO数据集json标签文件解析 2.基于libtorch的yolov5目标检测网络实现 ...

  6. 用opencv的dnn模块做yolov5目标检测

    最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的.于是,我就想着编写一套用opencv的dnn模块做yol ...

  7. 睿智的目标检测56——Pytorch搭建YoloV5目标检测平台

    睿智的目标检测56--Pytorch搭建YoloV5目标检测平台 学习前言 源码下载 YoloV5改进的部分(不完全) YoloV5实现思路 一.整体结构解析 二.网络结构解析 1.主干网络Backb ...

  8. 快速玩转Yolov5目标检测—没有好的显卡也能玩(二)

    上篇  快速玩转Yolov5目标检测-没有好的显卡也能玩(一) 已经将YoloV5在我的笔记本电脑上快速跑起来了,因为电脑显卡一般,所以运行的CPU版本,从推理结果来看,耗时还是蛮高的,如下图,平均每 ...

  9. YOLOv5目标检测源码重磅发布了!

    YOLOv5目标检测源码重磅发布了! https://github.com/ultralytics/yolov5 该存储库代表了对未来对象检测方法的超解析开源研究,并结合了在使用之前的YOLO存储库在 ...

最新文章

  1. python怎么安装pip-安装 Python 模块
  2. 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
  3. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
  4. __bridge,__bridge_retained,__bridge_transfer
  5. WebForm-博客园-1.0-账户模块(Passport)-登录与注册
  6. CVTE 2016 春季实习校招一面(C++后台)
  7. 零基础,新手小白看过来!易用可视化工具推荐
  8. 第五章、Zigbee模块的数据传输
  9. latex中页眉怎么去掉_latex 去掉页眉
  10. 计算机房的正常温度和湿度,什么是机房温度、湿度标准?
  11. 【C#】EAN-13条形码生成与识别
  12. 基于Android+Springboot+Mybatis+Mysql的个人生活APP设计 说明书+项目源码
  13. 一个上海同济大学教师的工资单(zt tianya)
  14. python 发送邮件正文字体设置_smtplib文字邮件的发送
  15. Java 文件与字节流操作
  16. R语言—方差分析和多重比较
  17. [国嵌攻略][054][NandFlash驱动设计_写]
  18. 目前的大数据,具体有哪些优势?
  19. 【打印机设置】实验室打印机 DocuCentre 2020 彩色打印设置
  20. 使用Jackson处理yaml文件

热门文章

  1. 使用echartgl构建3D中国地图
  2. 数据结构、算法与应用c++语言描述(答案)
  3. 2010年5月4日 五四青年节
  4. 将MySQL数据导入hive时报错发现如下错误
  5. Matlab之矩阵分析基本应用(一)
  6. 随着无人新零售经济的崛起,商场、车站、大厦等各种场所都引入了无人饮品自动售货机,方便人们选购自己想要的饮品。购买者选择想要的饮品,通过投币或扫码的方式支付,支付成功后从出货口取出饮品。
  7. vue多个页面引用相同组件 在一个页面修改数据 多个页面受影响
  8. 一键打卡html,打卡操作.html
  9. CentOS Hive安装详细步骤
  10. 初探The History of Database