YOLO物体检测-系列教程6:YOLOv5源码解析1

计算机视觉 全教程 目录

物体检测 系列教程 总目录

1、基本概述

在这里插入图片描述

  1. YOLOv5没有一篇对应的论文,是一个对v4更好的实现
  2. v5版本是一个在github更新的基于工程项目的实现
  3. 基本上和v4没有差异,只不过在整个项目上做出了更好的实现效果
  4. 主要基于github的文档介绍来讲解yolov5
  5. 按照根据需求文档按照即可,建议版本,python=3.8、torch=1.8.1、torchvision=0.9.1,安装的时候指定一下清华源关掉梯子即可(对安装不熟悉参考这篇文章):
pip install -r requirements.txt  # install
  1. github源码中有多个模型可以选择,分别为5n、5s、5m、5l、5x等模型,源码中运行的是coco数据集,但是这个coco数据集实在太大了,实际上yolov5的泛化能力非常好,直接跑自己的项目就好了。
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml  --batch-size 128yolov5s                    64yolov5m                    40yolov5l                    24yolov5x                    16
  1. yolov5的代码写得非常非常好,对比v3你会觉得v3比较啰嗦,v5的代码是一个如此庞大的工程,但是配置文件却是如此简洁,每个人都需要对一个很大很好的开源项目从前到后一行一行代码去debug,因为这是你从初级程序员进阶的必经之路,非常建议选择yolov5

2、训练自己的数据集(待更新)

3、yolov5目录结构

yolov5是一个相对比较庞大的工程,这部分主要介绍一级目录所有的文件的意义:

3.1 文件夹/包:

.github:存放github相关配置的,这个不用管
data:主要是构建数据集的配置文件,还有一些官方的测试文件,当然如果你需要训练自己的数据集,那就需要修改部分配置文件了
model:主要是构建网络的函数代码文件、配置文本文件
runs:这个真的是最重要的文件夹了,我们主要跑的就是三个脚本,分别是训练、测试、预测,这三个分别一个文件夹,每个文件夹又都会记录出每次运行该脚本的结果
utils:主要是功能函数的代码文件,比如画图、计算损失等
wandb:
weights:

3.2 .py文件:

train.py:训练脚本,将通用模型训练自己任务的模型
test.py:测试脚本,读取自己训练的模型,对当前的数据进行测试
detect.py:检测脚本,读取自己训练的模型,实时检测当前视频帧,并显示实时的视频和标记的框、置信度、
hubconf.py:

3.3 其他不重要的文件:

.dockerignore
.gitattributes
.gitignore
Dockerfile
LICENCE:证书
README.MD
requiresments.txt
tutorial.ipynb
yolov5s.pt:coco数据集训练出来的5s模型

4、train.py参数解读

if __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')parser.add_argument('--cfg', type=str, default='', help='model.yaml path')parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path')parser.add_argument('--epochs', type=int, default=300)parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs')parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')parser.add_argument('--rect', action='store_true', help='rectangular training')parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')parser.add_argument('--notest', action='store_true', help='only test final epoch')parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check')parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters')parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')parser.add_argument('--cache-images', action='store_true', help='cache images for faster training')parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer')parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify')parser.add_argument('--workers', type=int, default=0, help='maximum number of dataloader workers')parser.add_argument('--project', default='runs/train', help='save to project/name')parser.add_argument('--entity', default=None, help='W&B entity')parser.add_argument('--name', default='exp', help='save to project/name')parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')parser.add_argument('--quad', action='store_true', help='quad dataloader')parser.add_argument('--linear-lr', action='store_true', help='linear LR')parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table')parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B')parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch')parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used')opt = parser.parse_args()
  1. weights,5n、5s、5m、5l、5x中选择一个作为预训练模型,初始模型路径
  2. cfg,模型配置文件的路径
  3. data,数据集对应的配置文件路径
  4. hyp,超参数
  5. epochs,训练次数
  6. batch-size,批次
  7. img-size,默认输入图像尺寸
  8. rect,
  9. resume,
  10. nosave,
  11. notest,
  12. noautoanchor
  13. evolve
  14. bucket
  15. cache-images
  16. image-weights
  17. device,指定训练设备
  18. multi-scale
  19. single-cls
  20. adam
  21. sync-bn
  22. local_rank
  23. workers
  24. project
  25. entity
  26. name
  27. exist-ok
  28. quad
  29. linear-lr
  30. label-smoothing
  31. upload_dataset
  32. bbox_interval
  33. save_period
  34. artifact_alias

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

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

相关文章

嵌入式物联网项目开发实战例程-STM32F103系列之外围器件代码

开发STM32F103很好的参考例程,轻松实现各类外围器件的开发。持续更新中,欢迎关注及收藏。 0001基于STM32F103单片机GPIO实现控制LED灯闪烁的程序代码.zip 0002基于STM32F103单片机GPIO实现按键KEY的检测程序代码.zip 0003基于STM32F103单片机GPIO实现外部…

Visual Studio 2022 AI Code 支持

1.先在 Log In | Codeium Free AI Code Completion & Chat 上注册一个用户 在Visual Stuido 中扩展中搜索 codeium 并安装 安装完成后登录即可。 注意国内可能存在网络问题无法使用这时建议使用代理进行登录。 地址如下: Sign Up | Codeium Free AI Code Co…

常见子函数头简介

1、FileManager.cpp bool CFileMgrBase::travelsal(const char *filename, int flag); bool travelsal(const char *filename, int flag);- 函数功能: 遍历待处理文件夹 - 输 入: filename: 文件(夹)名字符串 - 输 入: flag : 功能键 - 返…

