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을 계산한다.
'2021 네이버 부스트캠프 - Ai tech' 카테고리의 다른 글
Week 11/12/13 - Semantic Segmentation - FCN 한계점 (0) | 2021.12.15 |
---|---|
Week 11/12/13 - Semantic Segmentation - FCN (0) | 2021.12.15 |
Week 11/12/13 Level2- P Stage [Semantic Segmentation] (0) | 2021.11.19 |
Week 8/9/10 - Object Detection - EfficientDet (0) | 2021.11.08 |
Week 8/9/10 - Object Detection - RetinaNet (0) | 2021.11.06 |