深度学习-4-二维目标检测-YOLOv5源码测试与训练

news/2024/7/10 0:00:20 标签: 深度学习, 目标检测, YOLO

本文采用的YOLOv5源码是ultralytics发行版3.1

YOLOv5源码测试与训练

1.Anaconda环境配置

1.1安装Anaconda

Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。

官方网址下载安装包:Free Download | Anaconda

开启终端安装

bash ~/Downloads/Anaconda3-2020.07-Linux-x86_64.sh

anaconda会自动将环境变量添加到PATH里面,但如果终端输入conda后,提示没有该命令。

可以自己配置环境变量。

sudo gedit ~/.bashrc

#在文件最后添加环境变量,保存退出,然后更新环境变量

export PATH=/home/meta/anaconda3/bin:$PATH

source ~/.bashrc

1.2conda虚拟环境中安装pytorch

首先创建虚拟环境,并激活

conda create -n yolov5_ultralytics python=3.7

conda activate yolov5_ultralytics

在新创建的虚拟环境下安装pytorch和其适配的cuda

conda install pytorch torchvision cudatoolkit=11.5 -c pytorch

2.下载项目文件到本地

2.1下载yolov5-ultralytics版本源码v3.1

Release v3.1 - Bug Fixes and Performance Improvements · ultralytics/yolov5 · GitHub

项目文件目录

2.2使用清华镜像源安装依赖包

在yolov5_ultralytics虚拟环境和yolov5项目目录下开启终端执行

终端进入虚拟环境命令,退出当前虚拟环境命令conda deactivate

conda activate yolov5_ultralytics

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2.3下载预训练权重文件

yolov5s.pt,yolov5m.pt,yolov5l.pt,yolov5x.pt ,放置在weights文件夹下

2.4测试项目文件detect.py

终端执行

python detect.py --source ./inference/images/ --weights weights/yolov5s.pt --conf 0.4

将权重文件替换为yolov5x.pt后图片检测结果对比 

3.准备VOC数据集

3.1从百度网盘下载VOC数据文件

  • VOCtrainval_06-Nov-2007.tar
  • VOCtrainval_11-May-2012.tar
  • VOCtest_06-Nov-2007.tar
  • get_voc_ubuntu.py

3个tar压缩包解压后组合成为一个文件夹VOCdevkit,将其拷贝到yolov5项目文件夹下。

3.2进行数据集的划分

终端执行python脚本,创建VOC文件夹,将数据文件转换为yolo格式

python get_voc_ubuntu.py

在VOCdevkit / VOC2007和VOCdevkit / VOC2012目录下生成了文件夹labels ;

在yolov5目录下生成了文件2007_train.txt, 2007_val.txt, 2007_test.txt, 2012_train.txt,2012_val.txt,train.txt, train.all.txt。

在VOC目录下生成了images和labels文件夹;

  • labels下的文件是JPEGImages文件夹下每一个图像的yolo格式的标注文件,这是由annotations的xml标注文件转换来的
  • yolov5目录下的train.txt和2007_test.txt分别给出了yolov5训练集图片和yolov5验证集图片的列表,含有每个图片的路径和文件名
  • VOC/images文件夹下有train和val文件夹,分别放置yolov5训练集和验证集图片;VOC/labels文件夹有train和val文件夹,分别放置yolov5训练集和验证集标签(yolo格式)

4.修改配置文件

主要是修改data和models目录下的yaml文件

4.1新建data/voc.yaml

复制voc.yaml文件后修改,注释掉自动下载的代码即可。

4.2新建models/yolov5s-voc.yaml

复制yolov5s.yaml文件后修改,只需将类别数量改为nc: 20

5.终端训练VOC数据集

在yolov5_ultralytics虚拟环境和yolov5项目目录下

开启终端执行

python train.py --data data/voc-new.yaml --cfg models/yolov5s-voc.yaml --weights weights/yolov5s.pt --batch-size 16 --epochs 200

训练过程可视化

tensorboard --logdir=./runs

6.测试训练出的网络模型

