Focal Loss
Odak kaybı, kolay örneklerin etkisini neredeyse sıfırlarken nadir ve zor örneklerin eğitimi belirlemesini sağlayacak şekilde çapraz entropiyi ölçekler. Formül, gamma, RetinaNet ve çeşitleri ele alınır.
Odak kaybı, modelin zaten iyi sınıflandırdığı örneklerin ağırlığını azaltan ve böylece eğitimin zor, yanlış sınıflandırılmış örneklere odaklanmasını sağlayan, değiştirilmiş bir çapraz entropi kayıp fonksiyonudur. Lin ve arkadaşları bu yöntemi 2017'de RetinaNet dedektörüyle birlikte, nesne tespitindeki arka plan ile nesneler arasındaki aşırı dengesizliği ele almak için Yoğun Nesne Tespiti için Odak Kaybı makalesinde tanıttı. Günümüzde bir sınıfın diğerlerinden çok daha fazla olduğu sınıflandırma problemlerinde yaygın olarak kullanılır.
Dengesizlik Problemi#
Tek aşamalı nesne dedektörleri, görüntüdeki her aday konumu sınıflandırır ve RetinaNet görüntü başına yaklaşık 100.000 konumu değerlendirir. Bu konumların neredeyse tamamı, modelin eğitimin başlarında reddetmeyi öğrendiği arka plan bölgeleridir. Standart çapraz entropi altında, kolay her negatif örnek yine de az miktarda kayba katkı sağlar; bu örneklerin çokluğu toplam kayba ve gradyanlara baskın çıkarak nesne içeren az sayıdaki konumun etkisini bastırır. İki aşamalı nesne dedektörleri, bölge önerme aşamasıyla adayları filtreleyip ön plan ile arka plan arasında sabit bir oranla örnekleme yaparak bu sorunu önler. Önceki tek aşamalı dedektörler ise zor negatif örnek madenciliğine dayanıyordu. Odak kaybı, dengesizliği doğrudan kayıp fonksiyonunun içinde giderir; böylece örnekleme yapmadan her adayla eğitim yapılabilir.
Odak Kaybı Nasıl Çalışır#
Modelin doğru sınıfa atadığı olasılık için p_t yaz. Çapraz entropi CE = -log(p_t) şeklindedir ve odak kaybı bunu bir düzenleyici faktörle çarpar:
FL = -α_t (1 - p_t)^γ log(p_t)
- Odaklanma parametresi
γ(gamma): Kolay örneklerin kaybının ne hızla küçüleceğini belirler.γ = 0değerinde odak kaybı çapraz entropiye eşittir.p_t1'e yaklaştıkça(1 - p_t)^γ0'a yaklaşır; düşükp_tdeğerine sahip yanlış sınıflandırılmış bir örnek ise çapraz entropi kaybının neredeyse tamamını korur. Makaledeki en iyiγ = 2ayarıyla,p_t = 0.9ile sınıflandırılan bir örneğin kaybı çapraz entropiye göre 100 kat daha az olur. - Dengeleme ağırlığı
α_t(alfa): Pozitif sınıf için sabit bir ağırlık, negatif sınıf içinse bunun tümleyeni. RetinaNetα = 0.25değeriniγ = 2ile kullanır; makalede ayrıca her görüntünün toplam kaybı nesnelere atanmış bağlantı noktalarının sayısına göre normalleştirilir.
Torchvision içindeki sigmoid_focal_loss fonksiyonu formülü uygular. alpha=-1 ayarı dengeleme ağırlığını devre dışı bırakır ve böylece γ değerinin kolay, orta zorlukta ve zor bir pozitif örnek üzerindeki etkisini tek başına görmeni sağlar:
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")Odak kaybı, kolay örneğin kaybını (p = 0.98) yaklaşık 3.091 kat, orta zorluktaki örneğin kaybını (p = 0.73) 13.8 kat ve zor örneğin kaybını (p = 0.12) yalnızca 1.3 kat azaltır; böylece zor örnek artık eğitim sinyalinin neredeyse tamamını taşır.
Odak Kaybının Kullanım Alanları#
RetinaNet'in yanı sıra odak kaybı ve türevleri, Deformable DETR gibi DETR ailesinden modeller de dâhil olmak üzere birçok yoğun ve Transformer tabanlı dedektörün sınıflandırma dalını eğitir. Tıbbi görüntü analizinde lezyonlar genellikle piksellerin çok küçük bir bölümünü kaplar; bu nedenle görüntü segmentasyonu modelleri küçük bulguların göz ardı edilmesini önlemek ve duyarlılığı artırmak için odak kaybını sıklıkla Dice kaybıyla birlikte kullanır. Ultralytics içinde RT-DETR eğiticisi sınıfları Varifocal Loss ile puanlar ve ultralytics.utils.loss modülü, varsayılanları gamma=1.5 ve alpha=0.25 olan bir FocalLoss sınıfı sağlar.
Odak Kaybı ve İlişkili Teknikler#
- Sınıf ağırlıklandırma: Ağırlıklı çapraz entropi, nadir bir sınıftaki her örneğe sınıf sıklığına göre aynı sabit artışı verir. Odak kaybı her örneği o anki zorluğuna göre ağırlıklandırır; bu nedenle model öğrendikçe ağırlıklar değişir.
- Zor negatif örnek madenciliği: Yalnızca kaybı en yüksek negatif örnekleri tutar ve geri kalanları eler. Odak kaybı ise tüm örnekleri tutar ve kolay olanların ağırlığını kademeli olarak azaltır.
- Varifocal Loss: VarifocalNet'ten gelen bu asimetrik varyant yalnızca negatiflerin ağırlığını azaltır ve pozitifleri IoU farkındalıklı bir puana doğru eğitir; böylece sınıf güveni konumlandırma kalitesini de yansıtır.
- Dağılım Odak Kaybı (DFL): Genelleştirilmiş Odak Kaybı yönteminden gelen bir kutu regresyon kaybıdır ve her kutu kenarını ayrık bir olasılık dağılımı olarak ele alır. Adı dışında odak kaybıyla ortak yanı yoktur ve kutu regresyonuna uygulanır.










