前言
- 今后的一段时间,会慢慢更新yolo的使用,基础版本以yolov5为主,选
yolov5
主要是这个很经典,比较适合入门,后面会重点更新yolov10的使用与创新; - 这一期是给下一期做准备的,下一期更新如何进行yolov5进行训练。
目录
yolov5文档目录
1、github
这个有关github的一些配置,不需要管
2、classfiy
主要用于分类任务
predict.py
: 脚本用于执行模型对新数据的预测。它会加载训练好的模型,并用它来预测输入数据的类别。train.py
: 脚本用于训练分类模型。它会包含数据加载、模型初始化、训练过程以及可能的验证/测试步骤。tutorial.ipynb
: Jupyter 笔记本文件是一个教程,它提供了如何使用 yolov5-master 中的分类功能的指导。笔记本会包含代码示例和解释,引导用户如何进行数据准备、模型训练、评估和预测。val.py
: 脚本用于模型的验证。它会对验证集的数据执行预测,并评估模型的性能,通常是通过计算准确率、混淆矩阵或其他指标。
3、data
主要
- 主要是超参数配置文件(*.yaml),用于神经网络的参数设置,和训练模型相关的参数,并且还包含了目标检测的种类数和种类;
- 如果是训练自己的数据集的话,需要修改.yaml文件;
- 不建议把自己的数据放到这里,推荐在yolo文件夹创建存储数据文件夹。
详解:
- hyps文件夹 :存放yaml格式的超参数配置文件
- hyps. scratch-high.yaml :数据增强高,适用于大型型号,即v3、v3-spp、v5l、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数据集配置文件
4、datasets
这一块是存储自己要训练的数据集,由自己创建,详情请看:yolo基础—手把手教你划分数据集
5、models
models: 顾名思义,这个是存储有关模型的文件夹,存储网络构建的一些配置文件。
版本: 有4个版本,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的yolov5l
- yolov5n6.yaml : (P3, P4, P5, P6)都输出,宽深与nano版本相同,相当于比nano版本能检测更大物体,anchor已预定义
- yolov5s6.yaml :(P3, P4, P5, P6)都输出,宽深与small版本相同,相当于比small版本能检测更大物体,anchor已预定义
- yolov5m6.yaml : (P3, P4, P5, P6)都输出,宽深与middle版本相同,相当于比middle版本能检测更大物体,anchor已预定义
- yolov5l6.yaml : (P3, P4, P5, P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体,anchor已预定义,推测是作者做实验的产物
- 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_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.50
- yolov5x.yaml : yolov5x网络模型配置文件,Xlarge版本,深度1.33,宽度1.25
6、runs
runs:我们运行时候输出的一些文件,每一次运行都会生成一个exp文件夹。
详解:
- detect :测试模型,输出图片并在图片中标注出物体和概率
- train :训练模型,输出内容,模型(最好、最新)权重、混淆矩阵、F1曲线、超参数文件、P曲线、R曲线、PR曲线、结果文件(loss值、P、R)等
- expn:第n次实验数据
- confusion_matrix.png :混淆矩阵
- P_curve.png :准确率与置信度的关系图线
- R_curve.png :精准率与置信度的关系图线
- PR_curve.png :精准率与召回率的关系图线
- F1_curve.png :F1分数与置信度(x轴)之间的关系
- labels_correlogram.jpg : 预测标签长宽和位置分布
- results.png :各种loss和metrics(p、r、mAP等,详见utils/metrics)曲线
- results.csv :对应上面png的原始result数据
- hyp.yaml : 超参数记录文件
- opt.yaml :模型可选项记录文件
- train_batchx.jpg : 训练集图像x(带标注)
- val_batchx_labels.jpg :验证集图像x(带标注)
- val_batchx_pred.jpg : 验证集图像x(带预测标注)
- weights :权重
- best.pt : 历史最好权重
- last.pt : 上次检测点权重
- labels.jpg : 4张图, 4张图,(1,1)表示每个类别的数据量
7、utils
utils:工具类,里面有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 : 辅助函数
8、其他
- .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数据集模型预训练权重,运行代码的时候会自动从网上下载
参考资料
https://www.cnblogs.com/leolzi/p/18269413