Sementic Segmentation 이란 위 그림(오른쪽)과 같이 이미지 혹은 영상 속 object들을 pixel 단위로 분류하는 classification 입니다. 일반적으로 Object Detection을 수행하면 각각의 object가 box로 구분되는 것과는 차이가 있습니다.
SegNet
Sementic Segmentation 은 다른 computer vision task 들과 같이 머신러닝을 적용하고 고무적인 발전을 이뤘지만 Fine grained 한 결과를 얻지 못하는 문제가 있었습니다. CNN network에 포함된 max pooling, sub-sampling 연산이 feature map의 해상도를 떨어뜨리기 때문입니다. 저자는 저해상도 feature map을 input 해상도로의 mapping이 SegNet의 motivation이라고 말합니다.
SegNet Architecture
Object Detection paper는 몇개 본적이 있지만 Segmentation 은 처음인데 생소하게 Encoder, Decoder라는 단어를 사용합니다. 이런 구조를 통해 3가지의 이득을 얻을 수 있다고 합니다.
- Boundary 표현 개선
- Parameter 수 감소
- Encoder-Decoder 구조 모델에 쉬운 적용
Encoder
이런 Downsampling 연산과정을 Encoder라고 부르는것 같습니다. SSD(Single-Shot-Detection)에서 뒤에 FC layer를 걷어내고 다양한 사이즈의 Feature map을 얻기위해 Conv layer들을 붙인게 비슷하다면 비슷하다고 할 수도 있겠네요.
위의 그림에서 볼 수 있듯이 Encoder Network는 13개의 Conv block(Conv + BN + ReLU)로 구성되어 있는데, 이는 VGG16 classification network입니다. Conv block 뒤에 Max-pooling layer가 따라붙는데 pooling을 함으로써 parameter수가 줄고 네트워크가 강건해지는 효과는 생기지만 feature map의 resolution이 감소합니다.
따라서 Downsampling을 하기전 boundary 정보를 저장할 필요가 있는데 만약 메모리가 충분하다면 feature map 자체를 유지하겠죠. 하지만 이는 비현실적이기 때문에 SegNet에서는 Max-pooling window 내의 가장 큰 값의 인덱스만 저장합니다. 2x2 max-pooling이기 때문에 1개의 window당 2-bit이 필요합니다.
Decoder
Decoder는 Encoder에서 저장한 max-pooling 인덱스를 이용해 upsampling(unpooling)을 합니다. 이 과정을 수행하면 sparse feature map이 생성됩니다. 찾아보니 Upsampling 하는 방법은 여러가지가 있는 것 같습니다. 찾아보니 테플리츠 행렬을 이용하는 Transpose Convolution 이라는 것도 있는데 SegNet에서는 위 그림처럼 encoder network의 끝단에서 나온 output을 unpooling을 수행하고 바로 Convolution을 수행하는것 같습니다. 그리고 맨 마지막 layer인 soft-max를 거치게되면 pixel-wise classification된 결과를 얻게 됩니다.
Decoder Variants
- SegNet-Basic : Smaller version of Segnet with 4 encoders, 4 decoders
- FCN-Basic : Comparable version of FCN which shares the same encoder network as SegNet-Basic but with the FCN decoding technique
- SegNet-Basic-SingleChannelDecoder : Same as SegNet-Basic, but with single channel decoders
- FCN-Basic-NoAddition : FCN with no skip connection
- Bilinear-Interpolation
- SegNet-Basic-EncoderAddition : Adding 64 feature maps at each layer to corresponding featuremap
- FCN-Basic-NoDimReduction
Experiments
'Vision' 카테고리의 다른 글
SENet(Squeeze-and-Excitation Networks) (0) | 2022.01.05 |
---|---|
1x1 Convolutions & Inception Module (0) | 2022.01.04 |
Pseudo-LiDAR from Visual Depth Estimation:Bridging the Gap in 3D Object Detection for Autonomous Driving (0) | 2021.11.21 |
Introduction - Attention (0) | 2021.10.31 |
Complex-YOLO: Real-time 3D Object Detection on Point Clouds (0) | 2021.09.12 |
댓글