yolov5 上手

0 介绍

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的约瑟夫-雷德蒙(Joseph Redmon)和阿里-法哈迪(Ali Farhadi)开发。YOLO 于 2015 年推出,因其高速度和高精确度而迅速受到欢迎。

YOLOv5 在 YOLOv4 的基础上进一步提高了模型的性能,并增加了超参数优化、集成实验跟踪和自动导出为常用导出格式等新功能。

1 环境搭建

1.1 python 环境

使用 conda 创建干净的 python 环境,conda 的安装和其他软件安装类似。

conda 创建 python 环境:

conda create -n yolo

有可能在这一步出现 Conda cannot proceed due to an error in your proxy configuration.,或者CondaHTTPError: HTTP 000 CONNECTION FAILED for url …等相关的网络问题。一个可行的解决方法是修改~/.condarc,修改 conda 的镜像配置:

vim ~/.condarc// 把下面的内容添加到文件的末尾
channels:- defaults
show_channel_urls: true
default_channels:- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch-lts: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

一般情况下此时问题已经解决了。也有可能会出现SSLError(SSLError(SSLError(“bad handshake: Error(…)”)))相关的报错。SSL 连接问题极有可能是 https 安全性导致的问题,可以把上面~/.condarc中的一系列地址中的 https 都改成了 http即可。此时大概率问题可以解决。如果还有问题,就只能另寻他法了。

1.2 下载YOLO-v5框架

可以直接使用 git clone github 上的 YOLOv5 项目,

git clone https://github.com/ultralytics/yolov5.git
cd yolov5

由于网络的原因,可能会在这里超时而克隆失败。那么可以在 github YOLOv5 上把项目的压缩包下载下来解压即可:

unzip yolov5-master.zip
mv yolov5-master yolov5 && cd yolov5
1.3 安装依赖
python3 -m pip install -r requirements.txt
1.4 下载与训练权重

创建一个新的文件夹,用于存放YOLO-v5官方提供的预训练权重,

mkdir weights

到YOLO-v5-GitHub官方下载权重文件,点击蓝色超链接即可进行下载,下载好的预训练权重放在前面新建的weights文件夹下。
在这里插入图片描述

1.5 环境测试

至此,环境搭建基本就完成了,现在测试一下搭建的环境是否正常。

python3 detect.py --weights weights/yolov5s.pt --source data/images #   --weights的意思是指定权重文件,–source的意思是指定检测文件地址

推理的结果存放在./runs/detec/exp,可以正常检测出人、巴士,说明YOLO环境搭建没有问题。

2 制作数据集

2.1 使用 labelimg 进行图片标注

labelimg 是常用的图片标注工具,用来准备 yolo 格式的数据集。安装 labelimg

pip install labelimg

图片标注完成之后,得到YOLO格式的txt文本文件。一张张图片进行标注,得到全部数据。

2.2 创建文件夹

在 Yolov5 的路径下创建satasets文件夹,用于存放数据集。

mkdir datasets

datasets下面创建文件夹imageslabels分别用来存放图片和标签

mkdir datasets/images datasets/labels

在images(图片)和labels(标签)中分别再创建两个文件夹,一个是train(训练),一个是val(测试),分别存放图片数据和标签数据。

mkdir datasets/images/train datasets/images/val
mkdir datasets/labels/train datasets/labels/val

最终的目录结构如下:

datasets/
├── images
│   ├── train
│   └── val
└── labels├── train└── val
2.3 配置数据集和模型参数
2.3 1 配置数据集

修改数据集配置文件data/coco128.yaml,修改文件中的path, train, val, names这几项的配置信息,修改为如下:

path: /path/to/datasets # dataset root dir
train: /path/to/datasets/images/train # train images (relative to 'path') 128 images
val: /path/to/datasets/images/train # val images (relative to 'path') 128 images
test: # test images (optional)# Classes
names:0: class_name_01: class_name_1

names 根据实际数据集有哪些类别名称就配置几个

2.3.2 配置模型参数

