ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Ultralytics YOLOv5 网络架构深度解析:Backbone、数据增强、训练策略与损失计算

Ultralytics YOLOv5 网络架构深度解析:Backbone、数据增强、训练策略与损失计算 Ultralytics YOLOv5 网络架构深度解析Backbone、数据增强、训练策略与损失计算【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralyticsYOLOv5 是 Ultralytics 推出的经典单阶段实时目标检测算法本文以 YOLOv5 v6.0/6.1 架构为对象系统拆解其 CSPDarknet53 Backbone、SPPF PANet Neck、YOLOv3 Head 的完整网络结构深入剖析 Mosaic、MixUp、Copy-Paste 等数据增强手段梳理多尺度训练、AutoAnchor、EMA、混合精度等训练策略并逐项推导类别/目标/定位三项损失的计算、网格敏感度消除公式与 Build Targets 正样本匹配流程。读者读完本文后既能从原理层面读懂 YOLOv5 的每一项设计动机也能在本仓库Ultralytics 统一代码库中找到对应配置文件与源码实现为后续调参、复现或二次开发提供可直接对照的依据。说明本文所述 YOLOv5 架构对应 v6.0/6.1 版本当前仓库为 Ultralytics 统一代码库其中保留了 YOLOv5 的模型定义文件与通用训练/增强/模块实现文中会同时给出文档结论与仓库源码证据。1. 总体模型结构Backbone Neck Head 三段式设计YOLOv5 的网络由三个主要部分组成Backbone主干网络负责特征提取的主体网络。YOLOv5 采用CSPDarknet53结构是对先前版本所用 Darknet 架构的改进通过跨阶段局部连接Cross Stage Partial降低冗余梯度计算、提升学习能力。Neck颈部连接 Backbone 与 Head负责多尺度特征的融合。YOLOv5 中使用了SPPFSpatial Pyramid Pooling - Fast快速空间金字塔池化与PANetPath Aggregation Network路径聚合网络结构。Head检测头负责生成最终输出。YOLOv5 采用YOLOv3 Head完成密集预测。在本仓库中YOLOv5 的完整结构定义位于 ultralytics/cfg/models/v5/yolov5.yaml这是解析网络结构的第一手资料。配置文件采用模块化描述语法[from, number, module, args]其中from表示输入来自哪一层负数表示取当前层的倒数第几层number表示模块重复次数module为模块类型Conv / C3 / SPPF / Concat / Detect 等args为模块参数。大尺寸变体的定义见 ultralytics/cfg/models/v5/yolov5-p6.yaml。1.1 Backbone从 6×6 Conv 起步的 CSPDarknet53YOLOv5 Backbone 部分对应配置文件中的backbone:段逐层如下# YOLOv5 v6.0 backbone backbone: # [from, number, module, args] - [-1, 1, Conv, [64, 6, 2, 2]] # 0-P1/2 - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4 - [-1, 3, C3, [128]] - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8 - [-1, 6, C3, [256]] - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16 - [-1, 9, C3, [512]] - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 - [-1, 3, C3, [1024]] - [-1, 1, SPPF, [1024, 5]] # 9网络依次经过 5 次下采样特征图逐步缩小到输入的 1/2、1/4、1/8、1/16、1/32对应注释中的P1/2~P5/32五个层级。主干末尾是 SPPF 模块其后接 PANet 完成多尺度聚合。构成骨干的关键基础模块在仓库中均有对应源码Conv标准卷积 BN SiLU 的复合卷积块定义于 ultralytics/nn/modules/conv.pyC3三卷积的 CSP Bottleneck其内部先经两个 1×1 卷积分出两条路径再通过多个 Bottleneck 与短路径拼接后经 1×1 卷积输出定义于 ultralytics/nn/modules/block.pyC3 类自第 325 行开始。值得注意scales:字段复合缩放系数# Parameters nc: 80 # number of classes scales: # model compound scaling constants, i.e. modelyolov5n.yaml will call yolov5.yaml with scale n # [depth, width, max_channels] n: [0.33, 0.25, 1024] s: [0.33, 0.50, 1024] m: [0.67, 0.75, 1024] l: [1.00, 1.00, 1024] x: [1.33, 1.25, 1024]n/s/m/l/x 五档通过对网络深度重复次数、宽度通道数与最大通道上限进行复合缩放得到不同计算量的变体。这也是原始 YOLOv5 仓库中yolov5l.yaml等文件的内容来源——l档即此处[1.00, 1.00, 1024]。1.2 NeckSPPF PANet与早期版本相比YOLOv5 在特征融合网络上引入了两个关键工程改进详见 1.4 节配置文件中的head:段同时描述了 Neck 与检测头# YOLOv5 v6.0 head head: - [-1, 1, Conv, [512, 1, 1]] - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 6], 1, Concat, [1]] # cat backbone P4 - [-1, 3, C3, [512, False]] # 13 - [-1, 1, Conv, [256, 1, 1]] - [-1, 1, nn.Upsample, [None, 2, nearest]] - [[-1, 4], 1, Concat, [1]] # cat backbone P3 - [-1, 3, C3, [256, False]] # 17 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 14], 1, Concat, [1]] # cat head P4 - [-1, 3, C3, [512, False]] # 20 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 10], 1, Concat, [1]] # cat head P5 - [-1, 3, C3, [1024, False]] # 23 (P5/32-large) - [[17, 20, 23], 1, Detect, [nc]] # Detect(P3, P4, P5)从配置可以清晰还原 PANet 的自顶向下top-down与自底向上bottom-up双向路径自顶向下第 9 层P5/32 特征经 1×1 卷积降维后 2× 上采样与 Backbone 第 6 层P4 特征Concat融合再经C3此处第二个参数False表示关闭 shortcut防止浅层特征被残差稀释得到第 13 层类似操作与 Backbone 第 4 层P3 特征融合得到第 17 层即小目标输出P3/8-small。自底向上第 17 层经 3×3 步长 2 卷积下采样与第 13 层路径上的中间结果[[-1, 14]]融合得到P4/16-medium再次下采样并与第 9 层融合得到P5/32-large。三个尺度[17, 20, 23]统一送入Detect头分别负责小 / 中 / 大目标的预测对应 stride 8 / 16 / 32。1.3 HeadYOLOv3 检测头Head 使用经典 YOLOv3 风格的 anchor-based 检测头每个尺度P3/P4/P5在每个网格位置基于预设 anchor 预测框的坐标、宽高、目标置信度与类别概率。由于特征图尺度与 anchor 数量的乘积构成了密集的预测网格YOLOv5 依靠 4.3 节 介绍的坐标解码修正来保证训练稳定性。1.4 两处关键架构改进YOLOv5 相比前代带来两项重要的结构改进用 6×6 Conv 替换 Focus 结构早期版本中的Focus将特征按 2×2 切片重组后接卷积被替换为步长为 2 的6×6 Conv2d。这一改动在保持等效感受野的同时提升了效率。在 ultralytics/cfg/models/v5/yolov5.yaml 中可见 backbone 的第一层即为Conv, [64, 6, 2, 2]即输出 64 通道、核 6、步长 2 的 6×6 卷积与文档描述完全对应。用 SPPF 替换 SPPSPPSpatial Pyramid Pooling需要分别用 5/9/13 三种尺寸的池化核对同一输入做三次独立池化再拼接而 SPPFSpatial Pyramid Pooling - Fast将大核池化分解为同一 5×5 池化的串行级联数学上等价却把计算量降低到原来的约 1/2 到 1/3见下文实测且输出完全一致。仓库中 SPPF 的标准实现位于 ultralytics/nn/modules/block.py 第 211 行起其核心逻辑是先经cv11×1 卷积、不带激活压缩通道随后对特征反复施加nn.MaxPool2d(kernel_size5, stride1, padding2)最终把原始特征与各级池化输出沿通道维拼接后经cv2输出。配置中SPPF, [1024, 5]即输入输出通道为 1024、池化核为 5。SPP 与 SPPF 的速度对比实测可用下面这段可独立运行的脚本在相同随机张量上对比二者输出与耗时以下为文档提供的完整参考实现import time import torch from torch import nn class SPP(nn.Module): def __init__(self): Initializes an SPP module with three different sizes of max pooling layers. super().__init__() self.maxpool1 nn.MaxPool2d(5, 1, padding2) self.maxpool2 nn.MaxPool2d(9, 1, padding4) self.maxpool3 nn.MaxPool2d(13, 1, padding6) def forward(self, x): Applies three max pooling layers on input x and concatenates results along channel dimension. o1 self.maxpool1(x) o2 self.maxpool2(x) o3 self.maxpool3(x) return torch.cat([x, o1, o2, o3], dim1) class SPPF(nn.Module): def __init__(self): Initializes an SPPF module with a specific configuration of MaxPool2d layer. super().__init__() self.maxpool nn.MaxPool2d(5, 1, padding2) def forward(self, x): Applies sequential max pooling and concatenates results with input tensor. o1 self.maxpool(x) o2 self.maxpool(o1) o3 self.maxpool(o2) return torch.cat([x, o1, o2, o3], dim1) def main(): Compares outputs and performance of SPP and SPPF on a random tensor (8, 32, 16, 16). input_tensor torch.rand(8, 32, 16, 16) spp SPP() sppf SPPF() output1 spp(input_tensor) output2 sppf(input_tensor) print(torch.equal(output1, output2)) t_start time.time() for _ in range(100): spp(input_tensor) print(fSPP time: {time.time() - t_start}) t_start time.time() for _ in range(100): sppf(input_tensor) print(fSPPF time: {time.time() - t_start}) if __name__ __main__: main()在作者当时的运行环境中输出结果如下具体数值随 CPU/GPU 与 PyTorch 版本浮动重点是二者的相对差距与torch.equal恒为TrueTrue SPP time: 0.5373051166534424 SPPF time: 0.20780706405639848可以看到SPPF 与 SPP 输出张量完全一致但推理耗时不到 SPP 的一半这正是保持相同输出、处理速度提升一倍以上的由来。2. 数据增强技术YOLOv5 通过丰富的数据增强手段提升模型泛化能力、抑制过拟合。这些增强的核心实现位于 ultralytics/data/augment.py其中Mosaic第 434 行、MixUp第 774 行、CopyPaste第 1890 行、Albumentations第 2044 行、LetterBox第 1634 行等类均可在源码中找到对应定义各增强的默认概率/幅度集中在训练超参配置文件 ultralytics/cfg/default.yaml 中便于直接查阅与修改。下面逐项介绍。2.1 Mosaic 拼接增强Mosaic 增强将 4 张训练图像拼接为一张合成图使模型能够在同一训练样本中同时见到多张图像的物体从而更好地处理各种目标尺度与平移变化拼接后的图中包含大量小目标也变相增强了小目标检测能力。默认开启概率极高配置中mosaic: 1.0。此外考虑到模型在训练后期已趋于收敛、过强的拼接会干扰最终精调YOLOv5 在 v6.0 之后还支持在最后若干轮关闭 Mosaic即配置中的close_mosaic: 10——表示最后 10 个 epoch 禁用 Mosaic 增强让模型在接近真实分布的数据上做收尾训练。2.2 Copy-Paste 增强Copy-Paste 增强是一种创新性的数据增强方法从一张图像中复制随机区域通常是某个实例目标粘贴到另一张随机选择的图像上从而生成全新的训练样本同时保留粘贴物体的标注信息。该方法在实例分割任务上收益尤为明显。对应配置项为copy_paste: 0.0segment/obb 任务中可设置参与粘贴的目标比例与copy_paste_mode如flip/mixup两种粘贴策略。2.3 随机仿射变换随机仿射变换包括对图像的随机旋转、缩放、平移与错切。对应配置项为degrees: 0.0 # (float) rotation degrees (/-) translate: 0.1 # (float) translation fraction (/-) scale: 0.5 # (float | tuple) scale gain (/-) as float, or explicit (min, max) tuple shear: 0.0 # (float) shear degrees (/-) perspective: 0.0 # (float) perspective fraction (0–0.001 typical)这些参数通过随机采样确定仿射变换矩阵对图像与标注框同步施加变换增强模型对几何形变的鲁棒性。2.4 MixUp 增强MixUp 增强通过将两张图像及其标注做线性组合来构造合成样本即x_new λ·x_a (1-λ)·x_b标签也按相同比例混合。它鼓励模型学习类别之间的线性插值行为常被用于缓解过拟合、提升鲁棒性。配置项为mixup: 0.0MixUp 概率在训练数据充足时通常保持关闭或取较小值。2.5 Albumentations 库增强Albumentations是强大的第三方图像增强库支持丰富的增强算子如各种模糊、噪点、光学畸变、通道扰动等。YOLOv5 将 Albumentations 作为可选增强流水线接入训练流程允许用户以极低成本扩展增强组合。仓库中 ultralytics/data/augment.py 的Albumentations类封装了该库的随机调用若环境中安装了albumentations才生效未安装时自动跳过相关用法可进一步参考 Albumentations 集成文档。2.6 HSV 颜色空间增强HSV 增强对图像的色相Hue、饱和度Saturation与明度Value做随机扰动提升模型对光照与颜色变化的鲁棒性。默认扰动幅度hsv_h: 0.015 # (float) HSV hue augmentation fraction hsv_s: 0.7 # (float) HSV saturation augmentation fraction hsv_v: 0.4 # (float) HSV value (brightness) augmentation fraction实现上先将图像由 RGB 转换到 HSV 空间对三通道做带符号随机偏移再转回 RGB整个过程在 GPU/内存张量上进行速度很快是训练默认开启且几乎零成本的增强。2.7 随机水平翻转随机水平翻转以一定概率水平镜像图像与标注。对应配置项flipud: 0.0 # (float) vertical flip probability fliplr: 0.5 # (float) horizontal flip probability默认水平翻转概率为 0.5垂直翻转默认关闭因为自然图像中上下颠倒的样本通常不符合语义先验例如行人不会倒立行走。这种增强在不改变目标语义的前提下成倍扩充了训练样本的左-右变化。3. 训练策略YOLOv5 采用了一系列成熟的训练策略以提升模型性能其中多数可在本仓库的训练超参配置 ultralytics/cfg/default.yaml 与训练器实现中找到对应项。3.1 多尺度训练Multiscale Training训练过程中输入图像会在其原始尺寸的 0.5~1.5 倍范围内随机缩放迫使模型适应不同尺度下的目标提升尺度不变性并间接增强小目标性能。当前仓库统一了尺度控制参数multi_scale: 0.0其含义为多尺度范围相对imgsz的比例训练时会按 stride 的整数倍动态调整每批输入尺寸若希望复现类似0.5~1.5 倍随机缩放的激进策略可相应调大该比例。3.2 AutoAnchor 自适应锚框AutoAnchor策略会根据自定义数据集中真实标注框的统计特征自动优化预设 anchor 的尺寸与宽高比使先验锚框与目标框分布更吻合从而降低回归难度、加速收敛。它对迁移到自建数据集尤其目标宽高比分布与 COCO 差异较大时非常有价值是开箱即用、无需手工设计锚框的关键设计之一。与此配套的超参是 build targets 过程中的匹配阈值anchor_t原始 YOLOv5 默认取 4.0见 4.4 节。3.3 Warmup 与余弦学习率调度Warmup预热与 Cosine LR Scheduler余弦学习率调度用于更平滑地调整学习率。训练前若干个 epoch 采用从较小学习率含单独放大的 bias 学习率线性爬升到目标值的预热过程避免初期梯度剧烈震荡之后学习率按余弦曲线从初值平滑衰减到终值。相关默认参数lr0: 0.01 # (float) initial learning rate (SGD1e-2, Adam/AdamW1e-3) lrf: 0.01 # (float) final LR fraction; final LR lr0 * lrf momentum: 0.937 # (float) SGD momentum or Adam beta1 weight_decay: 0.0005 # (float) weight decay (L2 regularization) warmup_epochs: 3.0 # (float) warmup epochs (fractions allowed) warmup_momentum: 0.8 # (float) initial momentum during warmup warmup_bias_lr: 0.1 # (float) bias learning rate during warmup此外还支持余弦退火总开关cos_lr: False与分段线性下降默认两种调度方式的切换。3.4 指数移动平均EMAExponential Moving AverageEMA指数移动平均在训练过程中维护一组参数的历史指数移动平均用过去若干步参数的平滑均值替代最新参数用于验证与推理。该方法能稳定训练过程、平滑噪声梯度从而降低泛化误差是 YOLO 系列长期沿用的技巧。仓库中 EMA 模型由ModelEMA实现位于 ultralytics/utils/torch_utils.py类定义自第 727 行起训练循环中会对网络参数与 BatchNorm 运行统计做同步更新。3.5 混合精度训练AMP / Mixed Precision混合精度训练让前向/反向计算在 FP16 半精度下进行减少显存占用并显著提升计算速度同时通过 FP32 副本保留主权重、使用损失缩放loss scaling维持数值稳定性。训练开关为amp: True可选fp16/bf16/False默认启用其自动检查逻辑会保证在硬件不支持时安全回退到 FP32。3.6 超参数进化Hyperparameter Evolution超参数进化指在验证集上以一定遗传/随机策略自动搜索最优超参组合如学习率、增强幅度、损失权重等以获得接近最优的性能。该方法适合在固定模型与数据上做自动调参可结合仓库内配套的自动化调参工具使用完整方法与参数配置可参考 超参数调优指南其中同样讨论了如何针对本项目使用的数据集做高效搜索。4. 附加特性损失与目标分配4.1 损失计算Compute LossesYOLOv5 的总损失由三部分加权求和得到Loss λ1·L_cls λ2·L_obj λ3·L_loc其中类别损失 L_clsBCE Loss二元交叉熵损失度量分类任务的误差对每个类别独立做二分类是该类 / 不是该类。目标置信度损失 L_objBCE Loss另一个二元交叉熵损失用于度量某个网格单元内是否存在目标的判定误差负责过滤大量无目标背景位置。定位损失 L_locCIoU LossComplete IoU 损失度量目标在网格单元内的框定位误差。CIoU 在 IoU 基础上进一步惩罚中心点距离与宽高比差异回归更精准、收敛更稳定。4.2 损失平衡Balance Losses三个预测层P3、P4、P5分别对应小/中/大目标的 stride 8/16/32 输出的目标置信度损失被赋予不同权重[4.0, 1.0, 0.4]L_obj 4.0·L_obj_small 1.0·L_obj_medium 0.4·L_obj_large浅层P3小目标特征图网格数量最多、正样本密集因此给予最大权重深层P5大目标网格稀少权重相应减小。这一设计确保不同尺度的预测对总损失的贡献与各自难度相匹配避免小尺度层的梯度被淹没。4.3 消除网格敏感度Eliminate Grid Sensitivity在 YOLOv2 / YOLOv3 中边界框坐标由最后一层的激活值直接换算。设c_x、c_y为网格左上角坐标p_w、p_h为先验 anchor 的宽高原始公式为b_x σ(t_x) c_x b_y σ(t_y) c_y b_w p_w · e^(t_w) b_h p_h · e^(t_h)这一公式存在明显缺陷中心点偏移σ(t)的输出范围被限制在 (0, 1)模型很难让中心点恰好落在网格边界即输出 0 或 1导致对目标中心恰在网格线上这类情况拟合困难产生网格敏感度问题宽高使用指数形式out exp(in)输出完全无界极易导致梯度爆炸、训练不稳定、NaN 损失乃至训练彻底失败。为此YOLOv5 修改了坐标预测公式b_x (2·σ(t_x) − 0.5) c_x b_y (2·σ(t_y) − 0.5) c_y b_w p_w · (2·σ(t_w))² b_h p_h · (2·σ(t_h))²修改后的效果可直观总结为两点中心点偏移从 (0,1) 拉伸到 (−0.5, 1.5)缩放后的中心点更容易取到 0 或 1 的边界值从而轻松覆盖网格线处的目标中心消除网格敏感度宽高比缩放从无界指数变为有界因子(2·σ(t))²σ将输入压缩到 (0,1)乘以 2 后为 (0,2)平方后范围 (0,4)即预测框宽高最大为先验 anchor 的 4 倍从根本上杜绝了无界输出带来的训练发散风险。4.4 构建训练目标Build TargetsBuild Targets构建训练目标过程对训练效率与精度至关重要它负责把每个真实标注框ground truth分配到输出特征图上合适的网格单元并匹配合适的 anchor。核心步骤与判断标准如下Step 1计算真实框与 anchor 模板的宽高比。设真实框宽高为w_gt、h_gtanchor 宽高为w_at、h_atr_w w_gt / w_at r_h h_gt / h_at r_w_max max(r_w, 1 / r_w) r_h_max max(r_h, 1 / r_h) r_max max(r_w_max, r_h_max)Step 2用阈值判定是否匹配。只有满足r_max anchor_t # anchor_t 为匹配阈值原始默认 4.0时该真实框才与该 anchor 匹配。r_max本质上衡量真实框与 anchor 在宽高上的最大偏离倍数采用max(r, 1/r)的形式使其对真实框是 anchor 的 4 倍大与是 anchor 的 1/4 大给出相同的惩罚从而与尺度无关地衡量形状相似度同时把真实框宽高与其在特征图对应尺度上的 anchor比较兼顾了尺度匹配。Step 3将匹配的 anchor 分配到合适的网格单元。与早期 YOLO 不同由于中心点偏移范围已从 (0,1) 调整为 (−0.5, 1.5)见 4.3 节一个真实框中心可能同时落入多个相邻网格的有效范围内因此一个真实框可被分配给不止一个网格/一个 anchor从而增加正样本数量、加速收敛并提升召回。通过这一过程Build Targets 确保每个真实目标在训练时都被正确、充分地分配与匹配使 YOLOv5 能更有效地学习目标检测任务。结合前面 1.3 节 提到的 3 尺度输出整个过程会在 P3/P4/P5 三个尺度上分别执行实现从粗粒度框存在性判断到细粒度精确回归的分层学习。5. 小结设计要点的源码对照清单设计要点结论仓库依据整体三段式结构Backbone(CSPDarknet53) Neck(SPPFPANet) Head(YOLOv3 Head)ultralytics/cfg/models/v5/yolov5.yaml6×6 Conv 替换 Focusbackbone 首层为Conv[64,6,2,2]同上 backbone 第 0 层SPPF 替换 SPP串行级联 5×5 池化、输出等价且提速约 2 倍ultralytics/nn/modules/block.pySPPF 自第 211 行C3 骨干模块双 1×1 分路 Bottleneck 串接同上C3 自第 325 行Mosaic / MixUp / CopyPaste / Albumentations均以类形式实现并接入流水线ultralytics/data/augment.py增强与训练超参hsv/degrees/scale/mosaic/mixup/warmup/lr 等集中配置ultralytics/cfg/default.yamlEMA参数指数移动平均用于稳定训练ultralytics/utils/torch_utils.pyModelEMA 自第 727 行损失组合BCE(cls) BCE(obj) CIoU(loc)obj 按 P3/P4/P5 取 4.0/1.0/0.4见 4.1 / 4.2 节网格敏感度消除中心点偏移扩至 (−0.5,1.5)宽高改为p·(2σ)²有界化见 4.3 节Build Targetsmax(r,1/r)阈值匹配 多网格/多 anchor 分配见 4.4 节结论YOLOv5 代表了实时目标检测发展中的一个重要节点它在结构、训练策略与工程细节上的综合打磨使模型在保持 YOLO 系列一贯高速度特性的同时显著提升了检测的准确率与效率。其核心改进可归纳为基于复合缩放的动态化架构、覆盖面极广的数据增强体系Mosaic、MixUp、Copy-Paste、随机仿射、HSV 等、面向收敛与泛化的训练策略多尺度、AutoAnchor、warmup 余弦退火、EMA、混合精度、超参进化以及在损失计算与 Build Targets 目标分配上的关键调整——尤其是网格敏感度消除与有界化宽高预测。理解这些设计不仅能帮助你读懂 YOLOv5 为什么又快又准也能为你在本仓库基础上迁移到自定义数据集、诊断训练发散问题、或针对特定任务做超参与结构改造提供明确的方向。更深度的使用与任务文档可继续阅读 YOLOv5 模型页 与 目标检测任务文档。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表