semantic segmentation task와 Fully convolutional network, deconvolution 간단하게 알아보기

1. semantic segmentation

 

이미지의 각 pixel이 어떤 class에 속할지 분류하는 문제

 

 

예를 들어 자율주행자동차의 경우

 

위 그림과 같이 자동차가 보는 이미지에서 어떤 부분이 자동차인지 차도인지 신호등인지 사람인지 인도인지 구별해야 운행이 가능할거다

 

 

2. Fully convolutional network

 

일반적인 CNN 구조는 convolution layer를 여러 층 쌓고 마지막에 flat 시킨 뒤에 fully connected layer를 구성한다

 

일반적인 CNN

 

fully convolutional network는 마지막 dense layer를 없애고자 하는 모형이다

 

이것을 convolutionalization이라고 한다

 

 

flat은 reshape 과정이므로 Parameter 수는 변하지 않는다

 

 

 

3. fully convolutional network는 무슨 효과가 있을까

 

fully connected layer에 의한 값은 결국 하나의 label이 output인데

 

fully convolutional하면 output의 크기가 상대적으로 커서 이미지의 output을 낼수있다는 것이 핵심

 

 

이미지의 픽셀차이로 개와 고양이가 어디에 있는지 알수있게됨

 

이러한 이유로 semantic segmentation 문제에 fully convolutional network가 활용될수있음

 

 

4. Deconvolution

 

사실 fully convolutional network의 output은 input보다 크기가 결국엔 작기 때문에 일부 손실된 정보가 있는 조잡한 output이다.

 

그래서 이것을 dense하게 만들 수 있을까? 쉽게말해 output의 크기를 input의 크기에 맞출 수 있을까?

 

 convolution의 역연산인 deconvolution으로 output의 크기를 키운다

 

 

 

실제로는 convolution의 역연산은 불가능하다. 상식적으로 합쳐버린걸 어떻게 정확하게 다시 복원시킨단말인가?

 

근데 역연산이라고 생각하고 계산하면 쉽다

TAGS.

Comments