본문 바로가기
Computer Vision/CV (Computer Vision)

Vision Metrics

by AteN 2023. 7. 13.

비전 평가 지표, 같은 "mAP"라도 같은 숫자가 아니다

요약

  • 비전에서는 "맞았다 틀렸다"만으로 부족합니다. 클래스뿐 아니라 위치까지 맞아야 하기 때문입니다. 그래서 얼마나 잘 겹쳤나(IoU)를 기준으로 검출과 분할 지표 전부가 세워집니다.
  • 가장 흔한 착시가 여기 있습니다. VOC식 mAP@0.5와 COCO식 AP@[.5:.95]는 척도가 다른 지표입니다. COCO가 더 엄격해 같은 모델이라도 숫자가 낮게 나옵니다. 두 논문의 "mAP"를 나란히 놓으면 틀린 비교입니다.
  • 과제마다 지표가 정해져 있습니다. 분류는 Top-1과 Top-5, 검출은 COCO AP, 시맨틱 분할은 mIoU, 파놉틱 분할은 PQ, 전경 분리는 MAE와 F-measure 계열, 복원과 생성은 PSNR, SSIM, LPIPS, FID입니다.
  • 알고 나면 허탈한 사실 하나. 이 지표들은 대부분 고전 지표의 비전 버전입니다. IoU는 Jaccard 지수 그대로고, mAP는 정보검색의 AP를 클래스별로 평균한 것이고, PQ 안의 RQ는 F1 점수이고, Dice는 F1을 픽셀에 적용한 것입니다.
  • 지표는 현실을 한 숫자로 압축하므로 반드시 무언가를 버립니다. AP50은 위치 오차를 숨기고, 픽셀 정확도는 다수 클래스에 지배당하고, PQ는 근접 실패를 이중 처벌하고, PSNR은 블러를 관대하게 봅니다.

1장. 왜 정확도로는 부족한가

1.1 과제마다 정답의 모양이 다르다

분류      이미지가 무엇인지            정답은 라벨 하나
검출      무엇이 어디에 있는지          정답은 클래스 + 바운딩 박스
분할      픽셀 단위로 어디까지인지      정답은 픽셀 마스크
복원      원본에 얼마나 가까운지        정답은 원본 이미지
생성      그럴듯한지                   정답 이미지가 없다

정답의 모양이 다르면 채점 방식도 달라져야 합니다.

1.2 위치까지 맞아야 한다

분류라면 "고양이 맞음 틀림" 으로 끝난다

검출은 다르다
   "고양이를 찾았다" 가 맞아도
   박스가 엉뚱한 곳에 그려졌으면 틀린 검출이다

   그래서 위치가 얼마나 겹치는지를 재는 지표가 먼저 필요하다

1.3 검출에는 TN이 없다

분류 지표를 그대로 옮겨오지 못하는 근본 이유입니다.

분류에서는 네 칸이 다 채워진다
   TP, FP, TN, FN

검출에서는 TN 을 셀 수가 없다
   "객체가 없는 위치" 는 사실상 무한히 많다
   배경 박스를 하나하나 세는 건 의미가 없다

   그래서 정확도(accuracy)를 쓸 수 없고
   TN 이 안 들어가는 정밀도와 재현율로 간다

이 제약이 검출과 분할 지표 전체의 모양을 결정합니다.


2장. IoU, 모든 것의 뿌리

2.1 정의

예측 영역과 정답 영역의 교집합을 합집합으로 나눈 값입니다. 통계학의 Jaccard 지수와 같은 것으로, 0에서 1 사이입니다.

IoU = area(예측 ∩ 정답) / area(예측 ∪ 정답)

2.2 왜 하필 합집합으로 나누나

이걸 이해하면 지표 설계의 감각이 생깁니다.

교집합만 보면
   박스를 크게 그릴수록 정답과 많이 겹쳐서 유리해진다
   극단적으로는 이미지 전체를 박스로 그리면 항상 만점

분모에 합집합을 넣으면
   과하게 큰 박스는 합집합이 커져 페널티를 받는다

   "겹친 만큼 좋고, 헛되이 넓은 만큼 나쁘다" 를 한 숫자로 담는다

2.3 직접 계산해 보기

x축 y축 넓이
정답 박스 0에서 10 0에서 10 100
예측 박스 2에서 12 0에서 10 100
교집합 2에서 10 (폭 8) 0에서 10 (높이 10) 80
합집합 = 100 + 100 - 80 = 120
IoU   = 80 / 120 = 약 0.667

2.4 임계값 하나가 판정을 뒤집는다

같은 예측인데 기준에 따라 정답도 오답도 됩니다.

임계값 0.5 기준    0.667 >= 0.5 이므로 정답 (TP)
임계값 0.75 기준   0.667 < 0.75 이므로 오답 (FP)

