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. 梯度消失梯度消失的概念梯度…

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…

[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中去…

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

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

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

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

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

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

redis原理之底层数据结构(二)-压缩列表

1.绪论 压缩列表是redis最底层的结构之一&#xff0c;比如redis中的hash&#xff0c;list在某些场景下使用的都是压缩列表。接下来就让我们看看压缩列表结构究竟是怎样的。 2.ziplist 2.1 ziplist的组成 在低版本中压缩列表是由ziplist实现的&#xff0c;我们来看看他的结构…

大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】

大数据面试SQL题复习思路一网打尽&#xff01;(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【...】 目录 01、力扣网-sql题 1、高频SQL50题&#xff08…

数据结构——hash(hashmap源码探究)

hash是什么&#xff1f; hash也称为散列&#xff0c;就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变成固定长度的输出&#xff0c;这个输出值就是散列值。 举例来说明一下什么是hash&#xff1a; 假设我们要把1~12存入到一个大小是5的hash表中&#xff0c;我们…

矿产资源潜力预测不确定性评价

研究目的&#xff1a; 不确定性评估&#xff1a; 到底什么叫不确定性&#xff0c;简单来说就是某区域内的矿产资源量&#xff0c;并不确定到底有多少&#xff0c;你需要给出一个评估或者分布。 研究方法&#xff1a; 1.以模糊集来表示某些量&#xff1a; 关于什么是模糊集&am…

信通院全景图发布 比瓴科技领跑软件供应链安全,多领域覆盖数字安全服务

近日&#xff0c;中国信息通信研究院在2024全球数字经济大会—数字安全生态建设专题论坛正式发布首期《数字安全护航技术能力全景图》&#xff08;以下简称全景图&#xff09;。 比瓴科技入选软件供应链安全赛道“开发流程安全管控、交互式安全测试、静态安全测试、软件成分分…

智慧水利:迈向水资源管理的新时代,结合物联网、云计算等先进技术,阐述智慧水利解决方案在提升水灾害防控能力、优化水资源配置中的关键作用

本文关键词&#xff1a;智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

数据分析——numpy教程

1.NumPy&#xff1a; 是Python的一个开源的数值计算库。可以用来存储和处理大型矩阵&#xff0c;比python自身的嵌套列表结构要高效&#xff0c;支持大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库&#xff0c;包括数学、逻辑、形状操作、排序、…

MKS电源管理软件OPTIMA RPDG DCG系列RF Elit600系列

MKS电源管理软件OPTIMA RPDG DCG系列RF Elit600系列

数据结构——考研笔记(三)线性表之单链表

文章目录 2.3 单链表2.3.1 知识总览2.3.2 什么是单链表2.3.3 不带头结点的单链表2.3.4 带头结点的单链表2.3.5 不带头结点 VS 带头结点2.3.6 知识回顾与重要考点2.3.7 单链表的插入和删除2.3.7.1 按位序插入&#xff08;带头结点&#xff09;2.3.7.2 按位序插入&#xff08;不带…