semantic segmentation task와 Fully convolutional network, deconvolution 간단하게 알아보기
1. semantic segmentation
이미지의 각 pixel이 어떤 class에 속할지 분류하는 문제
예를 들어 자율주행자동차의 경우
위 그림과 같이 자동차가 보는 이미지에서 어떤 부분이 자동차인지 차도인지 신호등인지 사람인지 인도인지 구별해야 운행이 가능할거다
2. Fully convolutional network
일반적인 CNN 구조는 convolution layer를 여러 층 쌓고 마지막에 flat 시킨 뒤에 fully connected layer를 구성한다
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의 역연산은 불가능하다. 상식적으로 합쳐버린걸 어떻게 정확하게 다시 복원시킨단말인가?
근데 역연산이라고 생각하고 계산하면 쉽다
'딥러닝 > Computer Vision' 카테고리의 다른 글
DenseNet과 SENet의 핵심아이디어 살펴보기 (0) | 2022.03.13 |
---|---|
변형된 모델 학습방법 - semi-supervised training과 self-training (0) | 2022.03.08 |
가장 좋은 data augmentation이 있을까? (0) | 2022.02.13 |
컴퓨터비전에서 사용하는 기본적인 data augmentation (0) | 2022.02.12 |
ResNet의 핵심 아이디어인 skip connection과 Residual learning (0) | 2022.02.10 |