본문 바로가기
AI/딥러닝

이미지 분할(Segmentation)이란?

by 남오공 2022. 5. 17.
728x90

분할된 이미지의 예시

이미지 분할(Segmentation)이란?

  • 한 이미지 내에서 같은 의미(사람은 사람,차는 차)를 가지고 있는 부분을 구분해내는 것이다.
  • 즉 사진의 예시처럼 이미지 내 다양한(사람,자동차,도로,표지판) 등을 픽셀 단위로 레이블을 예측하여 구분하는 것이다.
  • 분할은 크게 Semantic Segmentation와 (Semantic) Instance Segmentation로 구별되는데 예시는 아래와 같다.

  • 위의 예시처럼 많은 의자를 동일하게 의자 하나로 볼 것인가, 아니면 각 의자마다 레이블을 줄 것인가? 의 차이이다.

분할에 대한 의미는 파악했으니 대표적인 분할 모델인 FCN, U-net에 대해 알아보자

FCN(Fully Convolutional Networks)

  • 분할(Segmantation)은 픽셀 단위로 분류가 이루어지기 때문에 픽셀의 위치 정보를 끝까지 보존해야 하기에 
    기존 CNN 모델의 FCL(완전 연결 신경망)은 고정된 크기의 input 만을 받아야 되는 점과 위치 정보를 알 수 없다는 점에서 이미지 분할에 사용되기 부적절했다. 

  • 위치 정보가 없다는 의미는 이미지의 물체가 어떠한 Class에 속하는지 알지만 이미지 어디에 존재하는지 모른다는 말이다. (즉 위의 의자예시로 보자면 의자가 분할되더라도 어떤의자가 빨간색인지, 보라색인지 모른다는 뜻이다.)

  • FCN 모델에서는 마지막 FCL들을 Convolution Layer로 대체함으로써 문제를 해결하였다. 아래 예시를 통해 이해하여 보자

 

기존의 FCL의 모델

  • 기존의 FCL 모델의 예시이다. 모델은 고양이(tabby cat)라는 것을 예측해냈지만, 어디에 존재하는지는 모른다.

FCN 모델의 구조

  • FCL의 층을 1 x 1 형태의 합성곱 층(Convolution) 으로 변환하여 위치 정보가 손실되지 않았으며 아래의 예처럼 어떠한 이미지가 입력되더라도 사용할 수 있게 된다.

 

  • 하지만 합성곱 층을 지나고 얻게 된다면 특정 히트맵의 부분(위 예시에선 고양이와 강아지)의 픽셀값만이 높게 되는데 이러한 이유때문에 히트맵의 크기를 원래 이미지의 크기로 다시 복원해줄 필요가 있는데 이러한 방법이 *Upsampling 이다.
  • 아래의 예시 부분에서 2번에서 3번으로 넘어갈때 이미지 크기가 커진 부분이 Upsampling이 된 부분이다.

UPSAMPLING 이란?

  • Segmentation 은 픽셀별로 분류를 진행하기 때문에 원래 이미지와 비슷하게 크기를 키워주는 과정이 필요한데 이러한 과정을 의미한다.
  • 기존 Convolution 과는 다른 Transpose Convolution 이 적용되는데 이는 각 픽셀에 커널을 곱한 값에 Stride를 주어 나타냄으로 이미지의 크기를 키워나간다.

* 기존에 배운 CNN에서 사용한 Pooling과 같은 기법은 Downsampling 이라고 한다.

 

2번에서 3번으로 넘어가는 부분이 업샘플링 된 부분

 

댓글