초점 손실이 객체 감지의 클래스 불균형을 해결하는 방법, 즉 불균형한 데이터 세트의 정확도를 향상시키기 위해 어려운 예제에 집중하여 학습하는 방법을 알아보세요.
초점 손실(Focal Loss)은 주로 컴퓨터 비전 작업에서 모델 훈련 중 발생하는 극심한 클래스 불균형 문제를 해결하기 위해 사용되는 특수 목적 함수입니다. 이는 배경 예시(네거티브 샘플)의 수가 관심 대상(포지티브 샘플)을 압도적으로 초과하는 객체 탐지 시나리오에서 특히 유용합니다. 각 샘플에 할당된 페널티를 동적으로 조정함으로써, 초점 손실은 모델이 이미 높은 신뢰도로 분류할 수 있는 "쉬운" 예시(포지티브 샘플)의 가중치를 효과적으로 낮추고, 분류가 어려운 "어려운" 예시에 최적화 과정을 집중시킵니다. 이러한 표적화된 접근 방식은 수많은 쉬운 네거티브 샘플이 훈련을 압도하는 것을 방지합니다. 예시(모델이 이미 classify 수 있는)의 가중치를 효과적으로 낮추고, classify 어려운 "어려운" 예시에 최적화 과정이 집중하도록 강제합니다. 이러한 표적화된 접근 방식은 방대한 수의 쉬운 부정 예시가 훈련 신호를 압도하는 것을 방지하여, 드물지만 중요한 객체에 대한 모델의 정확도를 향상시킵니다.
많은 딥 러닝(DL) 응용 분야, 특히 원스테이지 객체 탐지기의 경우, 훈련 과정은 이미지 내 수천 개의 후보 위치를 평가하는 것을 포함합니다. 이러한 위치의 대부분은 객체를 포함하지 않으며 배경으로 쉽게 식별됩니다. 크로스 엔트로피 손실과 같은 표준 함수는 모든 오분류를 동일하게 취급합니다. 결과적으로 수천 개의 쉬운 배경 샘플에서 누적된 오류가 소수의 어려운 양성 샘플에서 발생하는 신호를 압도하여, 대다수 클래스에 편향된 모델을 생성할 수 있습니다.
초점 손실은 일반적으로 감마($\gamma$)로 표기되는 초점 매개변수를 도입하여 표준 손실 계산을 수정합니다. 정답 클래스의 확률이 증가할수록(즉, 예시가 "쉬운" 경우), 조절 계수는 손실 기여도를 거의 0에 가깝게 감소시킵니다. 반대로, 오분류되거나 불확실한 사례 ("어려운" 사례)의 경우 손실은 상당한 수준으로 유지됩니다. 이 메커니즘은 최적화 알고리즘이 모델이 이미 알고 있는 것을 단순히 검증하기보다는 실제로 개선이 필요한 사례를 기반으로 모델 가중치를 업데이트하도록 보장합니다.
불균형 데이터셋을 처리하는 능력 덕분에 포컬 로스는 안전이 매우 중요하고 정밀도가 높은 분야의 현대적 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}")
초점 손실이 오류 측정의 광범위한 영역에서 어떻게 자리매김하는지 이해하는 것은 올바른 훈련 전략을 선택하는 데 도움이 됩니다.
