Model Merging
モデルマージングが複数の事前学習済みモデルをどのように 1 つに統合するかを発見してください。レイテンシを増やすことなく Ultralytics YOLO26 のウェイトを融合させ、パフォーマンスを向上させる方法を学びましょう。
モデルマージは、複数の事前学習済みモデルの学習済みパラメータ(重み)を単一の統合モデルに組み合わせる、機械学習 (ML) における革新的な手法です。従来のマルチモデル設定とは異なり、マージではモデルの重みをパラメータ空間内で直接融合させます。これにより、異なるタスクやデータセットでファインチューニングされた複数のモデルの専門的な知識を、複数のモデルを同時に実行する場合のメモリコストや計算コストを負担することなく組み合わせることが可能になります。
By applying operations directly to the weights, model merging maintains the architectural footprint of a single network. This is particularly valuable when deploying advanced computer vision (CV) pipelines to edge devices, where reducing inference latency and saving memory are critical.
Link to this sectionモデルマージの区別#
モデルマージを、モデルアンサンブルや転移学習といった関連概念と区別することは有益です。
- モデルマージ vs. モデルアンサンブル: モデルアンサンブルでは、個々のネットワークを別々に保持し、推論時にそれぞれを実行して出力を平均化します。これにより精度は向上しますが、計算負荷は倍増します。モデルマージでは推論の前に実際の重みを結合するため、実行時に追加の計算を必要としない単一のモデルが得られます。
- モデルマージ vs. 転移学習: 転移学習では、ベースモデルを取り込み、新しいデータセットでさらに学習を行います。モデルマージでは追加のファインチューニングを必要とせず、数学的な演算を使用して学習済みのモデルを融合させます。
Link to this section一般的な手法#
研究者たちは、arXivの最近の学術研究で検討されているように、ネットワークの根本的な機能を損なうことなく重みを効果的に組み合わせるためのいくつかの手法を開発しています。
- 重み平均化: 同じアーキテクチャを共有する複数のモデルの重みの平均をとる最も単純な手法です。
- タスク算術 (Task Arithmetic): 「タスクベクトル」(ファインチューニングされたモデルとベースモデルの差分)を加算または減算して、特定の動作を組み合わせたり削除したりする手法です。
- TIESマージ: 余剰な値をトリミングし、モデル間で一貫した符号を選択することでパラメータの干渉を解決し、多様なタスク間でパフォーマンスを維持する高度なアプローチです。
Link to this section実社会での応用#
モデルマージは、ゼロから再学習することなく汎用的なシステムを構築するのに非常に効果的です。
- 自動運転車: 自動運転車は、ベースモデルとしてUltralytics YOLO26を使用する場合があります。エンジニアは、歩行者の微細な動きを検出するように訓練されたモデルと、複雑な道路標識を読み取るように訓練されたモデルを個別に作成できます。これら2つのモデルをマージすることで、推論時間を倍増させることなく、両方のタスクを同時に処理できる、非常に有能な単一の検出器が作成されます。
- ヘルスケアにおけるAI: 医療画像分野では、厳格なデータプライバシー法により、研究病院ごとに専門的なローカルデータセット(例:MRIスキャン用とCTスキャン用)でモデルをファインチューニングする場合があります。モデルを安全にマージすることで、研究者は多様なデータ分布から恩恵を受ける包括的な診断ツールを作成できます。
Link to this section例:単純な重み平均化#
PyTorchを使用すると、基本的なモデルマージを簡単に実行できます。以下の例では、構造が同一である2つのモデルのステート辞書を平均化する方法を示しています。
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 Platformは、エンドツーエンドのビジョンAIプロジェクトを簡単に管理するための直感的なインターフェースを提供します。






