본문 바로가기
바삭한 인공지능

바삭한 인공지능(Semantic Segmentation)

by Oceanlighth AI 2023. 5. 9.

목차

1. 머리글

2. Semantic Segmentation이란?

3. Semantic Segmentation의 예시

4. Semantic Segmentation과 Instance Segmentation

5. Semantic Segmentation의 과정

6. Semantic Segmentation의 평가지표

7. 마치며

 

안녕하세요. 오션라이트에이아이 백승기연구원입니다.

 

머리글

이번 글에서는 Semantic Segmentation에 대해서 알아보겠습니다.

 

Semantic Segmentation이란?

Semantic Segmentation은 딥러닝 분야 특히, 영상이나 이미지 분야에서 많이 쓰이는 작업입니다.

 

Segmentation이란 분할이라는 의미를 가지고 있으며, 딥러닝에서는 이미지에 보이는 영역, 물체 등을 픽셀의 집합으로 나타내어 분류하는 작업을 말합니다.

 

이러한 작업을 통해서 Semantic Segmentation은 이미지나 영상속의 픽셀들에게 의미를 부여하여 어떠한 분류에 속하는지 찾아낼 수 있습니다.

 

Semantic Segmentation의 예시

 

그림 1. Semantic Segmentation의 예 (출처 : https://divamgupta.com/image-segmentation/2019/06/06/deep-learning-semantic-segmentation-keras.html)

 

그림 1.과 같이 Semantic Segmentation을 통해 각기 다른 물체를 다른 색으로 표현한 것을 볼 수 있습니다. 

 

그림 1.은 학습 데이터를 침대, 커튼 등의 물체를 다르게 라벨링 하였을 것이며, 그로인한 Segmentation 결과가 오른쪽과 같이 나타나게 됩니다. 

 

만약 라벨링 과정에서 각각의 물체들을 다른방식으로 라벨링하여 학습하였다면 그림 1.과는 다른 결과가 나올 것입니다.

 

Semantic Segmentation과 Instance Segmentation

 

Segmentation의 종류에는 크게 Semantic Segmentation과 Instance Segmentation이 있습니다.

 

두개의 차이는 다음과 같습니다.

그림 2. Semantic Segmentation과 Instance Segmentation의 비교 (출처 : https://towardsdatascience.com/detection-and-segmentation-through-convnets-47aa42de27ea)

Semantic Segmentation 그림 2.와 같이 하나의 의미를 가지는 여러개의 물체에 대해서는 같은 객체라고 인식합니다. 따라서 3마리의 양을 하나의 색으로 표현하였습니다. 나머지 도로, 풀과 같은 경우도 의미에 따라서 분류를 하였습니다. 자동차, 사람, 건물 등의 카테고리를 분류
Instance Segmentation 그림 2.와 같이 Instance Segmentation은 물체가 의미를 가지는것과는 상관없이 각각의 물체를 다른 객체라고 인식하여 분류하였습니다.  자동차, 사람, 건물 등의 개별적인 객체를 분류

 

각각의 Segmentation을 사용자의 목적에 맞게 사용하여 원하는 결과를 얻어낼 수 있습니다.

 

Semantic Segmentation의 과정

 

기본적으로 Semantic Segmentation은 CNN구조를 따릅니다. (Convolutional Neural Network, 2023.01.31 - [바삭한 인공지능] - 바삭한 인공지능(Convolutional Neural Network)

 

바삭한 인공지능(Convolutional Neural Network)

목차 1. 머리글 2. CNN(Convolutional Neural Network) 3. Zero Padding 4. Pooling 5. Fully Connected Layer 6. CNN의 프로세스 7. 마치며 안녕하세요. 오션라이트에이아이 백승기연구원입니다. 머리글 이번 글에서는 Deep Le

oceanlightai.tistory.com

 

CNN구조를 통해서 이미지의 특징을 추출해낸 뒤, 그 특징을 기반으로 해당 픽셀들이 나타내는 클래스를 분류하여 결과값을 나타냅니다. 


Semantic Segmentation은 위의 CNN구조를 통해서 결과를 나타낼 수도 있지만, 주로 미리 준비된 이미지와 라벨링된 이미지(Mask)를 통해 학습한 뒤 원하는 결과를 도출하는 경우가 많습니다.

이미지 라벨링된 이미지(Mask 이미지)
그림 3. 원본 이미지와 라벨링된 이미지
(출처 : https://www.researchgate.net/publication/342485108_Data_Study_Group_Final_Report_SenSat_Semantic_segmentation_of_3D_point_clouds#pf9)

 

그림 3.과 같이 하나의 이미지와 그 이미지에 맞게 라벨링된 데이터를 한 묶음으로 학습하여 해당 이미지에 대한 학습을 보다 효율적이게 할 수 있습니다. 

 

예시 그림에서는 라벨링 이미지가 흑백으로 되어있지만, RGB값을 가진 라벨링 데이터도 똑같이 학습에 활용할 수 있습니다.

 

Semantic Segmentation의 평가지표

 

Semantic Segmentation도 다른 머신러닝, 딥러닝과 마찬가지로 평가지표가 있습니다.

  실제 정답
True False
분류 결과 True True Positive False Positive
False False Negative True Negative
정확도(Accuracy) 원본 라벨링 이미지와 예측한 라벨링 이미지에서 각각의 클래스의 픽셀을 전체 픽셀과 비교하여 일치하는 비율
정밀도(Precision) True Positve를 True Positive와 False Positive 합의 값으로 나눈 값
재현율(Recall) True Positive를 True Positive와 False Negative 합의 값으로 나눈 값 
F1-Score Precision과 Recall의 조화평균
IoU(Intersection over Union) Segmentation에서 사용하는 평가지표로 예측한 모델과 라벨링 데이터의 교집합 영역 넓이를 합집합 영역 넓이로 나눈 값

 

여기서 IoU(Intersection over Union)에 대해서 조금 더 알아보겠습니다.

 

Segmentation은 이미지의 픽셀단위를 구분하는 작업이기에 픽셀 영역과 관련된 평가지표인 IoU를 사용합니다.

 

그림 4. IoU를 계산하는 공식

 

그림 5. 바운딩 박스를 통한 IoU 지표 계산 (출처 : https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/)

 

그림 4.와 그림 5.를 통해서 원본 라벨링 데이터의 영역과 예측한 모델의 영역을 비교하여 얼마나 일치하는지에 대해서 계산한 값이 IoU지표 입니다.

 

IoU지표는 계산방식에 따라 다르겠지만 0~100%나 0.0~1.0의 구간 사이에서 높은 수치가 나올수록 모델의 성능이 좋다고 판단합니다.

 

마치며

 

이번글에서는 Semantic Segmentation의 기본적인 내용에 대해서 설명하였습니다.

 

다음 글에서는 Semantic Segmentation의 기본적인 코드에 대해서 설명하겠습니다.

 

댓글