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

本文采用的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.rhkb.cn/news/117296.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 82 删除排序链表中的重复元素 II

LeetCode 82 删除排序链表中的重复元素 II 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/description/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目&am…

第7篇:ESP32连接按钮点亮LED无源喇叭播放声音

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播放音乐《涛声…

【pyqt5界面化工具开发-13】QtDesigner功能择优使用

目录 0x00 前言: 一、完成基本的布局 二、其他功能的使用 三、在代码行开发 0x00 前言: QtDesigner工具的择优使用: 1、他的界面开发,是我们主要需要使用的功能 2、他的其他功能的使用,有需要就可使用&#xff…

【python爬虫】9.带着小饼干登录(cookies)

文章目录 前言项目:发表博客评论post请求 cookies及其用法session及其用法存储cookies读取cookies复习 前言 第1-8关我们学习的是爬虫最为基础的知识,从第9关开始,我们正式打开爬虫的进阶之门,学习爬虫更多的精进知识。 在前面几…

mysql使用st_distance_sphere函数报错Incorrect arguments to st_distance_sphere

最近发现执行mysql st_distance_sphere报错了。 报错的信息是Incorrect arguments to st_distance_sphere。 最开始以为是跟mysql的版本有关系,所以看了下自己本地的mysql版本,执行一下sql select version(); 发现自己本地的mysql版本是 5.7.30 这…

基于深度学习的三维重建从入门实战教程 原理讲解 源码解析 实操教程课件下载

传统的重建方法是使用光度一致性等来计算稠密的三维信息。虽然这些方法在理想的Lambertian场景下,精度已经很高。 但传统的局限性,例如弱纹理,高反光和重复纹理等,使得重建困难或重建的结果不完整。 基于学习的方法可以引入比如镜面先验和反射先验等全局语义信息,使匹配…

如何使用 Amazon EMR 在 Amazon EKS 上构建可靠、高效、用户友好的 Spark 平台

这是 SafeGraph 技术主管经理 Nan Zhu 与亚马逊云科技高级解决方案架构师 Dave Thibault 共同撰写的特约文章。 SafeGraph 是一家地理空间数据公司,管理着全球超过 4100 万个兴趣点(POI,Point of Interest),提供品牌隶…

Java设计模式:四、行为型模式-10:访问者模式

一、定义:访问者模式 访问者模式:核心在于同一个事物不同视角下的访问信息不同。 在一个稳定的数据结构下,例如用户信息、雇员信息等,增加易变的业务访问逻辑。为了增强扩展性,将两部分的业务解耦的一种设计模式。 二…

基于springboot跟redis实现的排行榜功能(实战)

概述 前段时间,做了一个世界杯竞猜积分排行榜。对世界杯64场球赛胜负平进行猜测,猜对1分,错误0分,一人一场只能猜一次。 1.展示前一百名列表。 2.展示个人排名(如:张三,您当前的排名106579)。 一.redis so…

利用 AI 赋能云安全,亚马逊云科技的安全技术创新服务不断赋能开发者

文章分享自亚马逊云科技 Community Builder:李少奕 2023年6月14日,一年一度的亚马逊云科技 re:Inforce 全球大会在美国安纳海姆落下了帷幕。re:Inforce 是亚马逊云科技全球最大的盛会之一,汇集了来自全球各地的安全专家,共同学习、…

11.Redis数据库管理命令

Redis数据库管理命令 数据库管理selectdbsizeflushall / flushdb 数据库管理 redis 中的 database 是现成的,咱们用户不能创建新的数据库,也不能删除已有的数据库~ 默认 redis 给我们提供了 16 个数据库,名字为 数字0 到数字15 这16个数据库…

VS2019编译curl库

下载: curl-7.61.0.tar.gz 编译: 解压到一个文件下,然后右键以管理员权限运行buildconf.bat 编译x64的库使用的是x64 Native Tools Command Prompt for VS 2019 本机工具命令提示,如果想编译x86的库,可以选择x86 Nat…

纯 CSS 开关切换按钮

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>纯 CSS 开关切换按钮</title><style>html {font-size: 62.5%;}body {background-color: #1848a0;}.wrapper {position: absolute;left: …

Windows右键添加用 VSCODE 打开

1.安装VSCODE时 安装时会有个选项来添加&#xff0c;如下&#xff1a; ①将“通过code 打开“操作添加到windows资源管理器文件上下文菜单 ②将“通过code 打开”操作添加到windows资源管理器目录上下文菜单 说明&#xff1a;①②勾选上&#xff0c;可以对文件&#xff0c;目…

API管理风险:如何确保您的API安全与可靠?

API管理风险&#xff1a;如何确保您的API安全与可靠&#xff1f; 随着数字化时代的到来&#xff0c;应用程序接口&#xff08;API&#xff09;在现代软件开发中发挥着关键的作用。然而&#xff0c;API管理过程中存在着各种潜在的风险。本文将探讨如何有效地管理和缓解这些风险…

Django-跨域

一、基础概念 cors 跨域资源共享 二、跨域请求-简单请求 满足以下全部条件的请求为 简单请求 1.请求方法如下&#xff1a; GET or HEAR or POS 2.请求头仅包含如下&#xff1a; Accept、Accept-Language、Content-Language、Content-Type 3.ConTent-Type 仅支持如下三种&…

解决Ubuntu 或Debian apt-get IPv6问题:如何设置仅使用IPv4

文章目录 解决Ubuntu 或Debian apt-get IPv6问题&#xff1a;如何设置仅使用IPv4 解决Ubuntu 或Debian apt-get IPv6问题&#xff1a;如何设置仅使用IPv4 背景&#xff1a; 在Ubuntu 22.04(包括 20.04 18.04 等版本) 或 Debian (10、11、12)系统中&#xff0c;当你使用apt up…

jmeter 线程组

在jmeter中&#xff0c;通过指定并发数量、启动延迟时间和持续时间&#xff0c;并组织示例&#xff08;Samplers&#xff09;在多个线程之间的执行方式&#xff0c;实现模拟并发用户的行为。 添加线程组&#xff1a; 在测试计划中&#xff0c;右键点击“添加” -> “Thread…

音频——I2S 标准模式(二)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S format时序图逻辑分析仪抓包 I2S format 飞利浦 (I2S) 标准模式 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB&#xff0c;其他位一直到 LSB 按顺序传传输依…

考前冲刺上岸浙工商MBA的备考经验分享

2023年对于许多人来说都是不平凡的一年&#xff0c;历经三年的抗争&#xff0c;我们终于成功结束了疫情。而我也很幸运的被浙工商MBA项目录取&#xff0c;即将开始全新的学习生活。身为一名已在职工作6年的人&#xff0c;能够重回校园真是一种特别令人激动的体验。今天&#xf…