IoU 임계값이 얼마나 중요한지가 여기서 바로 드러납니다. 그리고 이게 4장의 착시로 이어집니다.

2.5 Dice와의 관계

분할 쪽에서 자주 보는 Dice 계수는 IoU와 서로 변환되는 관계입니다.

Dice = 2 x area(예측 ∩ 정답) / ( area(예측) + area(정답) )

   |A| + |B| = |A ∪ B| + |A ∩ B| 이므로

Dice = 2 x IoU / (1 + IoU)
IoU  = Dice / (2 - Dice)

둘은 같은 순서를 매깁니다. 하나가 크면 다른 것도 큽니다. 다만 Dice가 항상 IoU보다 크거나 같습니다.

IoU 0.5  ──►  Dice 0.667
IoU 0.8  ──►  Dice 0.889

   같은 모델을 Dice 로 보고하면 숫자가 더 좋아 보인다
   어느 쪽으로 보고했는지 확인해야 하는 이유다

Dice는 F1 점수를 픽셀 집합에 적용한 것과 정확히 같은 식입니다. 의료 영상 분할에서 Dice를, 일반 시맨틱 분할에서 IoU를 쓰는 관행 차이일 뿐 본질은 하나입니다.


3장. 정밀도, 재현율, PR 곡선

3.1 TP, FP, FN

TP   정답 객체를 제대로 잡은 예측
FP   헛것을 잡은 예측 (객체가 없거나, 위치가 어긋났거나, 중복이거나)
FN   정답 객체인데 아무도 못 잡은 것

   검출에는 TN 이 없다 (1.3)

3.2 정밀도와 재현율

정밀도 (Precision) = TP / (TP + FP)
   "내가 잡았다고 한 것 중 실제로 맞은 비율"
   헛것을 얼마나 안 만들었나

재현율 (Recall) = TP / (TP + FN)
   "실제 있는 것 중 내가 잡은 비율"
   얼마나 빠뜨리지 않았나

둘은 서로 당깁니다.

확신 있는 것만 내놓으면
   정밀도가 오르고 재현율이 떨어진다

의심스러운 것까지 다 내놓으면
   재현율이 오르고 정밀도가 떨어진다

3.3 신뢰도 임계값을 쓸어내리면 곡선이 된다

여기가 AP의 출발점입니다.

검출 모델은 각 예측에 신뢰도 점수를 붙인다

   "0.9 이상만 채택" ──► 예측 수가 적다. 정밀도 높고 재현율 낮다
   "0.1 이상도 채택" ──► 예측 수가 많다. 재현율 높고 정밀도 낮다

   임계값을 1 에서 0 으로 쓸어내리면서
   (재현율, 정밀도) 점을 찍으면 곡선이 된다

   이게 PR 곡선이다
정밀도
 1.0
 │
 │ ●●●
 │     ●●●
 │         ●●
 │            ●●●
 │                ●●●●
 │                     ●●●●●
 └───────────────────────────► 재현율
                            1.0

 곡선이 오른쪽 위로 볼록할수록 좋은 모델

3.4 AP는 그 곡선 아래 면적

AP (Average Precision)
   한 클래스의 PR 곡선 아래 면적

   임계값 하나에 매이지 않고
   모든 운영점을 한 숫자로 요약한다

mAP (mean Average Precision)
   전체 클래스 AP 의 평균

   mAP = (클래스별 AP 의 합) / (클래스 수)

AP는 새 개념이 아닙니다. 정보검색의 AP와 똑같은 것을 비전에 적용한 것입니다.


4장. 검출, AP와 mAP

4.1 두 단계

① IoU 로 각 예측이 TP 인지 FP 인지 가른다
   │
   ▼
② 그 결과로 PR 곡선을 그려 면적을 잰다

모든 논쟁이 ①에 있습니다. "어느 IoU 임계값에서 TP를 세느냐"에 따라 표준이 갈립니다.

4.2 매칭 규칙

여기가 직접 구현하면 반드시 틀리는 지점입니다.

① 예측을 신뢰도 높은 순으로 정렬한다
   │
   ▼
② 위에서부터 순서대로
   아직 매칭 안 된 정답 중 IoU 가 가장 큰 것과 맞춰본다
   │
   ▼
③ IoU 가 임계값 이상이면 TP, 그 정답은 소진된다
   임계값 미만이면 FP
   │
   ▼
④ 이미 소진된 정답에 또 매칭되는 예측은 FP 다
핵심이 ④ 다

   같은 객체에 박스 세 개를 그리면
   하나만 TP 이고 둘은 FP 로 처벌된다

   중복 예측을 억제하는 NMS 가 왜 필요한지가 여기서 나온다
   지표가 중복을 벌하도록 설계돼 있기 때문이다
