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

news2024/12/26 20:57:02

本文采用的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.coloradmin.cn/o/962707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SQL应知应会】索引 • Oracle版:B-树索引;位图索引;函数索引;单列与复合索引;分区索引

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文免费学习,自发文起3天后,会收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle …

面试被打脸,数据结构底层都不知道么--回去等通知吧

数据结构之常见的8种数据结构: -数组Array -链表 Linked List -堆 heap -栈 stack -队列 Queue -树 Tree -散列表 Hash -图 Graph 数据结构-链表篇 Linklist定义: -是一种线性表,并不会按线性的顺序存储数据,即逻辑上相邻…

解码自我注意的魔力:深入了解其直觉和机制

一、说明 自我注意机制是现代机器学习模型中的关键组成部分,尤其是在处理顺序数据时。这篇博文旨在提供这种机制的详细概述,解释它是如何工作的,它的优点,以及它背后的数学原理。我们还将讨论它在变压器模型中的实现和多头注意力的…

设计模式-10--多例模式(Multition pattern)

一、什么是多例模式(Multition pattern) 多例模式(Multition pattern)是单例模式的一种扩展,它属于对象创建类型的设计模式。在多例模式中,一个类可以有多个实例,并且这些实例都是该类本身。因…

实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务

文章目录 1. 前言2. 本地文件服务器搭建2.1 python的安装和设置2.2 cpolar的安装和注册 3. 本地文件服务器的发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用…

设计模式-5--适配器模式(Adapter Pattern)

一、什么是适配器模式(Adapter Pattern) 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器模式主要用于解决不兼容接口之间的问题,使得原本…

Windows安装jdk

Windows安装jdk 小白教程,一看就会,一做就成。 1.准备安装包(需要的滴滴我) 2.安装 我是在d盘创建jdk目录,把jdk包解压到jdk里 计算机右键---属性---高级系统设置—环境变量 (系统变量里)--新…

小兔鲜儿 - 地址模块

目录 小兔鲜儿 - 地址模块 准备工作​ 静态结构​ 地址管理页​ 地址表单页​ 动态设置标题​ 新建地址页​ 接口封装​ 参考代码​ 地址管理页​ 接口调用​ 参考代码​ 修改地址页​ 数据回显​ 更新地址​ 表单校验​ 操作步骤​ 删除地址​ 侧滑组件用法…

Leetcode 剑指 Offer II 042. 最近的请求次数

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 写一个 RecentCounter 类来计算特定时间范围内最近的请求。 请实…

4.2 实现基于栈的表达式求值计算器(难度4/10)

本作业主要考察:解释器模式的实现思想/栈结构在表达式求值方面的绝对优势 C数据结构与算法夯实基础作业列表 通过栈的应用,理解特定领域设计的关键作用,给大家眼前一亮的感觉。深刻理解计算机语言和人类语言完美结合的杰作。是作业中的上等…

钉钉机器人消息推送composer拓展 laravel-dingbot

钉钉机器人消息发送 介绍 企业内部有较多系统支撑着公司的核心业务流程,譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人,可以将这些系统事件同步到钉钉的聊天群。 laravel-dingbot 是一款钉钉机器人消息推送的Laravel扩展&#xff…

vscode c语言代码自动格式化

1、在vscode扩展商店里面搜索Clang-format,安装第1个插件 2、快捷键Ctrl逗号,输入format,选择Clang-Format configuration进行配置(其实默认就可以) 3、vscode打开文件夹的源码,在该文件夹里面新建一个文件…

[前端必看,后端福利❤]如何创建美观的邮件模板并通过qq邮箱的SMTP服务向用户发送

最近在写注册功能的自动发送邮箱告知验证码的功能,无奈根本没有学过前端,只有写Qt的qss基础,只好借助网页设计自己想要的邮箱格式,最终效果如下: 也推销一下自己的项目ShaderLab,可运行ShaderToy上的大部分着色器代码&…

js只保留数组对象的某个属性,合并公共类型的数据,选择树形结构的数据,并保留每个节点的name

嗨,今天周二了哎! 期待周五 文章目录 一、js只保留数组对象的某个属性二、合并公共类型的数据二、选择树形结构的数据,并保留每个节点的name 一、js只保留数组对象的某个属性 let data [{ id: 1, name: 哈哈 }, { id: 2, name: 嘻嘻 }]let n…

ModaHub魔搭社区——大模型能力落地和核心就是应用场景

从今年3月百度率先发布语言大模型生成式AI产品“文心一言”后,各大科技互联网巨头纷纷入局,国内大模型瞬间遍地开花。包括阿里、华为、商汤科技、科大讯飞、360、腾讯等,纷纷推出各类大模型。 人工智能正在进入大规模落地应用关键期。 在IDC近日发布的《中国人工智能公有云…

本地虚机Jumpserver使用域名访问报错 使用IP+端口没有错误

背景: 我在本地Windows VMware 15的环境中部署了CentOS7.5,下载jumpserver-offline-installer-v2.28.1-amd64-138.tar.gz并安装部署。 需求: 1、能使用http:ip访问堡垒机。达成; 2、能使用http:域名访问堡垒机。达成&#xff…

FPGA时序分析与约束(2)——时序电路时序

一、前言 在之前的内容中,我们介绍了组合电路的时序问题和可能导致的毛刺,强烈推荐在阅读前文的基础上再继续阅读本文, 前文链接:FPGA时序分析与约束(1)——组合电路时序 这篇文章中,我们将继续…

Android安卓webview,网页端生成安卓项目(极速生成)教程

Android安卓webview,网页端生成安卓项目(极速生成)教程 一,前言 当自己做了一个PC端的页面,也就是前端的页面,或者已经上服的页面,但也想生成一个安卓端供用户使用,本教程详细讲解…

九种情况,要知道灵活变通

九种情况,要知道灵活变通 【安志强趣讲《孙子兵法》第27讲】 第八篇:九变 【全篇大白话】 战场千变万化,胜败看实力,还要看将帅的应变能力。 【原文】 孙子曰:凡用兵之法,将受命于君,合军聚众&a…

解决计算机视觉模型中的种族和性别偏见问题,Meta开源 FACET工具

Meta 公司最新推出的 FACET 工具是为了解决计算机视觉模型中存在的种族和性别偏见问题。该工具经过三万张图片的训练,并含有五万人的图像,特别强调了性别和肤色方面的感知能力。 通过评估计算机视觉模型在不同特征上的表现,FACET 工具可以回答…