cs
Jaccrad Index(IoU)와 F1/Dice, Coutour Accuracy(F)
DL·ML/Study

Jaccrad Index(IoU)와 F1/Dice, Coutour Accuracy(F)

 

 

 

segmentation task에서 주로 사용하는 metric으로 Jaccard Index(IoU)와 F-score가 있다. 본 글에서는 각각을 이해하고 특징을 살펴본다.

Jaccard Index

Jaccard index는 [1]에서 처음 정의되어 사용되었으며, Intersection over Union(IoU)로도 불린다. 이는 다음과 같이 정의된다:

$$ \frac{TP}{TP+FP+FN}$$

 

즉 Jaccard index는 다음과 같이 이해될 수도 있다:

$$\frac {A\cap B}{A\cup B}$$

 

만약 $A$와 $B$와 완전히 겹쳐져 있으면 1이 나오고, intersect하는 구역이 전혀 없을 경우 0이 나올 것이다.

 

 

F1 / Dice score

F1 score는 [2]에서 정의되었으며, 다음과 같이 정의된다:

$$ \frac{2TP}{2TP+FP+FN}$$

 

true positive의 coefficient가 2배가 된 것을 제외하고는 Jaccard index와 동일하며, 역시 $[0, 1]$의 값을 갖는다. 

이는 다음과 같이 이해될 수도 있다:

$$ \frac{2 A\cap B}{A+B} \text{ or } \frac{2⋅IoU}{1+IoU}$$

 

또는 다음처럼 계산될 수도 있다:

$$ 2×\frac{Precision × Recall}{Precision + Recall}$$

 

 

두 값의 이해

[3]에 따르면, 이 두 값은 fixed GT에 대해서 언제나 positively related되어 있다. 따라서 하나의 model이 한 metric에서 더 좋다면 그 model은 나머지 metric에서도 더 좋다. 그러나 IoU metric은 F1보다 틀린 classification에 더 가혹한 경향이 있다. 실제로 GT와 pred의 영역의 크기가 같다고 가정하고 그래프를 그려보면 더 정확히 볼 수 있는데,

 

Figure 1: intersection area에 따른 IoU와 F1 score.

 

F1 score graph가 아래로 convex하고 intersection이 적을 때 좀 더 가혹하다. 반면 F1 score는 intersection된 공간을 그대로 갖는 값이 된다. 

 

F1 score는 average performance를 보여주는 것에 가깝고, Jaccard index는 error penalty를 "sqaring"하는 효과가 있다. 

 

 

Contour Accuracy

video segmentation에서 활용하는 F-score는 [4]에서 처음 제안된 방법으로, F1 score에 기반하나 segmentation mask의 contour accuracy를 측정하기 위해 제안되었다.

 

gt mask $G$와 predicted segmentation mask $M$에 대해서 closed contour $c(M)$을 mask의 spatial extent를 delimit하는 a set of closed contour로 정의할 수 있다. 그럼 GT와 pred의 contour points $c(M)$과 $c(G)$에 대해서, bipartite graph matching으로 F1 score를 측정한다:

 

$$\mathcal{F} = \frac{2P_cR_c}{P_c+R_c}$$

 

해당 실험에서는 bipartite graph matching을 morphology operator를 통해서 approximate했다.

 

사실 이걸 글로만 봐서는 이해가 잘 안 되어서 코드를 찾았다:

 

https://github.com/davisvideochallenge/davis/blob/master/python/lib/davis/measures/f_boundary.py

 

davis/python/lib/davis/measures/f_boundary.py at master · davisvideochallenge/davis

Package containing helper functions for loading and evaluating DAVIS - davisvideochallenge/davis

github.com

 

이 코드를 보면, boundary pixel들을 map으로 뽑아낸 다음에 morphological operation 중 하나인 dilation으로 경계를 두껍게 만든다. 그럼 각 object의 contour line이 몇 픽셀 정도로 두꺼워지는데, 이를 이용해 pixel-wise로 F score를 계산한다.

 


 

References

[1] Paul Jaccard. The distribution of the flora in the alpine zone. 1. New phytologist, 11(2):37–50, 1912.

[2] Lee R Dice. Measures of the amount of ecologic association between species. Ecology, 26(3): 297–302, 1945.

[3] https://stats.stackexchange.com/questions/273537/f1-dice-score-vs-iou

[4] Perazzi, Federico, et al. "A benchmark dataset and evaluation methodology for video object segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

Footnotes

'DL·ML > Study' 카테고리의 다른 글

GIoU, CIoU metrics  (0) 2025.01.06
Reinforcement Learning Basics  (0) 2024.08.20