그리고 신뢰도 순으로 처리하는 것도 의도적이다

   확신이 높은 예측이 먼저 정답을 가져간다
   낮은 확신의 예측이 좋은 정답을 선점하지 못한다

4.3 PASCAL VOC 방식

mAP@0.5

   IoU >= 0.5 면 정답. 단일 임계값이다
   2010년경 정립된 고전 기준
   지금도 "빠르게 대략 본다" 는 맥락에서 쓰인다

VOC 안에서도 곡선 면적 계산법이 한 번 바뀌었습니다.

VOC 2007      11점 보간
   재현율 0, 0.1, ..., 1.0 의 11 개 점에서
   그 재현율 이상 구간의 최대 정밀도를 취해 평균

VOC 2010 이후  전체 점 보간
   모든 재현율 변화 지점에서 면적을 적분

   같은 모델도 두 방식의 숫자가 다르다
   옛 논문 수치를 인용할 때 걸리는 함정이다

4.4 COCO 방식, 현 표준

AP@[.50:.95]

   IoU 0.50 부터 0.95 까지 0.05 간격 10 개 임계값에서
   각각 AP 를 구해 평균한다

   AP_COCO = (10 개 임계값의 AP 합) / 10

COCO는 "위치를 얼마나 정확히 그렸나"까지 점수에 넣습니다. 임계값 0.95는 거의 완벽히 겹쳐야 통과하므로, 대충 맞춘 박스로는 상위 임계값에서 점수를 못 받습니다.

4.5 실제 파라미터

pycocotools의 평가 파라미터를 직접 찍어보면 이렇습니다.

iouThrs      [0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95]
recThrs      101 개  (0.00, 0.01, ..., 1.00)
maxDets      [1, 10, 100]
areaRng      [[0, 1e10], [0, 1024], [1024, 9216], [9216, 1e10]]
areaRngLbl   ['all', 'small', 'medium', 'large']

읽는 법이 이렇습니다.

recThrs 가 101 개
   COCO 는 PR 곡선을 101 개 재현율 지점에서 샘플링해 평균한다
   VOC 2007 의 11 점 보간을 촘촘하게 만든 것이다

areaRng 의 1024 와 9216
   1024 = 32 곱하기 32
   9216 = 96 곱하기 96

   즉 넓이 기준으로
   small    32x32 미만
   medium   32x32 이상 96x96 미만
   large    96x96 이상

maxDets 가 [1, 10, 100]
   이미지당 최대 몇 개 예측까지 볼지
   기본 AP 는 100 개 기준이다
   1000 개를 뱉어도 상위 100 개만 채점된다

4.6 COCO가 함께 보고하는 숫자들

지표
AP (기본) IoU 0.5에서 0.95 평균. 위치 정밀도까지 본다
AP50 IoU 0.5 단일 임계값. 관대한 기준
AP75 IoU 0.75 단일 임계값. 엄격한 기준
APs / APm / APl 작은, 중간, 큰 객체별 AP
AR1 / AR10 / AR100 이미지당 예측 1개, 10개, 100개일 때의 평균 재현율
ARs / ARm / ARl 크기별 평균 재현율

한 줄 요약이 아니라 12개 숫자 묶음이라는 게 COCO 평가의 성격입니다.

4.7 AR을 함께 보는 이유

AP 는 정밀도 쪽 얘기가 강하다
AR 은 "얼마나 안 놓쳤나" 를 본다

   AP 는 낮은데 AR100 이 높다면
   찾기는 다 찾았는데 순위와 위치가 나쁘다는 뜻이다

   AR100 자체가 낮다면
   애초에 후보를 못 만들고 있다는 뜻이다

   고칠 곳이 완전히 다르다

4.8 무시 영역

COCO 어노테이션에는 iscrowd 플래그가 있다

   사람 무리처럼 개별로 나눌 수 없는 영역
   여기에 떨어진 예측은 FP 로 처벌하지 않고 무시한다

   이런 예외 처리가 여럿이라
   AP 를 직접 구현하면 공식 구현과 숫자가 안 맞기 쉽다

4.9 Mask AP

인스턴스 분할의 Mask AP 는 절차가 완전히 동일하다

   IoU 를 박스가 아니라 마스크 픽셀로 계산할 뿐이다

   같은 모델의 Box AP 와 Mask AP 는 보통 다르다
   박스는 맞았는데 마스크가 거친 경우가 흔하기 때문이다

5장. 분할

5.1 시맨틱 분할, mIoU

개별 객체를 구분하지 않고 픽셀마다 클래스만 맞히는 과제입니다.

클래스 c 의 IoU = TP_c / (TP_c + FP_c + FN_c)

   TP_c   정답도 c 이고 예측도 c 인 픽셀 수
   FP_c   정답은 c 가 아닌데 c 로 예측한 픽셀 수
   FN_c   정답은 c 인데 c 로 예측 안 한 픽셀 수

