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/cloud
  msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: 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_0
  1: 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

防火墙双机热备带宽管理综合实验

拓扑图和要求如下: 之前的步骤可以去到上次的实验 1.步骤一: 首先在FW3防火墙上配置接口IP地址,划分区域 创建心跳线: 下面进行双机热备配置: 步骤二: 先将心跳线连接起来 注意:一定要将心跳…

勒索防御第一关 亚信安全AE防毒墙全面升级 勒索检出率提升150%

亚信安全信舷AE高性能防毒墙完成能力升级,全面完善勒索边界“全生命周期”防御体系,筑造边界勒索防御第一关! 勒索之殇,银狐当先 当前勒索病毒卷携着AI技术,融合“数字化”的运营模式,形成了肆虐全球的网…

深度解析:如何优雅地删除GitHub仓库中的特定commit历史

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【Blockly图形化积木编程二次开发学习笔记】1.工具箱的实现

文章目录 Blockly 版本选择上手 Blockly 版本选择 在【兰州大学】Blockly创意趣味编程【全36讲】主讲教师:崔向平 周庆国中提到,在18年6月份之前的版本中,可以通过安装依赖库的方式,打开开发者工具的离线版本,但是新版…

Linux桌面环境手动编译安装librime、librime-lua以及ibus-rime,提升中文输入法体验

Linux上的输入法有很多,大体都使用了Fcitx或者iBus作为输入法的引擎。相当于有了一个很不错的“地基”,你可以在这个“地基”上盖上自己的“小别墅”。而rime输入法,就是一个“毛坯别墅”,你可以在rime的基础上,再装修…

Docker之在外执行docker内部命令(十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

什么是CAN总线?

目录 1 CAN总线简介 2 CAN总线物理结构 2.1 CAN总线原理 2.2 CAN总线和I2C 3 CAN的电气属性 4 CAN帧的种类 4.1 CAN帧的种类 4.2 数据帧 4.3 遥控帧 1 CAN总线简介 1.1 CAN是什么? CAN总线,全称为Controller Area Network,即控制器…

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

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

《云原生安全攻防》-- 容器攻击案例:Docker容器逃逸

当攻击者获得一个容器环境的shell权限时,攻击者往往会尝试进行容器逃逸,利用容器环境中的错误配置或是漏洞问题,从容器成功逃逸到宿主机,从而获取到更高的访问权限。 在本节课程中,我们将详细介绍一些常见的容器逃逸方…

知识付费小程序源码 thinkphp后台 带3000多条教程数据

知识付费小程序源码 thinkphp后台 带3000多条教程数据,云码素材有进行了更新开发,更新了广告位管理,后台一键更新数据,用户登录 不单单是一个源码,我们对接了云码素材的教程资源,也就是说你可以免费拥有云码素材所有教程资源,后台一键更新,无须自己再更新资源,每天有我们更新,…

【嵌入式开发 Linux 常用命令系列 4.4 -- repo 工具安装】

请阅读【嵌入式开发学习必备专栏 】 文章目录 Repo 工具下载Repo 安装Multiple Git Repository Tool Repo 工具下载 Repo 官网链接 Repo 安装 方法一: # Debian/Ubuntu. $ sudo apt-get install repo# Gentoo. $ sudo emerge dev-vcs/repo方法二: $ …

系统架构设计师 - 系统配置与性能评价

系统配置与性能评价 系统配置与性能评价(0 - 2分)性能指标 ★ ★硬件软件性能调整 阿姆达尔解决方案 ★性能评价方法 ★ ★ ★ 大家好呀!我是小笙,本章我主要分享系统架构设计师 - 系统配置与性能评价知识,希望内容对你…

4.定时器

原理 时钟源:定时器是内部时钟源(晶振),计数器是外部计时长度:对应TH TL计数器初值寄存器(高八位,低八位)对应的中断触发函数 中断源中断处理函数Timer0Timer0_Routine(void) interrupt 1Timer1Timer1_Routine(void) …

ubuntu虚拟机安装ssh时报错 正在等待缓存锁

问题: 连接vm ubuntu虚拟机安装ssh时报错 正在等待缓存锁。 sudo apt install openssh-server 处理办法 sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock

关于SQLException: Illegal mix of collations (`utf8mb4_general_ci,IMPLICIT`)...错误

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、报错信息三、最后 开篇说明 记录一个查询错误 场景:数据库之间某表复…

写python代码,怎么用工厂模式思维设计接口?

接口的好处 接口就是抽象方法,用来设计后架构,后端开发者和客户端调用者都可以使用这个接口规则同步写代码,客户端调用者(app、网页甚至时自动化接口测试)不用担心后端对接口的实现细节具体是什么样子的。直接去调用就…

数据结构--二叉树遍历

目录 1.介绍 (1)前序遍历 (2)定义结构体 (3)前序遍历实现 (4)中序遍历实现 (5)二叉树的节点个数 (6)二叉树树叶节点个数 &…

SpringBoot整合Swagger报错:Failed to start bean ‘documentationPluginsBootstrapper

文章目录 1 问题背景2 问题原因3 修改SpringBoot配置文件 application.properties参考 1 问题背景 Swagger是SpringBoot中常用的API文档工具,在刚接触使用的时候,按照通用的代码进行配置,发现报错了 [main] ERROR org.springframework.boot…

计算机的错误计算(三十二)

摘要 在计算机的错误计算(二十八)与(三十 一)中,我们探讨了 Visual Studio 对 6个随机exp(x)函数的计算精度问题。根据网友的反馈,本节将展示 Python 对它们的输出:结果几乎与 Visual Studio …

DataBricks Best Practice for Delta Lake

本文介绍了使用 Delta Lake 时的最佳做法。 Databricks 建议使用预测性优化。 请参阅 Delta Lake 的预测性优化。 删除并在同一位置重新创建表时,应始终使用 CREATE OR REPLACE TABLE 语句。 请参阅删除或替换 Delta 表。 移除旧版 Delta 配置 Databricks 建议在升…