Yolo 深圳
深セン
今すぐ参加
用語集

焦点損失

Focal Lossが物体検出におけるクラスの不均衡にどのように対処しているかをご覧ください。

フォーカルロス(Focal Loss)は、主にコンピュータビジョンタスクにおいて、モデル訓練中の極端なクラス不均衡という課題に対処するために用いられる特殊な目的関数である。これは特に、背景例(ネガティブサンプル)の数が対象物(ポジティブサンプル)を大幅に上回る物体検出シナリオにおいて有用である。各サンプルに割り当てられるペナルティを動的にスケーリングすることで、フォーカルロスは「容易な」例(モデルが既に高い信頼度で分類可能な例)の重みを効果的に減らし、分類が困難な「難しい」例に最適化プロセスを集中させる。この標的型アプローチにより、膨大な数の容易なネガティブ例が学習プロセスを圧倒するのを防ぎ、モデルが学習する例を「難しい」例に限定する。 例(モデルが既に高いclassify もの)の重みを効果的に減らし、classify困難な「難しい」例に最適化プロセスを集中させる。この標的を絞ったアプローチにより、膨大な数の容易な否定的例が学習信号を圧倒するのを防ぎ、希少だが重要な対象物に対するモデルの精度を向上させる。

クラス不均衡問題の解決

多くの深層学習(DL)アプリケーション、 特にワンステージ物体検出器では、 トレーニング過程において画像内の数千もの候補位置を評価する。これらの位置の大半は 物体を包含せず、背景として容易に識別される。クロスエントロピー損失などの標準関数は 全ての誤分類を同等に扱う。 その結果、数千もの容易な背景サンプルから生じる累積誤差が、 少数の困難な陽性サンプルからの信号を押し流す可能性があり、 多数クラスに偏ったモデルが生成される。

焦点損失は、焦点化パラメータ(通常はガンマ$ \gamma$ で表される)を導入することで標準的な損失計算を修正する。正しいクラスの確率が増加する(つまり例が「容易」である)につれて、調整係数が損失寄与をほぼゼロまで減少させる。 逆に、誤分類または不確実な例(「難しい」ケース)では、損失は依然として大きく残る。この仕組みにより、最適化アルゴリズムは、モデルが既に知っていることを単に検証するのではなく、実際に改善が必要な例に基づいてモデル重みを更新することが保証される。

実際のアプリケーション

不均衡データセットを処理する能力により、フォーカルロス損失は安全性が極めて重要で高精度が求められる分野における現代のAIソリューションの基盤となっている。

  • 医療診断: 医療画像解析において、病変の特定はしばしば「藁の山から針を探す」問題となる。例えばCTスキャンで微小病変を検出する場合、画像の99%は正常組織で占められる。 標準的な損失関数は、全てのピクセルを単純に「正常」と推測するだけで高い精度を達成する可能性がある。フォーカルロスを実装することで、医療AIに用いられるモデルは豊富な正常組織を無視し、腫瘍や骨折といった稀で微妙な特徴の学習に集中できる。これにより、命を救う検出における再現率が大幅に向上する。
  • 自動運転: 自動運転車を支えるシステムは、 道路や建物、空を背景にdetect 自転車、 障害物をdetect しなければならない。 背景の認識は容易だが、小さく 遠くにある障害物の検知は困難である。焦点損失(Focal Loss)により、知覚システムはこうしたdetect 優先的に処理し、 たとえ視界のごく一部を占めるだけの危険物でも車両が見逃さないことを保証する。 これは堅牢な歩行者検知と 総合的な安全性に不可欠である。

Ultralytics実装

について 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}")

関連概念との区別

焦点損失が誤差測定のより広範な枠組みの中でどのように位置づけられるかを理解することは、適切な学習戦略を選択する上で有用である。

  • 焦点損失と交差エントロピー損失: 交差エントロピー損失は 分類の基礎となる指標であり、対数誤差に基づいて予測をペナルティ化する。焦点損失は 厳密には交差エントロピーの拡張である。焦点パラメータをゼロに設定すると、焦点損失は数学的に 標準的な交差エントロピーに戻る。主な違いは、焦点損失が容易な否定例を軽視する能力にある。
  • 焦点損失対IoU :焦点損失は分類(物体が何かを判定)向けに設計されている一方、 交差率(IoU) は位置特定(物体がどこにあるかを判定)に使用される。YOLO11などの現代的な検出器では YOLO11 やYOLO26などの現代的な検出器は、クラス確率に対して焦点損失(または可変焦点損失などの変種)を、 バウンディングボックス回帰IoU損失を組み合わせた複合損失関数を利用している。
  • 焦点損失対OHEM: オンライン困難例採掘(OHEM)は古い戦略であり、 容易な例を完全に破棄し、バッチ内の最も困難な例のみで学習する。焦点損失は今日一般的に好まれる 理由は、厳格なカットオフではなく連続的なスケーリング係数を用いるためであり、全学習データからより滑らかで安定した 学習信号を提供するからである。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加