mIoU = 클래스별 IoU 의 평균

데이터셋 전체에 대해 혼동행렬을 한 번 쌓고 마지막에 나누는 것이 표준입니다. 이미지마다 IoU를 내서 평균하면 다른 숫자가 나옵니다. 작은 이미지 하나의 실수가 과대 반영되기 때문입니다.

5.2 픽셀 정확도가 왜 못 쓰나

픽셀 정확도 = 맞힌 픽셀 수 / 전체 픽셀 수

   화면의 대부분을 차지하는 배경에 지배당한다
   도로 장면에서 하늘과 도로만 잘 맞혀도 90% 가 나온다

   보행자나 표지판을 통째로 놓쳐도 숫자가 거의 안 움직인다
mIoU 는 클래스별로 IoU 를 낸 뒤 평균한다

   면적이 작은 클래스도 큰 클래스와 동등한 한 표를 갖는다

   분할 성능을 mIoU 로 보는 이유가 이것이다

5.3 클래스 가중을 바꾼 변형

frequency weighted IoU (FWIoU)
   클래스별 IoU 를 그 클래스의 픽셀 빈도로 가중 평균한다

   면적이 큰 클래스에 더 무게를 준다
   "실제 화면에서 체감되는 품질" 에 가깝지만
   희귀 클래스 실패를 다시 숨긴다

   mIoU 와 함께 봐야 의미가 있다

5.4 파놉틱 분할, PQ

파놉틱은 셀 수 있는 객체와 셀 수 없는 배경을 하나의 지표로 통합 평가합니다.

things   사람, 차처럼 개체를 셀 수 있는 것
stuff    하늘, 도로처럼 셀 수 없는 영역

   인스턴스 분할은 things 만
   시맨틱 분할은 개체 구분 없이
   파놉틱은 둘 다 한 번에
PQ = SQ x RQ

SQ (Segmentation Quality)
   매칭된 세그먼트들의 평균 IoU
   "찾은 건 얼마나 정확히 그렸나"

   SQ = (매칭된 쌍들의 IoU 합) / (TP 개수)

RQ (Recognition Quality)
   F1 점수 형태
   "빠뜨리거나 헛것을 만들지 않고 얼마나 잘 찾았나"

   RQ = TP / (TP + FP/2 + FN/2)
매칭 기준은 IoU > 0.5 다

   이 조건 덕에
   한 정답에 매칭될 수 있는 예측이 최대 하나로 유일하게 정해진다

   두 예측이 동시에 IoU 0.5 를 넘길 수 없기 때문이다
   증명이 필요 없는 깔끔한 성질이라 이 임계값이 선택됐다

5.5 SQ와 RQ로 분해해 읽기

PQ의 진짜 쓸모가 여기 있습니다.

PQ 가 낮을 때 원인이 둘로 갈린다

   SQ 가 낮다   찾긴 찾았는데 경계가 엉망이다
                ──► 마스크 해상도, 경계 손실을 손봐야 한다

   RQ 가 낮다   아예 놓치거나 헛것을 만든다
                ──► 검출기, 분류 헤드, 임계값을 손봐야 한다

   한 숫자로 뭉뚱그리지 않고 두 실패 유형을 분리해 준다

5.6 경계 품질, Boundary IoU

큰 객체에서는 마스크 IoU 가 둔감해진다

   면적이 크면 경계 몇 픽셀이 틀려도
   전체 IoU 는 거의 안 움직인다

   그래서 "경계는 엉망인데 IoU 는 높은" 예측을 걸러내지 못한다
Boundary IoU (CVPR 2021)
   마스크 전체가 아니라
   경계에서 일정 거리 이내의 픽셀들만 골라 IoU 를 잰다

   객체 크기에 덜 휘둘리고
   경계 품질에 민감하다

   Mask IoU 와 함께 보면
   "면적은 맞는데 테두리가 거친" 실패를 잡아낼 수 있다

6장. 분류

6.1 Top-1과 Top-5

Top-1   모델이 1 순위로 꼽은 클래스가 정답인 비율
Top-5   상위 5 개 안에 정답이 있으면 맞은 것으로 침

6.2 Top-5가 왜 생겼나

ImageNet 은 클래스가 1000 개다

   그중 개 품종만 100 개가 넘는다
   시베리안 허스키와 알래스칸 말라뮤트를 정확히 가르는 건
   사람도 자주 틀린다

   Top-1 만 보면 이런 "거의 맞은" 실패가
   완전히 엉뚱한 실패와 똑같이 처벌된다

   Top-5 는 그 차이를 보여주려고 함께 보고된다
Top-1 은 낮은데 Top-5 가 매우 높다
   ──► 세부 구분에서 지고 있다. 큰 범주는 잡고 있다

