前言:Hello大家好,我是小哥谈。作为初学者,为了后期能够熟练的使用YOLOv5进行模型的训练,首先必须做的就是了解YOLOv5项目目录结构中各文件以及参数的作用。本篇文章就简单介绍一下每个文件的具体功能及作用,关于YOLOv5详细的代码解读后期会慢慢更新,欢迎大家收藏关注!
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官方下载代码地址:
GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLite
将源码下载好并配置好环境之后,就可以看到YOLOv5的整体目录结构如下图所示:
接下来我们就进行逐一的分析。
.github文件夹是存放关于github的一些配置的,这些不重要,我们可以不用管他。
新版本的工程结构,和前几个版本差别不大。主要是多了一个classify文件夹,包含图像分类训练、验证、检测三个函数,训练结果会保存在runs/train-cls
文件夹中。
主要是存放一些超参数的配置文件,其中的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数据集配置文件
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。
日志文件,每次训练的数据,包含权重文件、训练数据、直方图等,包括detect和train,其中detect存放的是模型训练时的测试结果,train存放的是模型训练时的训练结果。
说明:
关于runs文件夹中各参数的具体含义,请参考我的另一篇文章。
YOLOv5入门实践(4)— 深入浅出之YOLOv5训练结果解析
存放的是工具类的函数,里面有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 # 辅助函数
详解:
.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数据集模型预训练权重,运行代码的时候会自动从网上下载。
说明:
本篇文章由我的学妹 路人贾'ω' 整理,欢迎大家关注!