YOLOv5源码学习(1)——项目目录结构解析

前言:记录学习重要内容,借鉴大佬们和自己感悟,接触使用yolov5一年多一直没有时间深入了解过yolov5,计划从头到尾学习研究yolov5就从目录开始吧

yolov5源码地址: yolov5

一、yolov5源代码目录

在这里插入图片描述

1.1 .github 文件夹

在这里插入图片描述

.guithub 隐藏文件夹下存放的是guithub仓库的一些配置文件,不用管,类似于 git 建立代码管理与远程仓库都会产生默认配置文件

1.2 data 文件夹

在这里插入图片描述

data 文件夹 主要存放一些超参数的配置文件(如yaml文件) 是用来配置训练,测试集和验证集(验证集一般不用写可以用训练模型测试自我准备的样本)路径,,还包含类别数量,类别名称,如果是训练自己的数据集的话,那么就需要修改yaml文件或者新建yaml文件。
在这里插入图片描述
详解:

  • hyps文件夹 # 存放yaml 格式的超参数配置文件
    • hyp.Objects365.yaml # 适用于Objects365数据集
    • hyp.scratch-high.yaml # 数据增强高,适用于大型型号,既V3,v3-spp ,v5l,v5x
    • hyp.scratch-low.yaml # 数据增强低,适用于较小型号,既v5n,v5s
    • hyp.scratch-med.yaml # 数据增强中,适用于较中型号,既v5m
    • hyp.VOC.yaml # 适用于VOC 数据集
  • images # 存放这官方给的两张测试图片
  • scripts # 存放数据集和权重下载shell 脚本
    • download_weights.sh # 下载权重文件,包含五种大小的P5和P6版本分类器版
    • get_coco.sh # 下载coco数据集
    • get_coco128.sh # 下载coco128(只有128张)
  • Argoverse.yaml # 主yaml文件,后面的每个 .yaml 文件都对应一种标准数据集格式的数据
  • coco.yaml # coco数据集配置文集
  • coco128.yaml # coco128 数据集配置文件
  • VOC.yaml # Voc数据集配置文件

1.3 datasets文件夹

在这里插入图片描述
yolov5源码下载后包内是不包含这个文件的的,datasets用来存放自己数据集,分为images和labels 两部分。同时每个文件下又分为train,val 。labels 下 .cache 文件为缓存文件,将数据加载到内存中,方便下次调用快速

1.4 models 文件夹

在这里插入图片描述
models是模型文件夹,里面主要是一些网络构建的配置文件和函数,其中包含了该项目的四个不同版本,分别是 s,m,l,x从名字就可以看出,模型的大小,它们的检测速度分别是从快到慢,但是精度是从低到高,根据训练自己的数据集,就需要修改这里面相对应的yaml文件来训练自己模型
在这里插入图片描述
详解:

  • hub # 存放yolov5各版本目标检测网络模型配置文件
    • anchors.yaml # COCO数据的默认锚点
    • yolov3.yaml # yolov3
    • yolov3-spp.yaml # 带spp的yolov3
    • yolov3-tiny.yaml #精简版yolov3
    • yolov5-bifpn.yaml # 带二值fpn的yolov5l
    • yolov5-fpn.yaml # 带二的yolov5l
    • yolov5l6.yaml #(P3,P4,P5,P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体,anchor已预定义,推测是作者实验的产物
    • yolov5m6.yaml #(P3,P4,P5,P6)都输出,宽深与middle版本相同,相当于比lmiddle版本能检测更大物体,anchor已预定义
    • yolov5n6.yaml #(P3,P4,P5,P6)都输出,宽深与nano版本相同,相当于比nano版本能检测更大物体,anchor已预定义
    • yolov5-p2.yaml #(P2,P3,P4,P5)都输出,宽深与large版本相同,相当于比large版本能检测更小物体
    • yolov5-p6.yaml #(P3,P4,P5,P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体
    • yolov5-p7.yaml #(P3,P4,P5,P6,P7)都输出,宽深与large版本相同,相当于比large版本能检测更更大物体
    • yolov5-p34.yaml #(P3,P4)输出,宽深与small版本相同,相当于比lsmall版本能检测更大物体,anchor已预定义,推测是作者实验的产物
    • yolov5-panet.yaml # 带PANet的yolov3
    • yolov5s6.yaml #(P3,P4,P5,P6)都输出,宽深与small版本相同,相当于比small版本能检测更大物体
    • yolov5s-ghost.yaml # backbone的卷积缓存GhostNet形式的yolov5s,anchor已预定
    • yolov5s-transformer.yaml # backbone最后的C3卷积添加看Transformer 模块的yolov5s,anchor已预定
    • yolov5x6.yaml #(P3,P4,P5,P6)都输出,宽深与Xlarge版本相同,相当于比Xlarge版本能检测更大物体,anchor已预定
  • init.py # 空文件,py文件的头文件
  • common.py # 一些网络结构的定义通用模块,包括autopad,Conv,DWConv,TransformerLayer
  • experimental.py # 实验性质代码,包括MixConc2d,跨层权重Sum等
  • tf.py # tensorflow版的yolov5代码
  • yolo.py # yolo的特定模块,包括BaseModel,DetectionModel,ClassificationModle,parse_model
  • yolov5l.yaml #yolov5l网络模型配置文件,large版本,深度1.0,宽度1.0
  • yolov5m.yaml #yolov5m网络模型配置文件,middle版本,深度0.67,宽度0.75
  • yolov5n.yaml #yolov5n网络模型配置文件,nano版本,深度0.33,宽度0.25
  • yolov5s.yaml #yolov5s网络模型配置文件,small版本,深度0.33,宽度0.5
  • yolov5x.yaml #yolov5x网络模型配置文件,Xlarge版本,深度1.33,宽度1.25