둘 다 낮다
   ──► 특징 자체가 안 잡히고 있다

6.3 라벨 노이즈라는 천장

ImageNet 에는 원래 라벨이 애매하거나 틀린 이미지가 있다

   한 이미지에 여러 객체가 있는데 라벨은 하나뿐이거나
   전문가끼리도 의견이 갈리는 경우

   그래서 Top-1 정확도에는 사실상 천장이 있다
   99% 를 목표로 삼는 게 의미가 없는 이유다

7장. 전경 분리와 이진 마스크

7.1 왜 별도 지표가 필요한가

배경 제거, 돌출 객체 검출(SOD), 위장 객체 검출 같은 과제는
클래스가 하나뿐이다   전경이냐 배경이냐

   그리고 출력이 0 과 1 이 아니라
   0 에서 1 사이의 연속값 확률 맵인 경우가 많다

   임계값을 어디로 잡느냐에 따라 이진 마스크가 바뀐다
   그래서 임계값에 덜 매이는 지표가 필요해진다

7.2 MAE

MAE = 예측 맵과 정답 맵의 픽셀별 절대차의 평균

   둘 다 0 에서 1 로 정규화한 상태에서 잰다
   낮을수록 좋다

   단순하고 해석이 쉽다
   대신 전경이 작으면 "전부 0" 으로 예측해도 MAE 가 낮게 나온다

7.3 weighted F-measure

보통 F-measure를 연속값 맵에 그대로 쓰면 문제가 생깁니다.

세 가지 결함이 지적됐다 (Margolin et al., CVPR 2014)

   보간 결함   연속값을 이진화하는 과정에서 정보가 뭉개진다
   의존 결함   인접 픽셀의 오류를 서로 독립으로 세어 중복 계산한다
   동등 결함   경계 근처의 오류와 멀리 떨어진 오류를 똑같이 취급한다

weighted F-measure
   정답 경계로부터의 거리에 따라 픽셀 오류에 가중치를 준다
   경계에서 먼 곳의 헛것을 더 무겁게 벌한다

7.4 S-measure

구조 유사도 (Structure-measure, ICCV 2017)

   픽셀 단위 오차만 보면
   "구조가 맞는지" 는 전혀 반영되지 않는다

   S-measure 는 두 항을 섞는다
      객체 인지 유사도   전경 전체의 밝기 분포가 비슷한가
      영역 인지 유사도   영역별로 쪼개 구조가 비슷한가

   기본 가중은 두 항을 반씩 (alpha = 0.5)

7.5 E-measure

향상된 정렬 척도 (Enhanced-alignment measure, IJCAI 2018)

   국소 픽셀 일치와 이미지 전체 통계를 하나로 묶는다

   "픽셀 하나하나가 맞는가" 와
   "전체 평균 수준이 맞는가" 를 동시에 본다

   전경이 아주 작거나 아주 클 때
   다른 지표들이 놓치는 차이를 잡아낸다

7.6 왜 이렇게 많은가

이 과제는 정답이 "하나의 마스크" 라서
한 숫자로 요약하면 놓치는 게 너무 많다

   MAE          픽셀 오차의 크기
   F-measure    전경을 얼마나 정확히 골라냈나
   S-measure    구조가 얼마나 닮았나
   E-measure    국소와 전역이 동시에 맞나

   그래서 논문들이 이 넷을 묶어 함께 보고하는 관행이 굳었다
   하나만 인용된 표는 의심해 볼 만하다

8장. 복원과 생성

8.1 PSNR

MSE  = 두 영상의 픽셀 차이를 제곱해 평균낸 값
PSNR = 10 x log10( MAX^2 / MSE )      단위는 dB

   MAX 는 픽셀 최대값. 8 비트 영상이면 255
   높을수록 원본에 가깝다

   MSE 가 0 이면 PSNR 이 무한대라 정의되지 않는다

초해상, 디노이징, 압축처럼 정답 원본이 있는 과제의 기본 지표입니다.

8.2 SSIM

구조 유사도 지수

   픽셀 차이 대신 세 항을 곱한다
      밝기 (luminance)   평균이 비슷한가
      대비 (contrast)    분산이 비슷한가
      구조 (structure)   공분산이 비슷한가

   작은 윈도우를 이미지 전체에 슬라이딩하며 계산하고 평균낸다
   1 에 가까울수록 좋다

PSNR이 픽셀 하나하나를 독립으로 보는 데 반해, SSIM은 이웃 픽셀과의 관계를 본다는 게 차이입니다.

8.3 왜 사람 눈과 어긋나나

여기가 복원 지표의 핵심 문제입니다.

