ultralytics简介
Ultralytics是一个开源的计算机视觉和深度学习框架,旨在简化训练、评估和部署视觉模型的过程。该框架提供了一系列流行的视觉模型,包括YOLOv5、YOLOv4、YOLOv3、YOLOv3-tiny、YOLOv5-tiny、EfficientDet、PAN、PP-YOLO等,并提供了训练、评估和推理的工具和实用程序。
Ultralytics框架的一些主要特点包括:
- 简单易用:Ultralytics提供了简洁的API和命令行工具,使用户可以轻松地训练、评估和部署视觉模型。
- 多种视觉模型支持:Ultralytics支持多种流行的目标检测和图像分割模型,用户可以根据自己的需求选择合适的模型进行训练和部署。
- 高性能:Ultralytics框架基于PyTorch深度学习框架,具有优秀的性能和灵活性,同时提供了一系列优化和加速的功能,可加快训练和推理速度。
- 开源社区支持:Ultralytics是一个开源项目,拥有活跃的开发者社区,用户可以在GitHub上查看源代码、提交问题和贡献代码。
如果在本机的python环境环境中安装了该框架,那么在"path\python\Lib\site-packages "下面可以看到这样的文件夹:
ultralytics目录
点击进入安装目录,主要会看到以下文件夹:
目录文件说明
0 、__init__.py
版本说明文件,路径ultralytics/ __init__.py
1、assets
该文件夹下只包含两张经典的图片,用于基础推理和测试。
bus.jpg
zidane.jpg
2、cfg(重点文件夹)
datasets文件夹:**包含数据集的配置文件,如数据路径、类别信息等(就是我们训练YOLO模型的时候需要一个数据集,这里面就保存部分数据集的yaml文件,如果我们训练的时候没有指定数据集则会自动下载其中的数据集文件,**但是很容易失败!**)。
**models文件夹:**存放模型配置文件,定义了模型结构和训练参数等。
models文件夹中的每个.yaml文件代表了不同的YOLOv8模型配置,具体包括:
**yolov8.yaml:** 这是YOLOv8模型的标准配置文件,定义了模型的基础架构和参数。
**yolov8-cls.yaml:** 配置文件调整了YOLOv8模型,专门用于图像分类任务。
**yolov8-ghost.yaml:** 应用Ghost模块的YOLOv8变体,旨在提高计算效率。
**yolov8-ghost-p2.yaml 和 yolov8-ghost-p6.yaml:** 这些文件是针对特定大小输入的Ghost模型变体配置。
**yolov8-p2.yaml和 yolov8-p6.yaml:** 针对不同处理级别(例如不同的输入分辨率或模型深度)的YOLOv8模型配置。
**yolov8-pose.yaml:** 为姿态估计任务定制的YOLOv8模型配置。
**yolov8-pose-p6.yaml:** 针对更大的输入分辨率或更复杂的模型架构姿态估计任务。
**yolov8-rtdetr.yaml:** 可能表示实时检测和跟踪的YOLOv8模型变体。
**yolov8-seg.yaml 和 yolov8-seg-p6.yaml:** 这些是为语义分割任务定制的YOLOv8模型配置。
这些配置文件是模型训练和部署的核心,同时大家如果进行改进也是修改其中的对应文件来优化 网络结构。
**trackers文件夹:**用于追踪算法的配置。
**__init__.py文件:**表明`cfg`是一个Python包。
**default.yaml:**项目的默认配置文件,包含了被多个模块共享的通用配置项。【设置task、mode、data、epochs、patience、batch、imgsz、resume】
模型文件配置:
怎么指定使用哪一种大小的模型呢?假设我选择的配置文件是yolov8.yaml,我想选择m大小的模型,则train.py中的指定为ultralytics/cfg/models/v8/yolov8m.yaml即可,同理,如果我想指定s大小的模型,则指定为ultralytics/cfg/models/v8/yolov8s.yaml即可,如果直接设置为ultralytics/cfg/models/v8/yolov8.yaml,则默认使用n大小模型,又或者我需要使用ultralytics/cfg/models/v8/yolov8-bifpn.yaml,我需要设定为s模型,则应该为ultralytics/cfg/models/v8/yolov8s-bifpn.yaml.(V5同理)
3、data
在data/scripts文件夹中,包括了一系列脚本和Python文件:
\- download_weights.sh: 用来下载预训练权重的脚本。
\- get_coco.sh, get_coco128.sh, get_imagenet.sh: 用于下载COCO数据集完整版、128张图片版以及ImageNet数据集的脚本。
**在data文件夹中,包括:**
**annotator.py:** 用于数据注释的工具。
**augment.py:** 数据增强相关的函数或工具。
**base.py, build.py, converter.py:** 包含数据处理的基础类或函数、构建数据集的脚本以及数据格式转换工具。
**dataset.py:** 数据集加载和处理的相关功能。
**loaders.py:** 定义加载数据的方法。
**utils.py:** 各种数据处理相关的通用工具函数
4、engine
engine文件夹包含与模型训练、评估和推理有关的核心代码:
**exporter.py:** 用于将训练好的模型导出到其他格式,例如ONNX或TensorRT。
**model.py:** 包含模型定义,还包括模型初始化和加载的方法。
**predictor.py:** 包含推理和预测的逻辑,如加载模型并对输入数据进行预测。
**results.py:** 用于存储和处理模型输出的结果。
**trainer.py:** 包含模型训练过程的逻辑。
**tuner.py:** 用于模型超参数调优。
**validator.py:** 包含模型验证的逻辑,如在验证集上评估模型性能。
5、hub
hub文件夹通常用于处理与平台或服务集成相关的操作,包括:
**auth.py:** 处理认证流程,如API密钥验证或OAuth流程。
**session.py:** 管理会话,包括创建和维护持久会话。
**utils.py:** 包含一些通用工具函数,可能用于支持认证和会话管理功能。
6、models(重点)
models/yolo目录中包含了YOLO模型的不同任务特定实现:
**classify:** 这个目录可能包含用于图像分类的YOLO模型。
**detect:** 包含用于物体检测的YOLO模型。
**pose:** 包含用于姿态估计任务的YOLO模型。
**segment:** 包含用于图像分割的YOLO模型,
7、nn(重点)
这个文件目录下的所有文件,就是定义我们模型中的一些组成构建,之后我们进行改进和优化,增加其它结构的时候都要在对应的文件下面进行改动。
**modules文件夹:**
**__init__.py:** 表明此目录是Python包。
**block.py:** 包含定义神经网络中的基础块,如残差块或瓶颈块。
**conv.py:** 包含卷积层相关的实现。
**head.py:** 定义网络的头部,用于预测。
**transformer.py:** 包含Transformer模型相关的实现。
**utils.py:** 提供构建神经网络时可能用到的辅助函数。
**__init__.py:** 同样标记这个目录为Python包。
**autobackend.py:** 用于自动选择最优的计算后端。
tasks.py: 定义了使用神经网络完成的不同任务的流程,例如分类、检测或分割,所有的流程基本上都定义在这里,定义模型前向传播都在这里。
8、solutions
**__init__.py:** 标识这是一个Python包。
**ai_gym.py:** 与强化学习相关,例如在OpenAI Gym环境中训练模型的代码。
**heatmap.py:** 用于生成和处理热图数据,这在物体检测和事件定位中很常见。
**object_counter.py:** 用于物体计数的脚本,包含从图像中检测和计数实例的逻辑。
9、trackers
trackers**文件夹包含了实现目标跟踪功能的脚本和模块:
**__init__.py:** 指示该文件夹是一个Python包。
**basetrack.py:** 包含跟踪器的基础类或方法。
**bot_sort.py:** 实现了SORT算法(Simple Online and Realtime Tracking)的版本。
**byte_tracker.py:** 是一个基于深度学习的跟踪器,使用字节为单位跟踪目标。
**track.py:** 包含跟踪单个或多个目标的具体逻辑。
**README.md:** 提供该目录内容和用法的说明。
10、utils
这个utils目录包含了多个Python脚本,每个脚本都有特定的功能:
**callbacks.py:** 包含在训练过程中被调用的回调函数。
**autobatch.py:** 用于实现批处理优化,以提高训练或推理的效率。
**benchmarks.py:** 包含性能基准测试相关的函数。
**checks.py**: 用于项目中的各种检查,如参数验证或环境检查。
**dist.py:** 涉及分布式计算相关的工具。
**downloads.py:** 包含下载数据或模型等资源的脚本。
**errors.py:** 定义错误处理相关的类和函数。
**files.py:** 包含文件操作相关的工具函数。
**instance.py:** 包含实例化对象或模型的工具。
**loss.py:** 定义损失函数。
**metrics.py:** 包含评估模型性能的指标计算函数。
**ops.py:** 包含自定义操作,如特殊的数学运算或数据转换。
**patches.py:** 用于实现修改或补丁应用的工具。
**plotting.py:** 包含数据可视化相关的绘图工具。
**tal.py:** 一些损失函数的功能应用
**torch_utils.py:** 提供PyTorch相关的工具和辅助函数,包括GFLOPs的计算。
**triton.py:** 可能与NVIDIA Triton Inference Server集成相关。
**tuner.py:** 包含模型或算法调优相关的工具。