Focal Lossが物体検出におけるクラスの不均衡にどのように対処しているかをご覧ください。
フォーカルロス(Focal Loss)は、主にコンピュータビジョンタスクにおいて、モデル訓練中の極端なクラス不均衡という課題に対処するために用いられる特殊な目的関数である。これは特に、背景例(ネガティブサンプル)の数が対象物(ポジティブサンプル)を大幅に上回る物体検出シナリオにおいて有用である。各サンプルに割り当てられるペナルティを動的にスケーリングすることで、フォーカルロスは「容易な」例(モデルが既に高い信頼度で分類可能な例)の重みを効果的に減らし、分類が困難な「難しい」例に最適化プロセスを集中させる。この標的型アプローチにより、膨大な数の容易なネガティブ例が学習プロセスを圧倒するのを防ぎ、モデルが学習する例を「難しい」例に限定する。 例(モデルが既に高いclassify もの)の重みを効果的に減らし、classify困難な「難しい」例に最適化プロセスを集中させる。この標的を絞ったアプローチにより、膨大な数の容易な否定的例が学習信号を圧倒するのを防ぎ、希少だが重要な対象物に対するモデルの精度を向上させる。
多くの深層学習(DL)アプリケーション、 特にワンステージ物体検出器では、 トレーニング過程において画像内の数千もの候補位置を評価する。これらの位置の大半は 物体を包含せず、背景として容易に識別される。クロスエントロピー損失などの標準関数は 全ての誤分類を同等に扱う。 その結果、数千もの容易な背景サンプルから生じる累積誤差が、 少数の困難な陽性サンプルからの信号を押し流す可能性があり、 多数クラスに偏ったモデルが生成される。
焦点損失は、焦点化パラメータ(通常はガンマ$ \gamma$ で表される)を導入することで標準的な損失計算を修正する。正しいクラスの確率が増加する(つまり例が「容易」である)につれて、調整係数が損失寄与をほぼゼロまで減少させる。 逆に、誤分類または不確実な例(「難しい」ケース)では、損失は依然として大きく残る。この仕組みにより、最適化アルゴリズムは、モデルが既に知っていることを単に検証するのではなく、実際に改善が必要な例に基づいてモデル重みを更新することが保証される。
不均衡データセットを処理する能力により、フォーカルロス損失は安全性が極めて重要で高精度が求められる分野における現代のAIソリューションの基盤となっている。
について ultralytics ライブラリには、最先端モデル(例:)のトレーニングをサポートする損失関数の最適化された実装が含まれています。 YOLO26一方、高レベルのトレーニングは Ultralytics開発者はカスタムパイプライン向けに特定の損失コンポーネントにアクセスできます。
以下の例は、Focal Lossを初期化し、予測スコアとターゲットラベル間の誤差を計算する方法を示しています。 ultralytics ユーティリティパッケージ。
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss with a standard gamma value
# Gamma=1.5 aggressively down-weights easy examples
criterion = FocalLoss(gamma=1.5)
# Example: Predictions (logits) and binary Ground Truth labels
predictions = torch.tensor([[0.8], [-1.5], [0.1]], requires_grad=True)
targets = torch.tensor([[1.0], [0.0], [1.0]])
# Calculate the loss
loss = criterion(predictions, targets)
print(f"Computed Focal Loss: {loss.item():.4f}")
焦点損失が誤差測定のより広範な枠組みの中でどのように位置づけられるかを理解することは、適切な学習戦略を選択する上で有用である。
.webp)