MSE 를 최소화하면 무엇이 최적인가

   불확실할 때는 가능한 답들의 평균을 내는 게 유리하다
   평균 이미지는 흐릿하다

   즉 흐릿하게 뭉갠 결과가 PSNR 을 잘 받는다

   반대로 선명하지만 디테일 위치가 조금 다른 결과는
   PSNR 이 크게 떨어진다

   사람 눈에는 후자가 훨씬 낫다

GAN 기반 초해상 모델이 PSNR은 낮은데 눈에는 훨씬 좋아 보이는 현상이 여기서 나옵니다.

8.4 LPIPS

학습된 지각 유사도 (CVPR 2018)

   사전학습된 CNN 에 두 이미지를 통과시켜
   중간 특징맵끼리의 거리를 잰다

   "픽셀이 얼마나 다른가" 가 아니라
   "신경망이 보기에 얼마나 다른가" 다

   낮을수록 비슷하다
   사람의 지각 판단과의 상관이 픽셀 지표보다 훨씬 높다는 것이
   논문의 핵심 결과다
주의할 점

   백본(AlexNet, VGG, SqueezeNet)에 따라 값이 다르다
   어느 백본으로 쟀는지 명시해야 비교가 된다

8.5 FID

Frechet Inception Distance (2017)

   생성 모델에는 "정답 이미지" 가 없다
   그래서 개별 이미지가 아니라 분포를 비교한다

   ① 실제 이미지 집합과 생성 이미지 집합을
      Inception 네트워크에 통과시켜 특징 벡터를 얻는다
   ② 각 집합의 특징 분포를 가우시안으로 근사한다
   ③ 두 가우시안 사이의 Frechet 거리를 잰다

   낮을수록 생성 분포가 실제 분포에 가깝다
쓸 때 조심할 것

   표본 수에 민감하다
   보통 5 만 장 기준으로 재고, 적게 쓰면 값이 부풀려진다

   리사이즈와 보간 방식, Inception 가중치 버전에 따라 값이 달라진다
   구현이 다르면 절대값 비교가 의미 없다

   같은 코드와 같은 설정에서 잰 상대 비교로만 써야 한다

8.6 왜곡과 지각은 서로 당긴다

왜곡 지표 (PSNR, SSIM)
   원본과 픽셀 수준에서 얼마나 같은가

지각 지표 (LPIPS, FID)
   사람이 보기에 얼마나 그럴듯한가

   둘을 동시에 최고로 만들 수 없다는 게 알려져 있다

   초해상 논문이 PSNR 계열과 지각 계열을 나눠 보고하는 이유다
   한쪽만 내민 표는 유리한 쪽만 골랐을 수 있다

9장. OCR

9.1 검출 쪽

텍스트 영역을 얼마나 잘 찾았나

   IoU >= 0.5 를 기준으로 매칭해
   정밀도, 재현율, H-mean (F1) 을 낸다

   회전하거나 휘어진 텍스트가 많아
   박스가 아니라 다각형 IoU 로 재는 경우가 많다

9.2 인식 쪽

단어 정확도 (word accuracy)
   전체 문자열이 완전히 일치해야 정답
   가장 엄격하다

문자 오류율 (CER, Character Error Rate)
   CER = (치환 + 삽입 + 삭제) / 정답 문자 수
   편집 거리를 정답 길이로 나눈 것
   낮을수록 좋다

정규화 편집 거리 (1 - NED)
   1 에서 정규화 편집 거리를 뺀 값
   부분 정답에도 점수를 준다
   높을수록 좋다
단어 정확도만 보면
   한 글자 틀린 것과 전부 틀린 것이 똑같이 0 점이다

   그래서 CER 이나 1-NED 를 함께 본다

9.3 엔드투엔드

검출과 인식을 붙인 전체 파이프라인은

   영역이 IoU 기준으로 맞고
   그 안의 문자열도 맞아야 TP 로 센다

   검출만 잘해도, 인식만 잘해도 점수가 안 나온다
   두 단계의 곱으로 떨어진다

10장. 사실 전부 고전 지표의 비전 버전이다

10.1 대응 관계

처음엔 mAP와 IoU가 비전 전용 신지표처럼 보이지만, 뜯어보면 익숙한 것들입니다.

IoU = Jaccard 지수
   두 집합의 겹침을 재는 고전 척도 그대로

Dice = F1 점수
   픽셀 집합에 적용한 형태

mAP = 정보검색의 AP 를 클래스별로 평균
   검색은 쿼리별 AP 를 평균해 mAP
   검출은 클래스별 AP 를 평균해 mAP
   계산은 동일하고 "무엇에 대해 평균 내느냐" 만 다르다

RQ = F1 점수
   PQ 안의 인식 품질 항은 정밀도와 재현율의 조화평균 형태

PSNR = 신호처리의 신호 대 잡음비
   영상에 맞춰 최대값 기준으로 쓴 것