1.5 runs 文件夹

在这里插入图片描述
runs 文件存放运行结果文件:下面包含detect和train 两个文件夹,在训练结果默认会保存在train文件下,检测结果默认保存在detect文件夹下

在这里插入图片描述
detect文件夹下放的是每次检测结果:#检测输出结果
trian文件夹下放的是每次训练结果:#包含 模型(weight下最好,和最后)权重,混淆矩阵,F1曲线,超参数文件,P曲线,R曲线,结果文件(loss值,P,R)等

详解

  • confusion_matrix.png #混淆矩阵
  • events.out.tfevents.1726108869.A3.9012.0
  • F1_curve.png #F1得分与置信度(x轴)之间的关系
  • hyp.yaml #F1得分与置信度(x轴)之间的关系
  • labels.jpg #里面四张关系图 左上:表示每个类别的数据量,右上真是标注的bounding_box ,左下真实标注的中心点坐标 ,右下真实标注的矩阵宽高
  • labels_correlogram.jpg #预测标签长宽和位置分布
  • opt.yaml #模型可选项记录文件
  • P_curve.png #准确率与置信度的关系图线
  • PR_curve.png #准确率与召唤率的关系图线
  • R_curve.png #召回率与置信度的关系图线
  • results.csv #每轮训练记录数据
  • results.png #每轮结果曲线图
  • train_batchX.jpg #训练集图像X
  • val_batchX_pred.jpg #预测集图像X

1.6 utils 文件夹

在这里插入图片描述
utils文件夹 :#是工具文件夹,存放的是工具类的函数,里面有loss函数,metrics函数,plots函数等等
详解

  • aws #恢复中断训练和aws平台使用的相关的工具
  • flask_rest_api #和flask相关的工具
  • google_app_engine #和Google引擎相关的工具
  • loggers #日志打印
  • init.py #notebook 的初始化,检测系统软件和硬件
  • activations.py #激活函数
  • augmentations.py #存放各种图像增强技术
  • autoanchor.py #自动生成锚点框
  • autobatch.py #自动生成批次大小
  • benchmarks.py #对模型经行性能评估
  • callbacks.py #回调函数,主要为logger服务
  • datasets.py #dateset和dateloader定义代码
  • downloads.py #谷歌云盘内容下载
  • general.py #全项目通用代码,相关实用函数实现
  • loss.py #存放各种损失函数
  • metrics.py #模型验证指标,包括ap,混淆矩阵等
  • plots.py #绘图相关函数,如绘制loss,ac曲线,还能单独将一个bbox存储为图像
  • torch_utils.py #辅助函数

1.7 其他一级目录下文件

在这里插入图片描述
详解

  • .dockerignore #docke的ignore文件
  • .gitattributes #用于将.ipynb后缀的文件剔除GitHub语言统计
  • .gitignore #docker的ignore
  • CONTRIBUTING.md #格式说明文档
  • detect.py #预测脚本
  • export.py #模型导出
  • hubconf.py #pytorch hub相关
  • LICENSE #证书
  • README.md #说明文档
  • requirements.txt #环境文档,可以通过pip install requirement 进行依赖环境安装
  • setup.cfg #项目打包文件
  • train.py #训练脚本
  • tutorial.ipynb #目标检测上手教程
  • val.py #目标检测验证脚本
  • yolov5x.yaml #coco数据集模型预训练权重,运行代码的时候会自动下载

本文参考感谢各位大佬
YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析
YOLOV5学习笔记(四)——项目目录及代码讲解
YOLOv5-6.2版本代码Project逐文件详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值