- Image classification은 사진이 주어졌을 때 사진 전체를 카테고리로 분류한다
- 반면 Semantic Segmentation은 사진이 주어졌을 때 사진 내 각 픽셀을 카테고리로 분류하는 task 이다
- 즉, 하나의 사진이 아닌, 사진에 있는 모든 물체들을 분류한다는 것이다
- 여기에서는 먼저 최초의 end-to-end segmentation 모델 FCN을 시작으로 Hypercolumn 모델을 배운다
- 다음으로 segmentation의 breakthrough라고 볼 수 있는 UNet 모델에 대해 공부하고 Pytorch 코드 실습을 한다
- 끝으로 최근까지 좋은 성능을 보이고 있는 DeepLab v3에 대해 배운다
The first end-to-end architecture for semantic segmentation neural net
Take an image of an arbitrary size as input, and output a segmentation map of the corresponding size to the input
AlexNet의 경우는 convolution layer 뒤 쪽에 flattening 파트를 통해 벡터화를 시켜놓는데 이렇게 되면 입력 해상도가 호환되지 않으면 학습된 FC layer를 사용하지 못하는 한계가 있었다
FCN은 위와 같은 문제가 없는 네트워크 디자인이다
Fully connected vs Fully convolutional
Interpreting fully connected layers as 1x1 convolutions
아무리 upsampling을 했다해도 해상도가 이미 줄어든 상태에서 잃어버린 정보를 다시 살리는 일은 쉽지 않다
Adding skip connections for enlarging the score map
이 두 특징을 모두 확보하기 위해서 다음과 같이 fusion을 한다
Integrates activations from lower layers into prediction
Preserves higher spatial resolution
Captures lower-level semantics at the same time
Features of FCN
FCN-32s : 맨 마지막 activation map만 사용한 결과
FCN-16s : 적당히 다른 중간 단계의 activaton map과 합친 결과
FCN-8s : 좀 더 많이 다른 중간 단계의 activation map과 합친 결과
정리하면 FCN은 모두 neural network로 구성되어 있기에
핵심 2가지
Conditional Random Field (CRFs)
Dilated convolution (Atrous Convolution)
Depthwise separable convolution (proposed by Howard et al.)