Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Model Ensemble

モデルアンサンブルは、複数のモデルの予測を組み合わせ、より高精度で堅牢な1つの出力を生成します。投票、平均化、ボックス融合、トレードオフを解説します。

モデルアンサンブルは、複数の学習済みモデルの予測を、投票、平均、または学習済みの組み合わせによって1つの出力に統合し、個々のモデルの誤りを相殺する手法です。構成モデルの間で誤りが異なれば、アンサンブルは最良の構成モデルよりも高精度で頑健になります。そのため、アンサンブルは機械学習のコンペティションで広く使われています。Netflix Prizeでは、2009年に多数のモデルの予測を組み合わせたチームが優勝しました。また、2012年のImageNetチャレンジで優勝したディープラーニングのエントリーは、7つの畳み込みネットワークの予測を平均し、top-5エラー率15.3%を達成しました。代償は計算コストです。すべての入力に対して各構成モデルを実行するため、アンサンブルの規模が大きいほどメモリ使用量と推論レイテンシが増加します。

モデルアンサンブルの仕組み#

アンサンブルの効果が得られるのは、構成モデルが異なる誤りをする場合に限られます。誤差が独立したモデルの出力を平均すると、予測を組み合わせたときの分散は小さくなります。一方、同じ入力で誤るモデル同士を組み合わせても、効果はほとんどありません。バギングでは、ランダムフォレストの決定木のように、学習データをランダムに再サンプリングして各モデルを学習することで多様性を生み出します。ブースティングでは、XGBoostやLightGBMのように、新しいモデルが前のモデルの誤りを修正するよう学習します。ディープアンサンブルでは、1つのニューラルネットワークを異なる乱数シードで複製して学習し、予測のばらつきからモデルの不確実性も測定できます。畳み込みニューラルネットワークとビジョントランスフォーマーのように異なるアーキテクチャを組み合わせると、帰納バイアスが異なるモデルがそろい、誤差の相関を低くできます。

組み合わせ方法は、構成モデルの出力形式によって異なります。

枝刈りしていない決定木など、分散の高いモデルは特に効果を得られます。このscikit-learnの例では、乱数シードだけが異なる5つの決定木を学習し、予測確率を平均します。

import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)

# Five decision trees that differ only in their random seed, which changes the features each split considers
trees = [DecisionTreeClassifier(max_features="sqrt", random_state=seed) for seed in range(5)]
for tree in trees:
    tree.fit(X_train, y_train)
print("Single trees:", ", ".join(f"{tree.score(X_test, y_test):.3f}" for tree in trees))

# Ensemble: average the predicted class probabilities and pick the most likely class
probabilities = np.mean([tree.predict_proba(X_test) for tree in trees], axis=0)
accuracy = (probabilities.argmax(axis=1) == y_test).mean()
print(f"Ensemble of 5: {accuracy:.3f}")

ホールドアウトした899枚の数字画像では、単独の決定木のスコアは0.736から0.805の範囲ですが、5つすべてを組み合わせたアンサンブルは0.901で、どの構成モデルよりも高くなります。これは、各決定木が異なる画像で誤るためです。

物体検出器のアンサンブル#

物体検出のアンサンブルでは、複数のモデルが同じ物体を少しずつ異なる位置で検出するため、ボックスも統合する必要があります。最も単純な方法は、各モデルのボックスをまとめて非極大値抑制 (NMS)を適用し、重なり合う各グループの中で最も信頼度が高いボックスを残すことです。重み付きボックス融合では、信頼度で重み付けして重複するボックスの座標を平均し、すべてのモデルの予測を最終位置に反映します。Ultralytics YOLO26では、予測時に関連するアンサンブル機能を組み込んでいます。augment=Trueを指定すると、検出器は画像を元のサイズ、83%、67%の各スケールで処理し、83%の画像は左右反転します。その後、3組のボックスをNMSで統合します。この例では、サイズの異なる2つのYOLO26モデルを同じ方法でアンサンブルします。

import torch
from torchvision.ops import batched_nms
from ultralytics import YOLO

# Two YOLO26 models of different sizes make different mistakes
models = [YOLO("yolo26n.pt"), YOLO("yolo26s.pt")]
results = [model("https://ultralytics.com/images/bus.jpg")[0] for model in models]

# Pool the boxes from both models
boxes = torch.cat([result.boxes.xyxy for result in results])
scores = torch.cat([result.boxes.conf for result in results])
classes = torch.cat([result.boxes.cls for result in results])

# Keep the highest-scoring box in each overlapping group of the same class
keep = batched_nms(boxes, scores, classes, iou_threshold=0.5)
print(f"{len(boxes)} boxes from both models, {len(keep)} after fusion")

両方のモデルが検出したボックスは1つに統合され、一方のモデルだけが検出した物体は統合後も残ります。これによって検出アンサンブルの再現率が向上します。

用途#

  • 医用画像解析:診断モデルでは複数のネットワークを組み合わせて感度を高め、構成モデル間の判定の不一致を、放射線科医が確認すべき症例の特定に利用します。
  • コンペティションとベンチマーク:Kaggleなどのリーダーボードで優勝するソリューションでは、異なるアーキテクチャ、乱数シード、データ分割で学習したモデルの予測を平均することが一般的です。精度向上が追加の計算コストを上回るためです。
  • 自動運転車:認識システムでは、カメラベースの検出器とLiDARベースの検出器など、それぞれ異なる強みを持つモデルを組み合わせます。一方が見逃した物体を、もう一方が検出できる可能性があります。
  • アンサンブル学習:手法全体を指す同義語です。「モデルアンサンブル」は通常、組み合わせて得られるモデルの集合を指します。
  • モデルマージ:互換性のあるモデルの重みを平均して1つのネットワークに統合し、単一モデルと同等の計算コストで実行できるようにします。
  • Mixture of Experts (MoE):学習されたルーターが各入力を少数の専門サブネットワークに振り分けるため、すべての入力で全専門家を実行せずにモデルの容量を増やせます。
  • 知識蒸留:単一の生徒モデルを学習させ、教師モデル(アンサンブル全体の場合もあります)を模倣させます。Geoffrey Hinton、Oriol Vinyals、Jeff Deanが2015年に発表した蒸留論文では、音声認識モデルのアンサンブルを単一モデルに圧縮し、アンサンブルの性能向上の大部分を維持しました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう