2021 네이버 부스트캠프 - Ai tech

Week 11/12/13 - What is Semantic Segmentation?

미미수 2021. 12. 15. 00:21

Level 2 두번째 과제는 바로 Semantic Segmentation입니다.

이번 글에서는 Semantic Segmentation이 어떤 task인지, 어떤 평가 metric을 사용하는지 대표적으로 사용하는 Loss와 그 간략한 계산에 대해 알아 보겠습니다.

 

 

 

1. Semantic Segmentation

 

 

Semantic Segmentation은 각 pixel 단위로 classification을 한다. 왼쪽 이미지와 같이 '종이 쓰레기'를 분류하고 싶을 때 어떤 픽셀이 어떤 class인지 모든 pixel에 대하여 라벨링 한다.

 

 

 

 

자율주행, 의료등 다양한 실생활 분야에 사용되고 그만큼 실용적이고 어려운 주제이다.

 


 

2. 평가 Metric : mIOU

 

Object Detection에서 사용했던 IOU가 기억나시나요?

그때는 IOU를 예측한 bounding box 정답 레이블인지 아닌지를 알기 위해서 사용했다면, semantic segmentation은 mIOU가 그 자체로 성능점수가 된다.

 

mIOU의 계산식은 아래와 같다.

 

class 별 $\frac{Ground Truth\cap Predict}{Ground Truth\cup Predict}$의 평균

 

 

예시)

1. 빨간색 class

$Ground Truth \cup Predict$

: GT에서의 빨강=2개 + Predict에서의 빨강=2개 - GT와 Pred 교집합=1개 = 3

 

$Ground Truth \cap Predict$

: GT와 Pred 교집합=1개 = 1

 

빨강색 class의 IOU : 1/3 = 0.3333

 

 

2. 초록색 class

$Ground Truth \cup Predict$

: GT에서의 초록=4개 + Predict에서의 초록=3개 - GT와 Pred 교집합=3개 = 4

 

$Ground Truth \cap Predict$

: GT와 Pred 교집합-3개 = 3

 

초록색 class의 IOU : 1/4 = 0.75

 

 

위와 같이 모든 class에 대한 IOU를 구한 뒤 mIOU를 구하면 왼쪽과 같다.

 

 


3. Loss : Cross-Entropy

Softmax + Cross-Entropy loss

 

criterion = nn.CrossEntropyLoss()
loss = criterion(outputs,mask)

 

 

 

2x2 size의 이미지가 존재한다. 이때 이미지는 RGB3개의 채널을 가지기 때문에 1,3,2,2 의 size를 갖는다.

그 다음 모델에 결과를 넣으면 2x2 사이즈에 class의 개수만큼(그림상에서는 4)tensor가 추출된다.

오른쪽 아래는 mask(정답)이고 각 pixel별 정답 class가 나와 있다.

 

 

각 pixel 별 cross entopy loss를 계산하고 그 다음에 softmax를 적용해서 최종 output을 계산한다.