Model Soupsが、YOLO 重みを平均化することで、精度と堅牢性をどのように向上させるかをご紹介します。レイテンシを増やすことなくパフォーマンスを向上させる方法を学びましょう。
「モデルスープ」とは、同じ事前学習済みベースモデルから異なるハイパーパラメータを用いて微調整された複数のニューラルネットワークの重みを平均化し、より堅牢な単一のモデルを構築する機械学習の手法を指します。このアプローチにより、開発者は推論時の計算コストを増やすことなく、全体的な精度と汎化性能を向上させることができます。
モデルの微調整を行う際、実務者は通常、 ハイパーパラメータの広範囲なチューニングスイープを実行し、 最もパフォーマンスの高い設定を見つけ出します。 従来は、最も優れた単一のモデルが選択され、残りは破棄されてきました。しかし、 「モデルスープ」を作成することで、チューニングスイープ中のすべてのモデルが学習した多様な特徴を活用できます。それらのモデル重みを直接 平均化することで、結果として得られるネットワークは 多くの場合、単一の最良モデルよりも優れた性能を発揮し、各モデルの強みを効果的に組み合わせつつ、 過学習を最小限に抑えます。このプロセスは非常に効率的であり、 Ultralytics コラボレーション環境内で容易に管理することができます。
モデルスープは、計算リソースが限られているものの、高い精度と 頑健性が求められる状況において、非常に有効である。
ディープラーニングの最適化という分野を理解するためには、 「モデルスープ」と類似した手法とを区別することが重要です:
統一されたモデルスープを作成するには、 複数の学習済みモデルの PyTorch 辞書にアクセスし、それらのテンソルを数学的に平均化する必要があります。以下に、PyTorch ネイティブにサポートUltralytics ワークフローを使用して、 これを実現する簡潔な例を示します。
import torch
# Load the PyTorch state dictionaries from two fine-tuned YOLO26 models
model1 = torch.load("yolo26_run1.pt")["model"].state_dict()
model2 = torch.load("yolo26_run2.pt")["model"].state_dict()
# Create a uniform model soup by averaging the model weights
soup_dict = {key: (model1[key] + model2[key]) / 2.0 for key in model1.keys()}
# The resulting soup_dict can now be loaded into a new YOLO26 instance
この手法を活用することで、コンピュータビジョンの実務者は、現代のエッジファースト型AIアーキテクチャに求められる展開速度を損なうことなく、 ゼロショット学習能力や全般的な 堅牢性といった性能指標を容易に向上させることができます。
未来の機械学習で、新たな一歩を踏み出しましょう。