FID = 두 분포 사이의 Frechet 거리
   통계학의 Wasserstein-2 거리를 가우시안 가정 아래 쓴 것

10.2 그래서 무엇이 남는가

정밀도와 재현율과 PR 곡선을 이해하고 있으면, 비전 지표는 "그걸 위치와 픽셀에 적용한 것"으로 자연스럽게 읽힙니다. 새로 외울 게 아니라 어디에 적용했는지만 파악하면 됩니다.

비전 고유의 부분은 셋뿐입니다.

① IoU 라는 겹침 척도를 매칭 기준으로 쓴다
② 클래스별로 평균한다
③ 정답이 없는 생성 과제에서는 분포를 비교한다

11장. 무엇을 왜곡하나

11.1 VOC@0.5와 COCO@[.5:.95]는 같은 mAP가 아니다

가장 흔한 착시입니다.

COCO 는 IoU 0.95 까지 엄격히 평균한다
   같은 모델이라도 숫자가 낮게 나온다

서로 다른 논문과 모델을 "mAP 몇" 하나로 비교하려면
   IoU 임계값과 평균 방식이 같은지부터 확인해야 한다

2차 자료에서 옛 논문의 VOC mAP와 최신 논문의 COCO AP를 나란히 놓고 "성능이 떨어졌다"고 쓰는 걸 종종 봅니다. 척도가 다른 두 자를 비교한 것입니다.

11.2 AP50만 보고하면 위치 정밀도를 숨긴다

IoU 0.5 는 "대충 그 근처" 만 맞아도 통과다
박스가 삐뚤어도 AP50 은 높게 나온다

   정밀한 위치가 중요한 과제라면
   AP75 나 COCO AP 를 함께 봐야 한다

11.3 픽셀 정확도는 다수 클래스에 지배당한다

5.2에서 본 그대로입니다. 분할 결과를 픽셀 정확도로 자랑하는 표는 일단 의심할 만합니다.

11.4 클래스 평균은 양날의 검이다

mAP 와 mIoU 는 모든 클래스를 동등 가중한다

   희귀 클래스 하나가 0 점이면 전체 평균을 크게 끌어내린다
   반대로 흔한 클래스만 잘해도 점수가 부풀 수 있다

   클래스별 분해를 함께 봐야 한다
실무에서 특히 중요하다

   전체 mAP 는 올랐는데
   정작 우리 서비스에서 중요한 한 클래스는 떨어졌을 수 있다

   평균은 그걸 숨긴다

11.5 PQ의 매칭 기준은 근접 실패를 이중 처벌한다

PQ를 처음 쓸 때 당황하는 지점입니다.

IoU 가 0.5 에 못 미친 세그먼트는 매칭 실패다

   예측은 FP 로 카운트되고
   정답은 FN 으로도 카운트된다
   양쪽에 동시에 잡힌다

   "거의 맞았지만 0.5 미달" 인 예측이 많으면 PQ 가 급락한다

IoU 0.49짜리 예측이 IoU 0짜리 예측과 똑같이 취급된다는 뜻입니다. 점수가 유독 낮게 나오면 IoU 분포가 이 경계 근처에 몰려 있는지 확인해 볼 만합니다.

11.6 PSNR과 SSIM은 블러에 관대하다

8.3에서 본 그대로입니다.

초해상 결과를 PSNR 로만 비교하면
가장 흐릿한 모델이 이길 수 있다

   지각 지표를 반드시 함께 봐야 한다

11.7 FID는 설정에 흔들린다

표본 수, 리사이즈 방식, Inception 가중치 버전

   이 셋만 달라도 값이 눈에 띄게 바뀐다

   논문 A 의 FID 와 논문 B 의 FID 를
   그냥 나란히 놓으면 안 된다

12장. 실무

12.1 도구

pycocotools
   검출과 인스턴스 분할 AP 의 사실상 표준 구현
   iscrowd, maxDets, 크기별 분해 같은 예외 처리가 다 들어 있다

torchmetrics
   같은 지표들을 PyTorch 친화적으로 제공한다
   분류, 분할, 복원 지표까지 폭이 넓다

   AP 는 엣지케이스가 많다
   직접 구현하기보다 이들을 쓰는 게 안전하다

12.2 과제별 기본 지표

분류          Top-1 / Top-5
검출          COCO AP@[.5:.95] (+ AP50, AP75, 크기별)
인스턴스 분할   Mask AP
시맨틱 분할     mIoU
파놉틱 분할     PQ (+ SQ, RQ 분해)
전경 분리      MAE, weighted F-measure, S-measure, E-measure
초해상과 복원   PSNR, SSIM + LPIPS
생성          FID (+ 지각 지표)
OCR          검출 H-mean, 인식 정확도와 CER

12.3 보고할 때

AP50 하나만 내밀지 않는다
   엄격 지표를 병행한다