Linux下安装JET2

0. 说明: JET2是一个基于Joint Evolutionary Trees的利用序列和结构信息预测蛋白质界面的软件,详情见: http://www.lcqb.upmc.fr/JET2/JET2.html,http://www.lgm.upmc.fr/JET/JET.html 和 https://doi.org/10.1371/journal.pcbi.1004580 本…

SQL 高级面试题

1. 什么是事务 参考答案 数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行&am…

多模态推荐系统综述:三、多模态特征增强

三、多模态特征增强 同一对象的不同模态表示具有独特且共同的语义信息。如果能够区分独特特征和共同特征,那么MRS的推荐性能和泛化能力可以得到显着提高。解耦表征学习(DRL)和对比学习(CL)被用来进行基于交互的特征增…

第二证券:主力为什么要砸盘?

砸盘就是在股票的某个阶段有许多卖出单,这些许多的卖出单不断的成交使股票价格出现快速下跌。一般是受到主力资金洗盘或者出货所影响形成的。 1、洗盘 个股通过长时间上涨之后,盘中的散户较多,主力为了洗掉盘中的散户,在低位吸筹…

从私有Git仓库的搭建到命令的使用及部署再到分支管理

一、版本控制系统/版本控制器 1. 版本控制系统: git 分布式 —没有中心代码库,所有机器之间的地位同等(每台机器上都有相同的代码) svn 集中管理的 —有中心代码库,其他都是客户端 2.git与svn介绍 1.git属于分布…

Mac版 Photoshop 2021---PS2021

Adobe Photoshop 2021是一款强大的图像处理软件,它可以帮助用户进行各种图像编辑、修饰和合成工作。这款软件拥有先进的图像处理技术,支持多种图像格式,可以轻松实现各种复杂的图像处理任务。它还提供了丰富的滤镜和工具,使用户可…

全网最全Stable Diffusion原理快速上手,模型结构、关键组件、训练预测方式!!!!

手把手教你入门绘图超强的AI绘画程序,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包(文末可获取) 【AIGC】Stable Diffusion的建模思想、训练预测方式快速 在这篇博客中,…

运动耳机怎么选?2024年运动耳机推荐,运动蓝牙耳机排行榜10强

​在现代生活中,音乐和运动已经成为很多人生活不可分割的一部分。运动耳机在这样的背景下变得越来越受欢迎,它们不仅可以在运动时提供音乐的陪伴,还能增加运动时的乐趣和动力。但是,面对市面上众多不同类型的运动耳机,…

Fiddler 一个好用的监控http和https的工具

最近使用了一个好用的工具Fiddler, 可以监控客户端到服务器端的 HTTP 和 HTTPS 协议请求。 Fiddler 是一个强大的 Web 调试工具,它通过以代理服务器的方式工作,可以捕获和分析客户端与服务器之间的 HTTP 和 HTTPS 通信。可以针对特定的http请…

哈希-力扣454.四数相加Ⅱ

题目 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff1a;nums1 [1…

MicroPython的文件系统操作

本文介绍了MicroPython如何提供并使用设备上的文件系统&#xff0c;以及如何使用Python标准的I/O方法进行持久存储。MicroPython会自动创建默认配置并侦测主文件系统&#xff0c;同时支持修改分区、文件系统类型或自定义块设备。 文件系统通常由设备上的内部闪存支持&#xff…

面试 React 框架八股文十问十答第二期

面试 React 框架八股文十问十答第二期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;redux 的工作流程&…

golang中gorm使用

前言 记录下go语言操作mysql数据库&#xff0c;选用gorm&#xff0c;gorm是一个流行的对象关系映射&#xff08;ORM&#xff09;库&#xff0c;用于简化与数据库的交互。 接入步骤 安装gorm&#xff1a;首先&#xff0c;你需要使用Go模块来安装gorm。在终端中运行以下命令&…

【Linux】nmap命令:扫描网络中的主机和端口

目录 1.扫描特定IP地址的所有端口&#xff1a; 2.扫描特定IP地址的特定端口&#xff1a; 3.扫描一个IP地址范围的端口&#xff1a; 4.扫描特定端口范围&#xff1a; 5.扫描并显示所有端口的详细信息&#xff1a; 6.扫描并输出XML格式的结果&#xff1a; 7.使用“ping…

Doris 案例篇——长安汽车基于 Doris 的车联网数据分析平台建设实践

Doris 案例篇——长安汽车基于 Doris 的车联网数据分析平台建设实践 随着消费者更安全、更舒适、更便捷的驾驶体验需求不断增长,汽车智能化已成必然趋势。长安汽车智能化研究院作为长安汽车集团有限责任公司旗下的研发机构,专注于汽车智能化技术的创新与研究。为满足各业务部…

数据结构第十一弹---堆

堆 1、堆的概念及结构2、堆的性质3、堆的调整算法3.1、向下调整算法3.2、向上调整算法 4、堆的实现4.1、头文件包含和结构定义4.2、初始化4.3、销毁4.4、插入数据4.5、删除数据 删除堆顶4.6、获取堆顶元素4.7、获取有效数据个数4.8、判断是否为空 5、代码汇总5.1、Heap.h5.2、H…

好用的设备租赁管理软件有哪些?

“我们公司是做设备租赁的&#xff0c;想找一款适合设备租赁的库存管理软件&#xff0c;最好有库存管理&#xff0c;客户信息&#xff0c;设备外调管理&#xff0c;租赁天数管理&#xff0c;设备的借出与归还信息管理与查询。” 总结一下—— 库存管理客户信息管理设备租赁管…