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

Focal Loss

Focal Lossは、簡単なサンプルの寄与をほとんどなくし、希少で難しいサンプルが学習を主導するようにクロスエントロピーを調整します。計算式、ガンマ、RetinaNet、派生手法について解説します。

Focal lossは、モデルがすでにうまく分類できるサンプルの重みを下げ、学習が難しい誤分類サンプルに集中するようにした、修正版の損失関数です。Linらは2017年の論文Focal Loss for Dense Object DetectionでRetinaNet検出器とともにこの手法を発表し、物体検出における背景と物体の極端な不均衡に対処しました。現在では、あるクラスのサンプル数が他のクラスを大幅に上回る分類問題で広く使用されています。

不均衡の問題#

1段階物体検出器は、画像内のすべての候補位置を分類します。RetinaNetでは、画像ごとに約100,000箇所を評価します。そのほとんどは背景であり、モデルは学習の初期段階で背景を棄却するようになります。標準的なクロスエントロピーでは、簡単な負例もそれぞれ小さな損失を加えます。負例の数が非常に多いため、合計損失とその勾配を支配し、物体を含むわずかな位置からの信号をかき消します。2段階物体検出器は、領域提案段階で候補を絞り、前景と背景を一定の比率でサンプリングすることでこれを回避します。従来の1段階検出器はハードネガティブマイニングに依存していました。Focal lossは損失関数自体で不均衡を補正するため、サンプリングせずにすべての候補を学習に使用できます。

Focal lossの仕組み#

モデルが正解クラスに割り当てる確率をp_tとします。クロスエントロピーはCE = -log(p_t)であり、focal lossはこれに変調係数を乗算します。

FL = -α_t (1 - p_t)^γ log(p_t)

  • フォーカシングパラメーターγ (gamma): 簡単なサンプルの損失が減少する速さを制御します。γ = 0の場合、focal lossはクロスエントロピーと等しくなります。p_tが1に近づくと、(1 - p_t)^γは0に近づきます。一方、p_tが小さい誤分類サンプルでは、クロスエントロピー損失のほぼ全量が維持されます。論文で最良とされた設定γ = 2では、p_t = 0.9と分類されたサンプルの損失は、クロスエントロピーの場合より100分の1になります。
  • バランス重みα_t (alpha): 正例には固定の重みを、負例にはその補数を適用します。RetinaNetはα = 0.25とγ = 2を使用します。また論文では、物体に割り当てられたアンカーの数で各画像の合計損失を正規化しています。

torchvisionのsigmoid_focal_loss関数は、この式を実装しています。alpha=-1を設定するとバランス重みが無効になり、簡単・中程度・難しい正例に対するγの効果だけを比較できます。

import torch
import torch.nn.functional as F
from torchvision.ops import sigmoid_focal_loss

# Logits for three positive examples: easy, moderate, and hard
logits = torch.tensor([4.0, 1.0, -2.0])
targets = torch.ones(3)

# alpha=-1 turns off class weighting so only the gamma focusing term differs
bce = F.binary_cross_entropy_with_logits(logits, targets, reduction="none")
focal = sigmoid_focal_loss(logits, targets, alpha=-1, gamma=2.0, reduction="none")

for p, b, f in zip(logits.sigmoid(), bce, focal):
    print(f"p={p:.2f}  cross-entropy={b:.6f}  focal={f:.6f}  ratio={b / f:,.1f}x")

Focal lossは、簡単なサンプルの損失 (p = 0.98) を約3,091分の1、中程度のサンプル (p = 0.73) を13.8分の1、難しいサンプル (p = 0.12) をわずか1.3分の1に縮小します。そのため、難しいサンプルが学習信号のほぼすべてを占めるようになります。

Focal lossの用途#

RetinaNetに加えて、focal lossとその派生手法は、多くの高密度検出器やTransformerベースの検出器の分類ブランチの学習に使われます。これにはDeformable DETRなどのDETR系モデルも含まれます。医用画像解析では、病変が画像のごく一部しか占めないことが多いため、画像セグメンテーションモデルでは、微小な所見が無視されないよう、また再現率を高めるために、focal lossとDice lossを組み合わせることが一般的です。Ultralyticsでは、RT-DETRトレーナーがVarifocal Lossでクラスをスコア化し、ultralytics.utils.lossモジュールは、デフォルト値がgamma=1.5とalpha=0.25のFocalLossクラスを提供します。

  • クラス重み付け: 重み付きクロスエントロピーは、クラス頻度に基づいて、希少クラスのすべてのサンプルに同じ固定の重みを加えます。focal lossは、各サンプルの現在の難しさに応じて重み付けするため、モデルの学習に伴って重みが変化します。
  • ハードネガティブマイニング: 損失が最も大きい負例だけを残し、その他を破棄します。focal lossはすべてのサンプルを維持し、簡単なサンプルの重みを滑らかに縮小します。
  • Varifocal Loss: VarifocalNetで提案された非対称な手法で、負例の重みだけを下げ、正例はIoUを考慮したスコアに近づくよう学習します。そのため、クラスの信頼度にも位置特定の品質が反映されます。
  • Distribution Focal Loss (DFL): Generalized Focal Lossに由来するボックス回帰損失で、各ボックスの辺を離散確率分布として扱います。focal lossとは名称だけが共通しており、ボックス回帰に適用されます。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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