딥러닝 Segmentation(6) - segmentation 평가(Pixel Accuracy, Mean IOU)

미남로그·2021년 10월 20일
2

Segmentation

목록 보기
6/7

Segmentation 시리즈

0️⃣ 딥러닝 Segmentation(1) - 개념, 용어, 종류(Semantic, Instance segmentation)
1️⃣ 딥러닝 Segmentation(2) - Semantic/Instance Segmentation
2️⃣ 딥러닝 Segmentation(3) - FCN(Fully Convolution Network)
3️⃣ 딥러닝 Segmentation(4) - U-Net
4️⃣ 딥러닝 Segmentation(5) - DeepLab 계열
5️⃣ 딥러닝 Segmentation(6) - segmentation 평가(Pixel Accuracy, Mask IOU)
6️⃣ 딥러닝 Segmentation(7) - Upsampling의 다양한 방법



Segmentation 평가 지표

https://www.jeremyjordan.me/evaluating-image-segmentation-models/

지금까진 딥러닝 기반의 semantic segmentation을 수행하는 방법을 확인했고, 이제 모델을 평가하는 평가 지표를 알아보겠습니다.

일반적으로 semantic segmentation의 결괏값은 이미지의 크기에 맞는 segmentation map 크기와 semantic class 수에 맞는 channel 크기를 갖습니다.



Quiz

위에서 보이는 "Ground truth"와 "Prediction"을 어떤 방식으로 비교하여 정오 여부를 가릴 수 있을지 생각해 봅시다!

  • 픽셀의 수만큼의 분류 문제로 평가할 수 있다.


Pixel Accuracy

pixel별 정확도를 알아보겠습니다.

https://www.slideshare.net/SebastianRaschka/nextgen-talk-022015/34-Error_MetricsTPLinear_SVM_on_sepalpetal

아니 이건 어디서 많이 본...😲

Pixel Accuracy는 픽셀에 따른 정확도를 의미합니다. segmentation은 이미지의 pixel 수준에서 각 영역이 어떤 의미를 갖는지 분리하는 방법이라 설명한 적이 있습니다.

Segmentation 문제를 pixel에 따른 image classification 문제로 생각했을 때, 이 문제와 비슷하게 pixel별 분류 정확도를 segmentation model을 평가하는 기준으로 생각할 수 있습니다!

이때 prediction map을 class별로 평가하는 경우에는 binary classification으로 생각해 pixel 및 channel 별로 평가합니다. pixel별 image classification 문제로 평가하는 경우에는 pixel별로 정답 class를 맞추었는지의 여부, 즉 True/False를 구분합니다.

예를 들어, 4x4 size를 갖는 map에서 중앙의 2x2 영역이 전경이고 예측 결과 중 한 칸을 놓쳤다고 가정한다면 위에서 보이는 Error Metrics를 확인하면 (TP+TN)/(FP+FN+TP+TN)으로 Accuracy를 구할 수 있습니다.

TP(True positive)+ TN(True negative)는 옳게 분류된 샘플의 수로 잘못 예측된 한 칸을 제외한 15가 됩니다. 그리고 False case 1인 한 칸은 전경이 배경으로 예측되었으니 FN(False negative)입니다. 따라서 분모항은 16이 됩니다. 따라서 Pixel Accuracy는 15/16으로 계산할 수 있습니다.



Mean Intersection-over-Union

IOU는 object detection 모델을 평가할 때 ground truth와 prediction Bbox 사이의 IOU(intersection over union)을 사용합니다. 이는 실제 값과 예측 값이 얼마나 겹치는 지를 따져 잘 예측했는지 성능을 평가하는 지표입니다.

Mask도 일종의 region임을 생각했을 때 segmentation 문제에서는 ground truth와 prediction region 사이의 IoU를 계산할 수 있습니다. 아래 식처럼 Segmentation의 IoU는 생각보다 쉽게 계산할 수 있습니다.

intersection = np.logical_and(target, prediction)
union = np.logical_or(target, prediction)
iou_score = np.sum(intersection) / np.sum(union)

IoU를 class별로 계산하면 한 image에서 multi classes에 대한 평균 mean IoU 점수를 얻을 수 있습니다. 이의 평균을 구하면 전체 semantic segmentation 성능을 평가할 수 있습니다!

여기까지 segmentation model의 성능 평가 지표가 무엇이 있는지 알아보았습니다.👏

profile
미남이 귀엽죠

0개의 댓글