深度学习-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.hqwc.cn/news/94737.html

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

相关文章

IP子网的划分

文章目录 一、子网掩码1. 产生背景2. 定义3. 分类 二、VLSM算法1. 得出下列参数2. 计算划分结果3. 举例子计算 三、常见子网划分对应关系四、练习IP编址题目需求解题1. 192.168.1.100/282. 172.16.0.58/263. 25.83.149.222/254. 100.100.243.18/205. 10.100.100.100/10 首先可以…

随机森林算法

介绍 随机森林是一种基于集成学习的有监督机器学习算法。随机森林是包含多个决策树的分类器,一般输出的类别是由决策树的众数决定。随机森林也可以用于常见的回归拟合。随机森林主要是运用了两种思想。具体如下所示。 Breimans的Bootstrap aggregatingHo的random …

【ARMv8 SIMD和浮点指令编程】NEON 乘法指令——乘法知多少?

NEON 乘法指令包括向量乘法、向量乘加和向量乘减,还有和饱和相关的指令。总之,乘法指令是必修课,在我们的实际开发中会经常遇到。 1 MUL (by element) 乘(向量,按元素)。该指令将第一个源 SIMD&FP 寄存器中的向量元素乘以第二个源 SIMD&FP 寄存器中的指定值,将…

python venv 打包,更换路径后,仍然读取到旧路径 ,最好别换路径,采用docker封装起来

机械盘路径 /home/yeqiang/code/xxx 移动到 /opt/xxx 编辑/opt/xxx/venv/bin/activate VIRTUAL_ENV"/home/yeqiang/code/xxx/venv" 改为 VIRTUAL_ENV"/opt/xxx/venv" 下面还有这么多,参考: (venv) yeqiangyeqiang-MS-7B23:/…

冠达管理:成交量突然放大意味着什么?

在股票商场中,成交量是股市中非常重要的目标之一。股票成交量是指在一定时间内股票买卖所成交的总股数。当成交量忽然扩大时,这意味着股票商场的很多买卖正在产生,这一般会引起出资者的注重。在本文中,我们将从多个视点来剖析成交…

linux操作系统中的动静态库(未完)

1. 静态库与动态库 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的…

北京APP外包开发团队人员构成

下面是一个标准的APP开发团队构成,但具体的人员规模和角色可能会根据项目的规模和需求进行调整。例如,一些小型项目或初创公司可能将一些角色合并,或者聘请外包团队来完成部分工作。北京木奇移动技术有限公司,专业的软件外包开发公…

02_nodejs开发环境安装

02 【nodejs开发环境安装】 1.版本介绍 在命令窗口中输入 node -v 可以查看版本0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特…

detour编译问题及导入visual studio

Detours是经过微软认证的一个开源Hook库,Detours在GitHub上,网址为 https://github.com/Microsoft/Detours 注意版本不一样的话也是会出问题的,因为我之前是vs2022的所以之前的detours.lib不能使用,必须用对应版本的x64 Native To…

230902-部署Gradio到已有FastAPI及服务器中

1. 官方例子 run.py from fastapi import FastAPI import gradio as grCUSTOM_PATH "/gradio"app FastAPI()app.get("/") def read_main():return {"message": "This is your main app"}io gr.Interface(lambda x: "Hello, …

Flink 如何处理反压?

分析&回答 什么是反压(backpressure) 反压通常是从某个节点传导至数据源并降低数据源(比如 Kafka consumer)的摄入速率。反压意味着数据管道中某个节点成为瓶颈,处理速率跟不上上游发送数据的速率,而…

django.core.exceptions.AppRegistryNotReady: Apps aren‘t loaded yet.

运行django测试用例报错django.core.exceptions.AppRegistryNotReady: Apps arent loaded yet. 解决:在测试文件上方加上 django.setup() django.setup()是Django框架中的一个函数。它用于在非Django环境下使用Django的各种功能、模型和设置。 在常规的Django应用…