在yolov5_ultralytics虚拟环境和yolov5项目目录下

开启终端执行,测试图片

python detect.py --source ./VOC/images/val/000001.jpg --weights
runs/exp0/weights/best.pt --conf 0.4

性能统计

python test.py --data data/voc-new.yaml --weights runs/exp0/weights/best.pt --batch-size 16

7.导出ONNX文件

ONNX(Open Neural Network Exchange),开放神经网络交换,是一种模型IR,用于在各种深度学习训练和推理框架转换的一个中间表示格式。在实际业务中,可以使用Pytorch或者TensorFlow训练模型,导出成ONNX格式,然后再转换成目标设备上支持的模型格式,比如TensorRT Engine、NCNN、MNN等格式。ONNX定义了一组和环境、平台均无关的模型结构和参数的标准格式,来增强各种AI模型的可交互性,开放性较强。

# for ONNX export

pip install onnx>=1.7.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

# for CoreML export
pip install coremltools==4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

# export at 640x640 with batch size 1
python models/export.py --weights weights/yolov5s.pt --img 640 --batch 1


http://www.niftyadmin.cn/n/4994793.html

相关文章

OpenCV(十四):ROI区域截取

在OpenCV中,你可以使用Rect对象或cv::Range来截取图像的感兴趣区域(Region of Interest,ROI)。 方法一:使用Rect对象截取图像 Rect_(_Tp _x, _Tp _y, _Tp _width,_Tp _height) Tp:数据类型&…

OpenAI 创始人 Sam Altman 博客有一篇 10 年前的文章

OpenAI 创始人 Sam Altman 博客有一篇 10 年前的文章《Advice for ambitious 19 year olds》,给 19 岁年轻人的建议,从 #参考答案 看到,非常适合我们🤣年轻人,顺便用 GPT4 重新翻译了下全文。 太长不读纯摘要版本如下&…

分布式锁实现二. memcached分布式锁

文章目录 memcached分布式锁实现原理:优缺点 开发准备安装memcached服务端安装jar到maven本地仓库 代码开发初始化Memcached客户端锁相关操作核心代码源码传送本地运行效果docker运行编排文件 memcached分布式锁 实现原理: memcached带有add函数&#…

python编写MQTT订阅程序

Download | Eclipse Mosquitto 1、下载: https://mosquitto.org/files/binary/win64/mosquitto-2.0.17-install-windows-x64.exe 2、安装: 3、conf配置 1)使用notepad打开“C:\Program Files\mosquitto\mosquitto.conf”另存为c:\myapp\msquitto\mo…

提高Python并发性能 - asyncio/aiohttp介绍

在进行大规模数据采集时,如何提高Python爬虫的并发性能是一个关键问题。本文将向您介绍使用asyncio和aiohttp库实现异步网络请求的方法,并通过具体结果和结论展示它们对于优化爬虫效率所带来的效果。 1. 什么是异步编程? 异步编程是一种非阻…

邮箱授权码的获取(以qq邮箱为例)

第一步,登录你需要授权的邮箱(如登录qq邮箱主页面) 第二步,点击设置,选择账号 往下拉,找到POP3等服务中的服务状态,点击开启服务 在通过认证后得到授权码 在一些第三方登录中我们通过这个授权码…

Zip压缩文件夹php打包函数代码

Zip压缩文件夹php打包函数代码,Zip相关函数是PHP的扩展功能,此函数可以直接复制使用。 以下是代码: <?php # 将文件夹的文件压缩到文件里 class Zip {/*** 将目标文件夹下的内容压缩到zip中(zip包含文件夹目录)* @param $sourcePath *文件夹路径 例: /home/test* @p…

信息安全检测和应用信息系统安全测试

安全测试 信息安全检测&#xff0c;为软件/信息系统出具的软件检测报告&#xff08;或第三方检测报告、软件安全测试报告&#xff09;&#xff0c;是信息系统/软件上线前都需要的测试报告。 信息安全检测的标准&#xff1a; 信息安全检测依据DB31/T272-2008《计算机信息系统…