이미지 분할(Image Segmentation) 개요

컴퓨터 비전 분야(Computer Vision, CV)의 기술 중 하나인 이미지 분할(Image Segmentation)은 이미지를 픽셀 단위로 나누어 객체 또는 영역을 식별하는 기술이다. 즉, 이미지 내의 개별 객체를 구분하고, 각 객체의 경계를 얻어내는 작업을 수행한다.

이 기술은 자율 주행, 의료 영상 분석, 스마트 농업 등 다양한 분야에서 활용되고 있다.

먼저, Thing과 Stuff 용어에 대해 이해해보자. Thing은 사람, 차량과 같이 특징적인 모양을 가져 셀 수 있는 객체를 의미한다. Stuff는 하늘, 물처럼 형태가 없고 크기가 매우 다양해 셀 수 없는 클래스를 의미한다.

이미지 분할에는 크게 다음 세 가지 유형이 있다:

클래스 분할(Semantic Segmentation)

같은 클래스에 속하는 모든 픽셀을 하나의 그룹으로 나누는 방식이다. 예를 들어, 이미지 속 여러 사람이 “사람” 클래스로 인식된다.

  • 모든 픽셀을 Stuff로 취급하며, Stuff 와 Thing을 구분하지 않는다. 즉, 개별 객체의 구분은 고려하지 않는다.

인스턴스 분할(Instance Segmentation)

같은 클래스 내에서도 개별 객체를 분리하여 구분하는 방식이다. 예를 들어, 두 사람을 별개의 객체로 인식한다.

  • Stuff에서 Thing을 분리하고, Stuff를 무시한다. 따라서, 같은 그룹에 속하더라도 각각의 객체는 서로 다른 레이블을 갖는다.
  • 겹쳐진 물체를 각각 검출하고, 정해진 형태가 없는 물체(ex. 도로, 하늘)에는 레이블을 부여하지 않는다.

파노픽 분할(Panoptic Segmentation)

Semantic + Instance Segmentation으로, 이미지에서 모든 픽셀에 클래스를 할당하는 동시에개별 객체도 구분하는 방식이다. 동일한 클래스에 속하면서도 개별 객체로 나누어 표현한다.

  • 도로, 하늘과 같은 셀 수 없는 물체(stuff)과 사람, 차량과 같이 셀 수 있는 사물(things)로 카테고리를 분류한다.
  • Stuff에 대해서는 Semantic Segmentation을, Thing에 대해서는 Instance Segmentation을 수행한다.

딥러닝 이미지 분할 모델

1. UNet

UNet은 2015년 의료 영상 분할을 위해 개발된 모델로, Encoder-Decoder구조와 Skip Connection을 사용하는 것이 특징이다. “U”형태의 네트워크로, 인코더(Encoder) 부분에서 점점 해상도를 낮추며 특징을 추출하고, 디코더(Decoder) 부분에서 점진적으로 해상도를 높이며 원본 크기로 복원한다. Encoder와 Decoder의 Skip Connection을 통해, Encoder에서 얻은 특징을 Decoder로 전달하여 더 정확한 경계 예측을 가능하게 한다. UNet은 학습 파라미터가 적고, 다양한 해상도의 특징을 통합하여 세밀한 분할이 가능하다.

2. DeepLab

DeepLab은 구글에서 개발한 모델로, Atrous Convolution(팽창 합성곱)과 Atrous Spatial Pyramid Pooling(ASPP)을 사용해 다양한 스케일의 특징을 동시에 포착한다. Artous Convolution을 사용해 필터의 간견을 넓혀 더 넓은 범위의 특징을 학습하되, 해상도는 유지할 수 있도록 한다. 또한 ASPP를 구현해 객체의 크기나 위치에 구애 받지 않고 분할 성능을 높인다. DeepLabv3+가 가장 최신 버전으로, Encoder-Decoder 구조를 추가해 성능이 향상되었다.

3. ViT(Vision Transformer)

ViT는 transformer 모델을 적용해 이미지를 처리하는 모델로, Self-Attention 메커니즘을 이용해 이미지 분할을 수행한다. 이미지를 작은 패치(patch)로 나누고, 각 패치를 임베딩하여 트랜스포머의 입력으로 활용한다. 이를 통해 이미지의 전역전인 관계를 학습할 수 있다. 그리고 transformer의 Self-Attention 메커니즘을 통해 이미지의 모든 부분 간의 관계를 고려하면서 분할을 수행한다.

4. SAM(Segment Anything Model)

SAM은 Meta AI에서 개발한 모델로, 모든 유형의 객체를 자동으로 분할한다. 대규모 데이터 학습을 통해 이미지 내의 다양한 객체에 대해 경계를 형성하는 모델로, 프롬프트를 기반으로 다양한 객체를 정확하게 분할할 수 있는 범용적인 모델이다.

이미지 분할 모델 평가 지표

이미지 분할에서는 주로 픽셀 단위의 정확도와 분할된 영역의 일치 정도를 평가하는 지표를 사용한다.

  1. IoU(Intersection over Union) IoU는 예측된 영역과 실제 영역이 얼마나 겹치는지를 평가하는 지표이다. 예측 영역과 실제 영역의 교집합을 합집합으로 나눈 값으로 계산된다. IoU 값이 높을수록 모델의 예측 영역이 실제 객체 영역과 잘 일치한다는 의미이다.

  2. mIoU(Mean Intersection over Union) mIoU는 모든 클래스의 IoU 평균을 계산한 지표로, 전체 데이터셋에서 모델의 분할 성능을 측정한다. 특히 다중 클래스 이미지 분할 작업에서 자주 사용한다.

  3. Pixel Accuracy Pixel Accuracy는 전체 픽셀 중 예측이 정확한 픽셀의 비율을 계산하는 지표이다. 이 지표는 간단하지만, 불균형한 클래스 데이터에서는 한계가 있을 수 있다.

이미지 분할 적용 예시

  • 의료 영상 분석: MRI나 CT 이미지에서 병변 또는 장기 부분을 분할하여 진단에 도움을 준다.
  • 자율 주행: 도로 상황을 분석하여 보행자, 차량, 도로 표지판 등을 분리하고 인식한다.
  • 스마트 농업: 드론이나 위성 사진을 통해 작물과 잡초를 분리하여 농작물의 상태를 모니터링한다.