修改模型配置文件:models/yolov5s.yaml
这里只需要修改nc数,nc数指的是目标检测的种类数,因此这里需要将nc修改为前面data/coco128.yaml中的names的数量一致即可。

3 训练

3.1 训练模型

使用预训练权重yolov5s.pt和默认yolov5s网络框架进行训练。

python3 train.py  --weights weights/yolov5s.pt

训练完成之后,在run文件夹中查看训练后的数据文件。

3.2 查看训练效果

使用detect.py进行测试,–weights选择训练完毕的权重文件,–source选择需要测试的图片。

python3 detect.py --weights run/train/exp/weights/best.pt --source data/images

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45494.shtml

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

相关文章

人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解。 文章目录 一、引言二、梯度问题1. 梯度爆炸梯度爆炸的概念梯度爆炸的原因梯度爆炸的解决方案 2. 梯度消失梯度消失的概念梯度…

vue2中父组件向子组件传值不更新视图问题解决

1. 由于父组件更新了props里面的值, 但是子组件第一次接收后再修改没有监听到. 父组件修改值的时候使用this$set解决问题. 在 Vue 2 中,this.$set 通常用于更新数组中的特定元素。如果你想更新整个数组,可以直接赋值一个新的数组,或者你可以…

powerdesigner导出表数据库设计文档excel

1、连接数据库,导出表结构的sql脚本 2、打开powerdesigner,生成项目空间表 sql脚本用第一步的脚本 3、用script脚本生成excel 脚本信息 Option Explicit Dim rowsNum rowsNum 0 -------------------------------------------------------------…

CV12_ONNX转RKNN模型(谛听盒子)

暂时简单整理一下: 1.在边缘设备上配置相关环境。 2.配置完成后,获取模型中间的输入输出结果,保存为npy格式。 3.将onnx格式的模型,以及中间输入输出文件传送到边缘设备上。 4.编写一个python文件用于转换模型格式&#xff0c…

Git---git本地配置commit_template提交模板,规范开发

如何在Git中配置Commit Template以规范开发 在软件开发过程中,规范化的提交信息(commit messages)对于项目的可维护性和协作效率至关重要。Git 提供了配置 commit template 的功能,允许开发者预设一个模板,用于在提交…

[iOS]内存分区

[iOS]内存分区 文章目录 [iOS]内存分区五大分区栈区堆区全局区常量区代码区验证内存使用注意事项总结 函数栈堆栈溢出栈的作用 参考博客 在iOS中,内存主要分为栈区、堆区、全局区、常量区、代码区五大区域 还记得OC是C的超类 所以C的内存分区也是一样的 iOS系统中&a…

51单片机STC89C52RC——19.1 SG90舵机(伺服电机)

目的/效果 独立按键K1,K2 实现加舵机减角度增减,LCD1602显示舵机转角度数(上电默认90度) 一,STC单片机模块 二,SG90舵机 2.1 简介 舵机只是我们通俗的叫法,它的本质是一个伺服电机&#xf…

react 案例的实现

先看一下如下效果 效果 这是一个 简单的 效果 左边是用户名进行登录 右边是一个答题还有遮罩 相信大家还有刚刚创建好的 react 脚手架了,没有的话可以运行以下命令 creact-react-app 项目名称 把项目名称四个字 改成 自己想要的一个名字 最好是英文的在 App.js中去…

python xpath常用代码功能

1、从文件中读取html内容,然后xpath加载 with open(FilePath, r,encodingutf8) as file:html file.read() tree etree.HTML(html) 2、基本定位语法 / 从根节点开始选取 /html/div/span // 从任意节点开始选取 //input . 选取当前节点 .…

Web开发:<br>标签的作用

br作用 介绍基本用法常见用途注意事项使用CSS替代 介绍 在Web开发中&#xff0c;<br> 标签是一个用于插入换行符的HTML标签。它是“break”的缩写&#xff0c;常用于需要在文本中强制换行的地方。<br> 标签是一个空标签&#xff0c;这意味着它没有结束标签。 基本…

