前言:记录学习重要内容,借鉴大佬们和自己感悟,接触使用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逐文件详解