当前位置: 首页 > article >正文

【Ultralytics】「1」Ultralytics YOLO 全栈计算机视觉框架介绍

本文旨在帮助初学者开发者快速建立对整个项目架构、核心能力和模块组织方式的全局认知。阅读完成后你将理解这个仓库包含什么、各模块之间的关系、以及后续应该按照什么顺序深入学习。一、项目定位与核心价值Ultralytics YOLO是一个基于 PyTorch 的全栈计算机视觉框架其核心使命是将最先进SOTA的目标检测模型以极低的上手门槛交付给开发者。一个pip install ultralytics即可获得从模型训练、推理验证到多格式导出的完整工具链。当前版本号为8.4.41项目采用AGPL-3.0开源协议。框架原生支持 Python ≥ 3.8核心依赖包括 PyTorch ≥ 1.8、OpenCV、NumPy、Pillow 等可选依赖覆盖了从 ONNX 到 TensorRT 的完整导出生态。项目通过pyproject.toml管理同时注册了yolo和ultralytics两个 CLI 入口命令方便命令行直接调用。Sources:init.py, pyproject.toml, pyproject.toml二、五大视觉任务七个模型家族框架当前支持5 种计算机视觉任务和7 个模型家族通过一套统一的接口进行管理任务类型说明默认示例模型核心评估指标detect目标检测在图像中定位并分类物体yolo26n.ptmAP50-95(B)segment实例分割检测 像素级轮廓yolo26n-seg.ptmAP50-95(M)classify图像分类图像级标签预测yolo26n-cls.ptaccuracy_top1pose姿态估计人体关键点定位yolo26n-pose.ptmAP50-95§obb旋转框检测带角度的定向边界框yolo26n-obb.ptmAP50-95(B)模型家族定位特色YOLO主力系列统一接口支持全部 5 种任务YOLOWorld开放词汇检测通过文本描述检测任意类别无需专项训练YOLOE高效变体兼顾检测与分割的高效率模型NAS神经架构搜索自动搜索最优网络结构SAM / FastSAM万物分割Meta SAM 的 YOLO 加速版本RTDETR实时 DETR基于 Transformer 的实时端到端检测器Sources: cfg/init.py, models/init.py,init.py三、整体架构概览框架采用分层解耦的架构设计从上到下可分为用户接口层、引擎层、模型层、神经网络层和数据层五个层次。下面的 Mermaid 图展示了核心模块之间的调用关系前置说明Mermaid 图中的箭头表示调用/依赖方向。Model类是整个框架的中央枢纽它向上对接 CLI 和 Python API向下分派到具体的 Trainer / Predictor / Validator / Exporter。数据层 Data神经网络层 NN模型层 Models引擎层 Engine配置层用户接口层CLI 入口yolo / ultralyticsPython APIfrom ultralytics import YOLOcfg/default.yaml默认配置 参数Model 统一模型类训练/推理/导出入口枢纽BaseTrainer训练循环BasePredictor推理流程BaseValidator评估指标Exporter格式导出YOLOdetect/segment/classify/pose/obbYOLOWorld开放词汇检测YOLOE高效检测RTDETRTransformer检测SAM / FastSAM万物分割NAS架构搜索nn/tasks.py模型构建与解析nn/modules/卷积/注意力/检测头AutoBackend17种推理后端数据加载管线InfiniteDataLoader数据增强Mosaic/MixUp/Affine多源输入图像/视频/摄像头Sources: engine/model.py, nn/autobackend.py, cfg/default.yaml四、项目目录结构速览理解目录结构是导航整个仓库的起点。以下是核心目录的职责划分ultralytics/ ← 主包根目录 ├── cfg/ ← 配置中心 │ ├── default.yaml ← 全局默认参数训练/推理/导出/超参 │ ├── models/ ← 模型 YAML 定义文件 │ └── trackers/ ← 跟踪器配置ByteTrack / BoTSORT ├── engine/ ← 引擎层核心基类 │ ├── model.py ← Model 统一入口类 │ ├── trainer.py ← BaseTrainer 训练器基类 │ ├── predictor.py ← BasePredictor 推理器基类 │ ├── validator.py ← BaseValidator 验证器基类 │ ├── exporter.py ← Exporter 导出引擎 │ ├── results.py ← Results 推理结果对象 │ └── tuner.py ← 超参自动调优 ├── models/ ← 模型层各模型家族实现 │ ├── yolo/ ← YOLO 系列按任务分子目录 │ │ ├── model.py ← YOLO / YOLOWorld / YOLOE 类定义 │ │ ├── detect/ ← 检测任务 Trainer/Predictor/Validator │ │ ├── segment/ ← 分割任务 │ │ ├── classify/ ← 分类任务 │ │ ├── pose/ ← 姿态估计任务 │ │ └── obb/ ← 旋转框检测任务 │ ├── rtdetr/ ← RT-DETR 模型 │ ├── sam/ ← SAM 模型 │ ├── fastsam/ ← FastSAM 模型 │ └── nas/ ← NAS 模型 ├── nn/ ← 神经网络层 │ ├── tasks.py ← 模型构建YAML → PyTorch Model │ ├── autobackend.py ← AutoBackend 多后端调度 │ ├── modules/ ← 算子库卷积/注意力/检测头/变换器 │ └── backends/ ← 17种推理后端实现 ├── data/ ← 数据层 │ ├── build.py ← 数据集构建与 DataLoader │ ├── augment.py ← 数据增强策略 │ ├── loaders.py ← 多源输入适配器 │ └── dataset.py ← 数据集类定义 ├── solutions/ ← 开箱即用的解决方案 │ ├── object_counter.py ← 目标计数 │ ├── heatmap.py ← 热力图 │ ├── speed_estimation.py ← 速度估计 │ └── ... ← 共 17 个解决方案 ├── trackers/ ← 目标跟踪器 │ ├── byte_tracker.py ← ByteTrack │ └── bot_sort.py ← BoTSORT ├── utils/ ← 工具集 │ ├── callbacks/ ← 回调系统WandB/TensorBoard/MLflow │ ├── metrics.py ← 评估指标计算 │ ├── plotting.py ← 可视化绘制 │ └── loss.py ← 损失函数 └── hub/ ← Ultralytics HUB 集成Sources: 项目目录结构, engine/, models/yolo/, solutions/init.py五、关键设计模式5.1 懒加载机制框架的ultralytics/__init__.py并没有直接import所有模型类而是通过__getattr__魔术方法实现了懒加载。当你第一次执行from ultralytics import YOLO时框架才会动态导入ultralytics.models.YOLO。这意味着简单执行import ultralytics不会触发任何模型或 PyTorch 的加载启动速度极快。Sources:init.py5.2 task_map 任务分派映射YOLO 模型类通过task_map属性实现了任务到具体组件的映射分派。每种任务detect、segment、classify、pose、obb各自绑定专属的 Model、Trainer、Validator、Predictor 四个类。当你调用model.train()时引擎根据当前任务的task_map自动实例化对应的 Trainer# task_map 核心结构简化{detect:{model:DetectionModel,trainer:DetectionTrainer,...},segment:{model:SegmentationModel,trainer:SegmentationTrainer,...},classify:{model:ClassificationModel,trainer:ClassificationTrainer,...},pose:{model:PoseModel,trainer:PoseTrainer,...},obb:{model:OBBModel,trainer:OBBTrainer,...},}Sources: models/yolo/model.py5.3 统一配置体系所有运行参数训练、推理、验证、导出、超参数都集中在一个cfg/default.yaml文件中管理。用户可以通过三种方式覆盖默认配置① CLI 参数yolo train epochs50② Python API 关键字参数model.train(epochs50)③ 自定义 YAML 文件yolo cfgmy_config.yaml。配置系统会自动进行参数校验和类型转换。Sources: cfg/default.yaml, cfg/init.py5.4 多后端推理调度 AutoBackend推理时AutoBackend根据模型文件后缀自动选择对应的后端实现。框架当前支持17 种推理格式每种后端都有独立的实现类统一继承自BaseBackend推理格式文件后缀后端文件PyTorch*.ptpytorch.pyONNX Runtime*.onnxonnx.pyTensorRT*.enginetensorrt.pyOpenVINO*openvino_model/openvino.pyCoreML*.mlpackagecoreml.pyTensorFlow*_saved_model/ / *.pb / *.tflitetensorflow.pyNCNN*_ncnn_model/ncnn.pyMNN*.mnnmnn.pyPaddlePaddle*_paddle_model/paddle.pyRKNN*_rknn_model/rknn.pyExecuTorch*.pteexecutorch.pyAxelera AI*_axelera_model/axelera.pyTritontriton://modeltriton.pyTorchScript*.torchscript内置于 autobackendSources: nn/autobackend.py, nn/backends/六、开箱即用的 Solutions 解决方案框架内置了17 个开箱即用的视觉应用解决方案无需编写复杂代码即可直接部署到生产环境解决方案类名用途目标计数ObjectCounter跨线计数、区域计数热力图Heatmap可视化目标分布密度速度估计SpeedEstimator车辆速度测算队列管理QueueManager排队长度与等待时间健身监控AIGym姿态角度追踪与计数区域计数RegionCounter多边形区域内计数目标模糊ObjectBlurrer隐私保护模糊处理目标裁剪ObjectCropper自动裁剪检测目标停车管理ParkingManagement车位占用状态监测实例分割InstanceSegmentation实时分割可视化距离计算DistanceCalculation目标间距离测算安全警报SecurityAlarm异常检测与邮件告警视觉关注VisionEye视角聚焦可视化区域跟踪TrackZone限定区域目标跟踪相似搜索VisualAISearch以图搜图数据分析Analytics图表化数据展示实时推理InferenceStreamlit 网页端推理Sources: solutions/init.py, cfg/init.py七、六种运行模式框架定义了 6 种核心运行模式每种模式对应一套完整的处理管线模式CLI 用法说明trainyolo train完整训练循环含数据加载、增强、检查点保存valyolo val模型验证计算 mAP、混淆矩阵等指标predictyolo predict单帧/批量推理支持多种输出格式exportyolo export模型格式转换支持 16 种导出格式trackyolo track目标检测 跟踪ByteTrack / BoTSORTbenchmarkyolo benchmark多格式推理速度基准测试Sources: cfg/init.py

