728x90
이미지 분할(Segmentation)이란?
- 한 이미지 내에서 같은 의미(사람은 사람,차는 차)를 가지고 있는 부분을 구분해내는 것이다.
- 즉 사진의 예시처럼 이미지 내 다양한(사람,자동차,도로,표지판) 등을 픽셀 단위로 레이블을 예측하여 구분하는 것이다.
- 분할은 크게 Semantic Segmentation와 (Semantic) Instance Segmentation로 구별되는데 예시는 아래와 같다.
- 위의 예시처럼 많은 의자를 동일하게 의자 하나로 볼 것인가, 아니면 각 의자마다 레이블을 줄 것인가? 의 차이이다.
분할에 대한 의미는 파악했으니 대표적인 분할 모델인 FCN, U-net에 대해 알아보자
FCN(Fully Convolutional Networks)
- 분할(Segmantation)은 픽셀 단위로 분류가 이루어지기 때문에 픽셀의 위치 정보를 끝까지 보존해야 하기에
기존 CNN 모델의 FCL(완전 연결 신경망)은 고정된 크기의 input 만을 받아야 되는 점과 위치 정보를 알 수 없다는 점에서 이미지 분할에 사용되기 부적절했다. - 위치 정보가 없다는 의미는 이미지의 물체가 어떠한 Class에 속하는지 알지만 이미지 어디에 존재하는지 모른다는 말이다. (즉 위의 의자예시로 보자면 의자가 분할되더라도 어떤의자가 빨간색인지, 보라색인지 모른다는 뜻이다.)
- FCN 모델에서는 마지막 FCL들을 Convolution Layer로 대체함으로써 문제를 해결하였다. 아래 예시를 통해 이해하여 보자
- 기존의 FCL 모델의 예시이다. 모델은 고양이(tabby cat)라는 것을 예측해냈지만, 어디에 존재하는지는 모른다.
- FCL의 층을 1 x 1 형태의 합성곱 층(Convolution) 으로 변환하여 위치 정보가 손실되지 않았으며 아래의 예처럼 어떠한 이미지가 입력되더라도 사용할 수 있게 된다.
- 하지만 합성곱 층을 지나고 얻게 된다면 특정 히트맵의 부분(위 예시에선 고양이와 강아지)의 픽셀값만이 높게 되는데 이러한 이유때문에 히트맵의 크기를 원래 이미지의 크기로 다시 복원해줄 필요가 있는데 이러한 방법이 *Upsampling 이다.
- 아래의 예시 부분에서 2번에서 3번으로 넘어갈때 이미지 크기가 커진 부분이 Upsampling이 된 부분이다.
UPSAMPLING 이란?
- Segmentation 은 픽셀별로 분류를 진행하기 때문에 원래 이미지와 비슷하게 크기를 키워주는 과정이 필요한데 이러한 과정을 의미한다.
- 기존 Convolution 과는 다른 Transpose Convolution 이 적용되는데 이는 각 픽셀에 커널을 곱한 값에 Stride를 주어 나타냄으로 이미지의 크기를 키워나간다.
* 기존에 배운 CNN에서 사용한 Pooling과 같은 기법은 Downsampling 이라고 한다.
'AI > 딥러닝' 카테고리의 다른 글
인공지능과 머신러닝, 딥러닝의 차이는 뭘까? (0) | 2022.07.18 |
---|---|
오토인코더(AutoEncoder, AE) 란? (0) | 2022.05.18 |
합성곱 신경망(Convolutional Neural Network, CNN)이란? (0) | 2022.05.16 |
소프트맥스(Softmax) 함수란? (0) | 2022.05.15 |
Transfomer란 무엇일까? (0) | 2022.05.15 |
댓글