🎶 어떤 Loss를 사용하면 좋을까? + Combined loss 사용하기 (AIStages 게시판)

  • 7강
    • 1등 솔루션 (Dice Focal loss)
    • 2등 솔루션 (Dice TopK loss)

https://pytorch.org/docs/main/nn.html#loss-functions : pytorch 에서 사용 가능한 loss func document

loss.py 를 새로 만들어서 config에서 정한 loss 함수를 불러와서 진행

1. BCE loss

  • sigmoid + binary cross entropy 합친 베이스라인 loss
  • 이진 분류 문제에 주로 사용
  • parameter
    • weight : 각 클래스에 대한 가중치 설정 → 불균형 클래스 문제를 완화 (default=None)
    • pos_weight : 양성 클래스의 중요도를 조정 (default=None)
    • reduction : ‘mean’, ‘sum’, ‘none’ 손실값 반환하는 방식 (default=’mean’)
      • mean : 전체 샘플 손실의 평균
      • sum : 전체 샘플 손실의 합
      • none : 각 샘플의 손실 값을 반환

2. Focal loss

  • cross entropy의 클래스 불균형 문제의 개선된 버전
  • 어렵거나 쉽게 오분류되는 케이스에 대하여 더 큰 가중치를 주는 방법 (쉬운 케이스의 경우 낮은 가중치)
  • parameter
    • alpha : 양성 클래스에 대한 가중치 (보통 0.25)
    • gamma : 쉽게 분류되는 케이스의 가중치를 낮추는 정도 (보통 2.0)

3. Dice loss

  • 영역 기반의 손실함수로, 예측과 정답 사이의 겹침 정도를 측정
  • 작은 구조를 잘 검출, 클래스 불균형 문제를 잘 처
  • dice_loss = 1 - dice_coef
  • parameter
    • smooth : 분모가 0이 되는 것을 방지 (보통 1.0)

4. Iou loss

  • iou_loss = 1 - iou_value
  • parameter
    • smooth : 분모가 0이 되는 것을 방지 (보통 1.0)

Dice loss vs Iou loss

  • Dice = 2TP / (2TP+FP+FN) = recall
  • Iou = TP/(TP+FP+FN)

Dice 값이 Iou 보다 TP 에 더 가중치를 둠

→ 겹친 영역을 더 중요하게 여김

실제로 의료영역에서 생각해보면 병변을 올바르게 찾는 것에 더 가중치를 두는 것이 목적

 

'AI Tech 7기' 카테고리의 다른 글

object detection에서 train_cfg 설정  (0) 2024.10.16
NMS, SoftNMS  (0) 2024.10.16
coco format 파악하기 (pycocotools)  (0) 2024.10.09
sweetpotato7