相关文章:

【Ultralytics】「1」Ultralytics YOLO 全栈计算机视觉框架介绍

本文旨在帮助初学者开发者快速建立对整个项目架构、核心能力和模块组织方式的全局认知。阅读完成后,你将理解:这个仓库包含什么、各模块之间的关系、以及后续应该按照什么顺序深入学习。 一、项目定位与核心价值 Ultralytics YOLO 是一个基于 PyTorch …...

别再拆晶振了!ADAU1701开发板IIS输入的正确接线与SigmaStudio配置避坑指南

ADAU1701开发板IIS输入实战:无损获取MCLK信号与SigmaStudio高阶配置解析 在音频DSP开发领域,ADAU1701因其出色的性价比和灵活的音频处理能力,成为众多硬件工程师和音频爱好者的首选。然而,当涉及到IIS数字音频输入时,一…...

Qt Charts避坑指南:从TreeWidget取数据画图,这些细节你注意了吗?

Qt Charts实战避坑:从TreeWidget到动态图表的完整解决方案 在Qt应用开发中,数据可视化是提升用户体验的关键环节。许多开发者在使用Qt Charts模块时,往往只关注图表API本身,却忽略了数据源处理这个重要环节。本文将深入探讨如何高…...

IP2301 1A高压线性锂电池充电管理芯片