어떤 IoU 기준과 어떤 평균인지 명시한다
   "mAP 0.82" 는 정보가 부족하다
   "COCO AP@[.5:.95] 0.42" 라고 써야 한다

복원과 생성은 왜곡 지표와 지각 지표를 함께 낸다

클래스별 분해를 같이 붙인다
   평균이 숨기는 걸 드러낸다

이것만 지켜도 11장의 함정 대부분을 피합니다.

12.4 지표가 안정적이라는 것

DETR 도 SAM 도 최신 모델들이
여전히 같은 mAP, mIoU, PQ 로 평가된다

   아키텍처는 계속 바뀌어도 채점 기준은 그대로다
   그래서 세대를 넘는 비교가 가능하다

   LLM 벤치마크가 몇 년마다 포화되고 갈아엎히는 것과 대조적이다

지표를 한 번 제대로 익혀두면 오래 쓸 수 있다는 뜻이기도 합니다.


용어 정리

용어 한 줄 뜻
IoU (Intersection over Union) 교집합을 합집합으로 나눈 겹침 척도. Jaccard 지수와 동일
Jaccard 지수 두 집합의 겹침 비율을 재는 고전 통계 척도
Dice 계수 2배 교집합을 두 넓이 합으로 나눈 값. F1을 픽셀에 적용한 형태
TP / FP / FN 제대로 잡음 / 헛것을 잡음 / 놓침. 검출에는 TN이 없음
정밀도 (Precision) 내가 잡았다고 한 것 중 맞은 비율
재현율 (Recall) 실제 있는 것 중 내가 잡은 비율
PR 곡선 신뢰도 임계값을 쓸어내리며 그린 재현율 대 정밀도 곡선
AP (Average Precision) 한 클래스의 PR 곡선 아래 면적
mAP 클래스별 AP의 평균
mAP@0.5 IoU 0.5 단일 임계값 기준. PASCAL VOC식
AP@[.5:.95] IoU 0.5에서 0.95까지 10개 임계값의 AP 평균. COCO식 현 표준
AP50 / AP75 IoU 0.5 / 0.75 단일 임계값 AP
APs / APm / APl 32×32 미만, 32×32에서 96×96, 96×96 이상 객체별 AP
AR (Average Recall) 이미지당 예측 수를 제한한 상태의 평균 재현율
maxDets 이미지당 채점할 최대 예측 수. COCO 기본은 100
iscrowd 개별로 나눌 수 없는 무리 영역 표시. 이 영역의 예측은 무시
11점 보간 / 전체 점 보간 VOC 2007과 VOC 2010 이후의 PR 곡선 면적 계산 방식 차이
Mask AP IoU를 마스크 픽셀로 계산한 인스턴스 분할 AP
mIoU 클래스별 픽셀 IoU의 평균. 시맨틱 분할 표준
FWIoU 클래스 픽셀 빈도로 가중 평균한 IoU
픽셀 정확도 맞힌 픽셀 비율. 다수 클래스에 지배당해 분할 평가에는 부적절
파놉틱 분할 things(셀 수 있는 객체)와 stuff(배경)를 하나로 통합 평가하는 과제
PQ (Panoptic Quality) SQ 곱하기 RQ. 파놉틱 분할 표준 지표
SQ (Segmentation Quality) 매칭된 세그먼트들의 평균 IoU
RQ (Recognition Quality) F1 형태의 인식 품질 항
Boundary IoU 경계 근처 픽셀만으로 재는 IoU. 큰 객체의 경계 품질에 민감
Top-1 / Top-5 1순위가 정답인 비율 / 상위 5개 안에 정답이 있는 비율
MAE 예측 맵과 정답 맵의 픽셀별 절대차 평균. 전경 분리 지표
weighted F-measure 정답 경계로부터의 거리로 오류에 가중을 준 F-measure
S-measure 객체 인지와 영역 인지 구조 유사도를 섞은 지표
E-measure 국소 픽셀 일치와 전역 통계를 함께 보는 정렬 척도
PSNR 최대 신호 대 잡음비. 픽셀 오차 기반 복원 지표 (dB)
SSIM 밝기, 대비, 구조 세 항을 곱한 구조 유사도 지수
LPIPS 사전학습 CNN의 특징 거리로 재는 학습된 지각 유사도
FID 실제와 생성 특징 분포 사이의 Frechet 거리. 생성 모델 표준
왜곡 대 지각 픽셀 정확도와 그럴듯함이 동시에 최고가 될 수 없다는 트레이드오프
H-mean 정밀도와 재현율의 조화평균. OCR 검출에서 F1을 부르는 이름
CER 편집 거리를 정답 문자 수로 나눈 문자 오류율
1-NED 정규화 편집 거리를 1에서 뺀 값. 부분 정답에 점수를 줌

참고자료

댓글