Python小工具—txt转excel和word

1.txt转excel import openpyxl# 创建一个新的Excel工作簿 wb = openpyxl.Workbook() sheet = wb.active# 题干和答案的标题 sheet[A1] = 题干 sheet[B1] = 答案# 打开txt文件并读取内容 with open(xiti.txt, r, encoding=utf-8) as file:lines = file.readlines()# 初始变量 c…

VisualTreeHelper.GetChildrenCount

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;VisualTreeHelper.GetChildrenCount 是一个非常有用的方法&#xff0c;用于获取指定视觉对象的子元素数量。这对于遍历复杂的用户界面树结构以进行查找、操作或检查特定元素是非常有帮助的。 Visu…

【java深入学习第7章】用 Spring Boot 和 Java Mail 轻松实现邮件发送功能

引言 在现代的企业应用中&#xff0c;邮件发送是一个非常常见的功能。无论是用户注册后的验证邮件&#xff0c;还是系统通知邮件&#xff0c;邮件服务都扮演着重要的角色。本文将介绍如何在Spring Boot项目中整合Java Mail&#xff0c;实现发送邮件的功能。 一、准备工作 在…

【Ubuntu】安装使用pyenv - Python版本管理

当我们在Ubuntu上使用Python进行开发的时候&#xff0c;可能会遇到版本不兼容的问题&#xff0c;当然你可以选择使用apt的方式安装不同版本的python环境 但是存在一定的问题&#xff1a;安装不同版本的Python通常不会改变默认的python3命令指向的版本&#xff0c;而且就算你进行…

分布式对象存储minio

本教程minio 版本&#xff1a;RELEASE.2021-07-*及以上 1. 分布式文件系统应用场景 互联网海量非结构化数据的存储需求 电商网站&#xff1a;海量商品图片视频网站&#xff1a;海量视频文件网盘 : 海量文件社交网站&#xff1a;海量图片 1.1 Minio介绍 MinIO 是一个基于Ap…

ubuntu服务器部署vue springboot前后端分离项目

上传构建好的vue前端文件 vscode构建vue项目&#xff0c;会生成dist目录 npm run build在服务器root目录新建/projects/www目录&#xff0c;把dist目录下的所有文件&#xff0c;上传到此目录中 上传ssl证书 上传ssl证书到/projects目录中 配置nginx 编辑 /etc/nginx/site…

微服务边界守卫:Eureka中服务隔离策略的实现

微服务边界守卫&#xff1a;Eureka中服务隔离策略的实现 在微服务架构中&#xff0c;服务隔离是一项关键策略&#xff0c;用于确保服务之间的故障不会相互影响&#xff0c;同时提供更加安全和稳定的运行环境。Eureka作为Netflix开源的服务发现框架&#xff0c;提供了一些机制来…

Java 网络协议面试题答案整理,最新面试题

TCP和UDP的主要区别是什么? TCP(传输控制协议)和UDP(用户数据报协议)的主要区别在于TCP是面向连接的协议,而UDP是无连接的协议。这导致了它们在数据传输方式、可靠性、速度和使用场景方面的不同。 1、连接方式: TCP是面向连接的协议,数据传输前需要三次握手建立连接。U…

区块链与云计算的融合:新时代数据安全的挑战与机遇

随着信息技术的迅猛发展&#xff0c;云计算和区块链技术作为两大前沿技术在各自领域内展示出了巨大的潜力。而它们的结合&#xff0c;即区块链与云计算的融合&#xff0c;正在成为数据安全领域的新趋势。本文将探讨这一融合对数据安全带来的挑战和机遇&#xff0c;以及其在企业…

平替ChatGPT的多模态智能体来了

在人工智能领域&#xff0c;多模态技术的融合与应用已成为推动技术革新的关键。今天&#xff0c;我们用智匠AI实现了完全由国产模型驱动的多模态智能体——智酱v0.1.0&#xff0c;它不仅能够媲美ChatGPT的多模态能力&#xff0c;更在联网搜索、图片识别、画图及图表生成等方面展…