1 特性  支持输入工作电压 4.0V-24V, 承受高达到 38V 浪涌电压  电池端承受高达 38V 浪涌电压  支持外部电阻选择多种锂电池类型(目标充饱电压 4.2V/4.35V/4.4V),支持 3.2V 铁锂(目标充饱电压 3.6V);定制可实现单…...

PlatformIO配置合宙ESP32C3的避坑指南:Flash模式、I2C引脚重映射与手势传感器集成

PlatformIO配置合宙ESP32C3的避坑指南:Flash模式、I2C引脚重映射与手势传感器集成 第一次拿到合宙ESP32C3开发板时,我被它小巧的体积和RISC-V架构所吸引。但真正开始项目开发后,才发现这款芯片的配置细节与常见的ESP32系列有不少差异。特别是…...

用Arduino和ADXL335做个简易计步器?手把手教你从接线到代码调试

用Arduino和ADXL335打造高精度计步器:从硬件搭建到智能算法优化 在智能穿戴设备普及的今天,计步器作为最基础的健康监测功能,其核心原理却鲜为人知。ADXL335这款三轴加速度传感器,凭借其小巧体积和出色性能,成为DIY爱好…...

别再死记硬背了!用Python脚本自动计算RK3588 GPIO引脚号(附源码)

告别繁琐计算:用Python自动化解析RK3588 GPIO引脚编号 每次在RK3588开发板上配置GPIO引脚时,你是否也经历过这样的痛苦?面对GPIO1_D0这样的标识,需要先在脑中回忆计算公式,然后进行多步运算:bank1&#xff…...

