深圳Yolo 视觉
深圳
立即加入
词汇表

模型合并

了解模型融合如何将多个预训练模型整合为一个。学习如何融合Ultralytics 的权重,在不增加额外延迟的情况下提升性能。

模型融合是机器学习(ML)中的一项创新技术, 它将多个预训练模型的已学习 参数(权重)整合为一个统一的模型。 与传统的多模型 架构不同,模型融合直接在 参数空间中融合模型权重。这使得从业者能够整合针对 不同任务或数据集进行微调的多个模型的专业知识,同时避免了同时运行多个模型 所产生的内存和计算成本。

通过直接对权重进行操作,模型合并能够保持单个 网络的架构规模。这在将先进的 计算机视觉(CV)管道部署到边缘设备时尤为重要, 因为在该场景下,降低推理延迟和节省 内存至关重要。

区分模型合并

区分模型融合与相关概念(如 模型集成 迁移学习)是有帮助的。

  • 模型合并与模型集成:模型集成将各个神经网络保持独立,在推理过程中分别运行 每个网络,并对其输出结果进行平均。这虽然提高了准确率,但计算开销成倍增加。模型 合并则是在推理前将实际权重进行合并,从而生成一个单一模型,无需额外的 运行时计算。
  • 模型融合与迁移学习:迁移学习是指选取一个基础模型,并 在新的数据集上对其进行进一步训练。模型融合则无需额外的 微调;它通过数学运算将 已训练好的模型进行融合。

常用技巧

研究人员开发了多种方法,可以在不破坏网络底层 能力的前提下有效组合权重,这一点在arXiv上近期 发表的学术研究中已有探讨。

  • 权重平均:最简单的方法,即取多个共享相同架构的模型权重的平均值。
  • 任务算术:一种通过加减“任务向量”(即微调模型与其基础模型之间的差异) 来组合或移除特定行为的技术。
  • TIES-Merging:一种通过修剪冗余值并在各模型间选择一致的符号来解决参数干扰的高级方法,同时在各种任务中保持性能。

实际应用

模型融合在构建泛化系统时非常有效,且无需从头开始重新训练。

  • 自动驾驶汽车:自动驾驶汽车可能会采用Ultralytics 基础 模型。工程师可以分别训练一个模型版本来detect 行人的detect 动作,另一个则用于识别 复杂的路标。将这两个模型融合在一起,便形成了一个功能强大的单一检测器,能够同时处理这两项任务, 且不会使推理时间翻倍。
  • 医疗领域的AI:在医学影像领域,由于严格的数据隐私法规,不同的研究型医院可能会针对专门的本地数据集(例如,一个 用于MRI扫描,另一个用于CT扫描)对模型进行微调。通过安全地融合这些模型,研究人员可以 创建一个综合性的诊断工具,从而充分利用多样化的数据分布。

示例:简单加权平均

您可以轻松地使用 PyTorch轻松完成基础模型合并。以下示例演示了如何 对两个结构相同的模型的状态字典进行平均处理。

import torch

# Load the weights (state dicts) from two identical architectures
weights_a = torch.load("yolo26_task1.pt")["model"].state_dict()
weights_b = torch.load("yolo26_task2.pt")["model"].state_dict()

# Perform simple weight averaging
merged_weights = {k: (weights_a[k] + weights_b[k]) / 2.0 for k in weights_a.keys()}

# Save the newly merged model weights
torch.save({"model": merged_weights}, "yolo26_merged.pt")

对于希望简化数据集标注、训练和部署等复杂工作流的团队而言, Ultralytics 提供了一个直观的界面,可轻松管理 端到端的视觉 AI 项目。

让我们携手共创人工智能的未来!

开启您的机器学习未来之旅