Ubuntu下无脑跑通yolov5目标检测与跟踪(Pycharm+Pytorch1.7.1+Cuda10.1)
此文章记录如何在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,修改内容如下:
声明train
和val
文件的路径,类别数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)相关推荐
- YOLO学习01(跑通yolov5尝试)
目录 一.前期理论学习 二.使用YOLO(复现yolov5) 1.环境搭建 2.认识YOLO代码中的文件并简单运行(detect.py) 3.模型训练(train.py) 一.前期理论学习 绘制思维导 ...
- 基于高通SNPE推理引擎的yolov5目标检测算法
上图源自Snapdragon Neural Processing Engine SDK Reference Guide,它展示了一个Deep Learning Neural Network在SNPE环 ...
- 跑通Yolov5的一些心得
跑通Yolov5的一些心得 1.文件安装准备(版本要求) #pytorch 1.5.1 #torchvision 0.6.1 #vs2015 conda create -n yolov5 python ...
- 简单快速建立pytorch环境YOLOv5目标检测 模型跑起来(超简单)
简单快速建立pytorch环境+实现YOLOv5目标检测 模型跑起来(超简单) 一.下载yolov5模型代码: yolo代码 提取码:2022 下载后解压 二.简单快速创建pytorch环境: 1.条 ...
- yolov5目标检测神经网络——损失函数计算原理
前面已经写了4篇关于yolov5的文章,链接如下: 1.基于libtorch的yolov5目标检测网络实现--COCO数据集json标签文件解析 2.基于libtorch的yolov5目标检测网络实现 ...
- 用opencv的dnn模块做yolov5目标检测
最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的.于是,我就想着编写一套用opencv的dnn模块做yol ...
- 睿智的目标检测56——Pytorch搭建YoloV5目标检测平台
睿智的目标检测56--Pytorch搭建YoloV5目标检测平台 学习前言 源码下载 YoloV5改进的部分(不完全) YoloV5实现思路 一.整体结构解析 二.网络结构解析 1.主干网络Backb ...
- 快速玩转Yolov5目标检测—没有好的显卡也能玩(二)
上篇 快速玩转Yolov5目标检测-没有好的显卡也能玩(一) 已经将YoloV5在我的笔记本电脑上快速跑起来了,因为电脑显卡一般,所以运行的CPU版本,从推理结果来看,耗时还是蛮高的,如下图,平均每 ...
- YOLOv5目标检测源码重磅发布了!
YOLOv5目标检测源码重磅发布了! https://github.com/ultralytics/yolov5 该存储库代表了对未来对象检测方法的超解析开源研究,并结合了在使用之前的YOLO存储库在 ...
最新文章
- python怎么安装pip-安装 Python 模块
- 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
- [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
- __bridge,__bridge_retained,__bridge_transfer
- WebForm-博客园-1.0-账户模块(Passport)-登录与注册
- CVTE 2016 春季实习校招一面(C++后台)
- 零基础,新手小白看过来!易用可视化工具推荐
- 第五章、Zigbee模块的数据传输
- latex中页眉怎么去掉_latex 去掉页眉
- 计算机房的正常温度和湿度,什么是机房温度、湿度标准?
- 【C#】EAN-13条形码生成与识别
- 基于Android+Springboot+Mybatis+Mysql的个人生活APP设计 说明书+项目源码
- 一个上海同济大学教师的工资单(zt tianya)
- python 发送邮件正文字体设置_smtplib文字邮件的发送
- Java 文件与字节流操作
- R语言—方差分析和多重比较
- [国嵌攻略][054][NandFlash驱动设计_写]
- 目前的大数据,具体有哪些优势?
- 【打印机设置】实验室打印机 DocuCentre 2020 彩色打印设置
- 使用Jackson处理yaml文件
热门文章
- 使用echartgl构建3D中国地图
- 数据结构、算法与应用c++语言描述(答案)
- 2010年5月4日 五四青年节
- 将MySQL数据导入hive时报错发现如下错误
- Matlab之矩阵分析基本应用(一)
- 随着无人新零售经济的崛起,商场、车站、大厦等各种场所都引入了无人饮品自动售货机,方便人们选购自己想要的饮品。购买者选择想要的饮品,通过投币或扫码的方式支付,支付成功后从出货口取出饮品。
- vue多个页面引用相同组件 在一个页面修改数据 多个页面受影响
- 一键打卡html,打卡操作.html
- CentOS Hive安装详细步骤
- 初探The History of Database