避坑指南:ESP32做Modbus主机时,RS485收发切换的那些‘坑’与最佳实践

ESP32 Modbus主机RS485通信的时序陷阱与工业级解决方案 引言:为什么你的Modbus数据总是不稳定? 在工业自动化项目中,ESP32凭借其出色的性价比和无线功能,正逐渐成为Modbus主机开发的热门选择。但许多开发者都会遇到这样的困扰&…...

通过Python示例代码快速上手Taotoken的聊天补全接口

通过Python示例代码快速上手Taotoken的聊天补全接口 1. 准备工作 在开始编写代码之前,需要确保已经完成以下准备工作。首先访问Taotoken平台创建API Key,登录控制台后可以在「API密钥管理」页面生成新的密钥。建议为测试用途创建一个临时密钥&#xff…...

告别串口调试助手:用Wireshark可视化分析RS232转以太网UDP数据流(基于FPGA实现)

告别串口调试助手:用Wireshark可视化分析RS232转以太网UDP数据流(基于FPGA实现) 在嵌入式系统开发中,调试串口通信问题往往令人头疼。传统的串口调试助手虽然简单易用,但面对复杂的通信故障时,纯文本的显示…...

AI双引擎开发:在快马平台中协同使用内置AI与英伟达模型辅助编程决策

最近在尝试用AI辅助开发时,发现不同AI模型对同一问题的处理方式差异很大。为了更高效地比较不同模型的输出效果,我在InsCode(快马)平台上搭建了一个简单的对比工具,这里分享一下实现思路和使用体验。 工具设计初衷 在实际开发中,经…...

别再被‘note: This error originates from a subprocess’搞懵了!手把手教你排查pip安装失败的真正元凶

解码pip子进程报错:从表象到本质的深度排查指南 当你在终端输入pip install package_name后,屏幕上突然跳出"note: This error originates from a subprocess"的红色警告,那种挫败感就像在黑暗迷宫中摸索却找不到出口。这类报错之所…...

告别‘炼丹’焦虑:用Stable Diffusion WebUI打造你的Windows 10本地AI画室,模型管理与工作流心得

告别‘炼丹’焦虑:用Stable Diffusion WebUI打造你的Windows 10本地AI画室,模型管理与工作流心得 当你第一次看到Stable Diffusion生成的图像时,那种震撼感可能至今难忘。但兴奋过后,面对满屏的模型文件、复杂的参数设置和时好时坏…...

C# 13主构造函数的5个反直觉行为,92%的开发者在Production环境踩过第3个坑

更多请点击: https://intelliparadigm.com 第一章:C# 13 主构造函数增强实战教程 C# 13 引入了主构造函数(Primary Constructor)的显著增强,允许在类和结构体声明中直接定义参数并自动参与成员初始化,大幅…...

从CANape到Simulink:手把手教你搭建汽车控制器数据回灌的完整工作流(含MDF文件避坑指南)

从CANape到Simulink:汽车控制器数据回灌全流程实战解析 在汽车电控系统开发中,数据回灌技术是连接实车测试与虚拟仿真的关键桥梁。想象这样一个场景:台架测试中某个ECU的节气门控制信号出现异常波动,作为工程师的你,如…...

3分钟掌握RPG Maker游戏资源解密:终极工具使用完全指南

3分钟掌握RPG Maker游戏资源解密:终极工具使用完全指南 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/rp/…...

别再只开3389了!Windows远程桌面安全配置与端口转发避坑全记录

