YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第1张图片

前言:Hello大家好,我是小哥谈。作为初学者,为了后期能够熟练的使用YOLOv5进行模型的训练,首先必须做的就是了解YOLOv5项目目录结构中各文件以及参数的作用。本篇文章就简单介绍一下每个文件的具体功能及作用,关于YOLOv5详细的代码解读后期会慢慢更新,欢迎大家收藏关注!

 YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第2张图片前期回顾:

       YOLOv5基础知识入门(1)— YOLO算法的发展历程

       YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解 

          目录

 1.项目目录结构

1.1 .github文件夹

1.2 classify文件夹

1.3 data文件夹

1.4 models文件夹

1.5 runs文件夹

1.6 utils文件夹

1.7 其他一级目录文件

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第3张图片

 1.项目目录结构

YOLOv5官方下载代码地址:

GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLite

将源码下载好并配置好环境之后,就可以看到YOLOv5的整体目录结构如下图所示:

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第4张图片

接下来我们就进行逐一的分析。


1.1 .github文件夹

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第5张图片

.github文件夹是存放关于github的一些配置的,这些不重要,我们可以不用管他。 


1.2 classify文件夹

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第6张图片

新版本的工程结构,和前几个版本差别不大。主要是多了一个classify文件夹,包含图像分类训练验证检测三个函数,训练结果会保存在runs/train-cls文件夹中。


1.3 data文件夹

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第7张图片

主要是存放一些超参数的配置文件,其中的yaml文件是用来配置训练集、测试集、验证集的路径的,这其中还包括目标检测的种类数和种类的名称等。其中的images是一些官方提供测试的图片。如果是训练自己的数据集的话,那么就需要修改其中的yaml文件,但是自己的数据集不建议放在这个路径下面,而是建议把数据集放到YOLOv5项目的同级目录下面。

详解:

hyps文件夹     # 存放yaml格式的超参数配置文件

     hyps.scratch-high.yaml   # 数据增强高,适用于大型型号,即v3、v3-spp、v51、v5x

     hyps.scratch-low.yaml     # 数据增强低,适用于较小型号,即v5n、v5s

     hyps.scratch-med.yaml   # 数据增强中,适用于中型型号,即v5m

images          # 存放着官方给的两张测试图片

scripts          # 存放数据集和权重下载shell脚本

     download_weights.sh     # 下载权重文件,包括五种大小的P5版和P6版以及分类器版

     get_coco.sh        # 下载coco数据集

     get coco128.sh   # 下载coco128 (只有128张)

Argoverse.yaml   # 后面的每个.yaml文件都对应一种标准数据集格式的数据

coco.yaml     # COCO数据集配置文件

coco128.yaml   # COCO128数据集配置文件

voc.yaml       # VOC数据集配置文件


1.4 models文件夹

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第8张图片

models文件夹里面主要是一些网络构建的配置文件和函数,其中包含了该项目的5个不同的版本,分别为是n、s、m、l、x。从名字就可以看出,这几个版本的大小。他们的检测测度分别都是从快到慢,但是精确度分别是从低到高,这就是所谓的鱼和熊掌不可兼得。如果训练自己的数据集的话,就需要修改这里面相对应的yaml文件来训练自己模型。

详解:

hub    # 存放YOLOv5各版本目标检测网络模型配置文件

       anchors.yaml   # COCO数据的默认锚点

       yolov3-spp.yaml  # 带spp的yolov3

       yolov3-tiny.yaml  # 精简版yolov3

       yolov3.yaml    # yolov3

       yolov5-bifpn.yaml    # 带二值fpn的yolov5l

       yolov5-fpn.yaml   # 带fpn的yolov5

       yolov5-p2.yaml    # (P2, P3,P4, P5)都输出,宽深与large版本相同,相当于比large版本能检测更小物体。

       yolov5-p34.yaml  # 只输出(P3,P4),宽深与small版本相同,相当于比small版本更专注于检测中小物体。

       yolov5-p6.yaml    # (P3,P4,P5,P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体。

       yolov5-p7.yaml    # P3,P4,P5,P6,P7)都输出,宽深与large版本相同,相当于比large版本能检测更更大物体。

       yolov5-panet.yaml  # 带PANet的yolov5I

       yolov5n6.yaml     # (P3,P4,P5,P6)都输出,宽深与nano版本相同,相当于比nano版本能检测更大物体,anchor已预定义。

       yolov5s6.yaml     # (P3,P4,P5,P6)都输出,宽深与smal版本相同,相当于比smal版本能检测更大物体,anchor已预定义。

       yolov5m6.yaml    # (P3,P4,P5, P6)都输出,宽深与middle版本相同,相当于比middle版本能检测更大物体,anchor已预定义。

       yolov516.yaml     # (P3,P4,P5,P6)都输出,宽深与large版本相同,相当比large版本能检测更大物体。

       yolov5x6.yaml     # (P3,P4,P5,P6)都输出,宽深与Xlarge版本相同,相当于比Xlarge版本能检测更大物体,anchor已预定义。

       yolov5s-ghost.yaml    # backbone的卷积换成了GhostNet形式的yolov5s,anchor已预定义。

       yolov5s-transformer.yaml   # backbone最后的C3卷积添加了Transformer模块的yolov5s,anchor已预定义。

_int_.py   # 空的 

common.py  # 放的是一些网络结构的定义通用模块,包括autopad、Conv、DWConv、TransformerLayer等

experimental.py  # 实验性质的代码,包括MixConv2d、跨层权重Sum等

tf.py    # tensorflow版的yolov5代码

yolo.py  # yolo的特定模块,包括BaseModel,DetectionModel,ClassificationModel,parse mode等

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.50。

yolov5x.yaml   # yolov5x网络模型配置文件,Xlarge版本,深度1.33,宽度1.25。


1.5 runs文件夹

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第9张图片

日志文件,每次训练的数据,包含权重文件、训练数据、直方图等,包括detect和train,其中detect存放的是模型训练时的测试结果,train存放的是模型训练时的训练结果。

说明:

关于runs文件夹中各参数的具体含义,请参考我的另一篇文章。

YOLOv5入门实践(4)— 深入浅出之YOLOv5训练结果解析


1.6 utils文件夹

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第10张图片

存放的是工具类的函数,里面有loss函数、metrics函数、plots函数等等。

详解:

aws    # 恢复中断训练,和aws平台使用相关的工具。

flask_rest_api   # 和flask相关的工具

google_app_engine  # 和谷歌app引擎相关的工具

loggers        # 日志打印

_init_.py      # notebook的初始化,检查系统软件和硬件。

activations.py  # 激活函数

augmentations # 存放各种图像增强技术

autoanchor.py  # 自动生成错框

autobatch.py   # 自动生成批量大小

benchmarks.py  # 对模型进行性能评估(推理速度和内存占用上的评估)

callbacks.py   # 回调函数,主要为logger服务。

datasets    # dateset和dateloader定义代码

downloads.py  # 谷歌云盘内容下载

general.py    # 全项目通用代码,相关实用函数实现。

loss.py        # 存放各种损失函数

metrics.py    # 模型验证指标,包括ap、混淆矩阵等。

plots.py       # 绘图相关函数,如绘制loss、ac曲线,还能单独将一个bbox存储为图像。

torch_utils.py  # 辅助函数


1.7 其他一级目录文件

YOLOv5源码中的参数超详细解析(1)— 项目目录结构解析_第11张图片

详解: 

.dockerignore       # docker的ignore文件

.gitattributes    # 用于将.ipynb后缀的文件别除GitHub语言统计

.gitignore   # docker的ignore文件

CONTRIBUTING.md  # markdown格式说明文档

detect.py   # 目标检测预测脚本

export.py  # 模型导出

hubconf.py  # pytorch hub相关

LICENSE # 证书

README.md # markdown格式说明文档

requirements.txt   # 可以通过pip install requirement进行依赖环境下载

setup.cfg  # 项目打包文件

train.py    # 目标检测训练脚本

tutorial.ipynb # 目标检测上手教程

val.py   # 目标检测验证脚本

yolov5s.pt  # coco数据集模型预训练权重,运行代码的时候会自动从网上下载。

说明:

本篇文章由我的学妹 路人贾'ω' 整理,欢迎大家关注!

你可能感兴趣的:(YOLOv5,YOLO,深度学习,人工智能,目标检测,python)