Windows远程桌面安全进阶指南:超越3389端口的基础防护 远程办公和跨设备协作已成为现代工作流的重要组成部分,而Windows远程桌面协议(RDP)因其原生集成和高效性能成为许多用户的首选方案。但令人担忧的是,大量用户仍在沿用默认的3389端口配置…...

LRCGET终极指南:如何快速为本地音乐库批量下载同步歌词的完整解决方案

LRCGET终极指南:如何快速为本地音乐库批量下载同步歌词的完整解决方案 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 你是否拥有海量离线音…...

开发 AI 应用时如何利用 Taotoken 聚合端点简化多模型调试

开发 AI 应用时如何利用 Taotoken 聚合端点简化多模型调试 1. 多模型调试的常见痛点 在开发基于大模型的 AI 应用时,开发者经常需要测试不同模型的输出效果或性能表现。传统方式下,这意味着需要为每个模型单独配置 API 密钥、Base URL 和调用参数&…...

LayerDivider终极指南:5分钟掌握AI智能图像分层技术

LayerDivider终极指南:5分钟掌握AI智能图像分层技术 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字创意设计的世界里,你是…...

百度网盘Mac版终极加速方案:免费解锁SVIP下载权限

百度网盘Mac版终极加速方案:免费解锁SVIP下载权限 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 对于macOS用户来说,百度网盘的…...

在Linux mint中如何指定PrtScr键截图工具截图后的默认保存目录

在 Linux Mint 环境(尤其是默认的 Cinnamon 桌面)中,修改 PrtScr 键截图后的保存路径主要有以下三种方式: 1. 修改 dconf 配置(最直接的方法) Linux Mint 默认使用 gnome-screenshot 工具。你可以通过修改…...

个人文章汇总

日常记录 专栏 学习journal 汇总_weixin_57166741的博客-CSDN博客 其他 Linux 安装Ubuntu-VMware虚拟机或U盘启动盘-CSDN博客 sudo apt update和sudo apt-get update以及update和upgrade区别_sudo apt-get upgrade什么作用-CSDN博客 Ubuntu 报错:无法获得锁 /…...

Windows风扇控制终极指南:5分钟掌握FanControl完全教程

Windows风扇控制终极指南:5分钟掌握FanControl完全教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

【仅限前500名】C# 13主构造函数企业级落地手册(含Roslyn Analyzer规则包+迁移检查清单)

更多请点击: https://intelliparadigm.com 第一章:C# 13 主构造函数增强实战教程 C# 13 引入了主构造函数(Primary Constructor)的显著增强,允许在类和结构体声明中直接定义参数,并自动参与字段初始化、属…...

XDUTS LaTeX模板:西安电子科技大学毕业论文排版终极指南

XDUTS LaTeX模板:西安电子科技大学毕业论文排版终极指南 【免费下载链接】xduts Xidian University TeX Suite 西安电子科技大学LaTeX套装 项目地址: https://gitcode.com/gh_mirrors/xd/xduts 如果你是西安电子科技大学的学生,正在为毕业论文的格…...

别再乱用QLExpress了!手把手教你配置沙箱模式,避免Java应用被RCE

QLExpress安全实践指南:从沙箱配置到企业级防护体系 为什么你的QLExpress配置正在威胁企业安全? 深夜两点,某电商平台的安全值班电话突然响起——风控系统正在批量执行异常指令,大量用户积分被恶意兑换。事后溯源发现&#xff0…...

免费Windows风扇控制神器:3分钟打造静音电脑的终极方案

免费Windows风扇控制神器:3分钟打造静音电脑的终极方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

QrScan:如何快速批量检测和识别图片中的二维码?

QrScan:如何快速批量检测和识别图片中的二维码? 【免费下载链接】QrScan 离线批量检测图片是否包含二维码以及识别二维码 项目地址: https://gitcode.com/gh_mirrors/qrs/QrScan 你是否曾遇到过需要从海量图片中找出包含二维码的文件?…...

YOLOv5网络结构实战拆解:从CSP到C3,手把手教你用PyTorch复现关键模块

YOLOv5网络结构实战拆解:从CSP到C3,手把手教你用PyTorch复现关键模块 在目标检测领域,YOLOv5以其出色的性能和易用性赢得了广泛关注。不同于传统论文解读,本文将带您深入代码层面,通过PyTorch实现YOLOv5的核心组件。我…...