본문 바로가기
딥러닝 with Python

[딥러닝 with 파이썬] (논문 리뷰)SegNet이란?

by CodeCrafter 2023. 11. 1.
반응형

 SegNet은 " SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation" 이라는 논문에 2016년에 등장한 모델로, 이미지의 각 픽셀을 특정 클래스에 할당하는 작업인 Semantic Segementation을 수행하기 위해 개발된 딥러닝 아키텍처입니다.

 

 이 모델은, 인코더-디코더(Encoder - Decoder) 구조 / 풀링 인덱스 사용 / 경량화된 네트워크 라는 특징을 갖고 있는 모델로서, 도로를 촬영한 영상 장면을 분할하고 내시경 이미지 분석, 위성 이미지 분석 등 다양한 응용분야에서 좋은 성능을 보여주는 모델입니다 .

 

 

1. SegNet이란

1) SegeNet이란

 

- 해당 논문 발표 이전 기존의 모델들에서는 semantic segementation 모델들의 해상도가 떨어진다는 단점으로 인해, 차가 다니는 차도와 사람이 다니는 보도를 구분하기가 제한되었습니다. 자율주행 분야에서 이러한 문제가 발생한다면 큰 사고로 이어질 수 있기에 해결해야 되는 문제인데요. 

 

- 기존 Segmenation 모델에서 활용한 Max pooling, sub sampling 연산이 수행되면 coarse 한 feature map이 만들어지게되어 정교한 feature map이 나오지 못하게 됩니다.

 

* 위 이미지는 4x4 행렬에 2x2 max pooling을 한 결과이며, 이 과정을 통해 원본 행렬의 크기가 줄어들고, 픽셀 중 가장 큰 값을 가지고 있는 부분의 정보만을 유지하게 됩니다. 이로 인해, 원본 이미지보다는 더 축약된 정보를 가지고 있다는 장점이 있지만, 반대로 축약되었기 때문에 생략된 정보들 또한 많음을 알 수 있습니다.

 

- 이전 포스팅에서 알아본 FCN(Fully Convolutional Network)에서는 Skip Architecture라는 방법을 활용해 Down Sampling 과정에서 가지고 있는 지역정보와 Up sampling 과정에서 나타나는 축약정보를 서로 더해주어 보다 정교한 Semantic Segmentation을 수행할 수 있었습니다. 하지만, 이러한 방법에 있어서도 한계는 존재했고 보다 더 정교한 Semantic Segmentation 수행이 필요했습니다. 

 

- 또한, 자율주행을 위해서는 보다 정확도 뿐만 아니라 실시간으로 입력되는 이미지를 최단시간내에 처리해야되는 요구사항이 있고, 이를 해결하기 위해 빠르게 연산이 가능한 Network를 만들어야 한다는 제한사항이 있었습니다.

 

- 위에서 언급한 "정교한 Segmentation" 과 "빠른 연산속도"라는 문제를 해결하기 위해 2016년에 등장한 모델이 SegNet입니다. 

 

 

2) SegNet의 네트워크 구조

 

- SegNet의 구조는 아래 그림을 통해 설명할 수 있습니다. 개략적인 네트워크에 대한 설명은 아래와 같습니다.

* (Fully Connected Layer가 없음)그림 설명에서 보시는 것처럼, 기존 Classification Network(ex. VGG Net, Google Net 등) 가 가지고 있었던 Fully Connected Layer가 없으며, 오직 Convolutional Layer 만으로 구성이 되어 있습니다. 이는, 다양한 크기의 입력 이미지를 처리하고 모델의 매개변수 수를 줄여 효율성을 높이는 데 도움이 됩니다.

*(Spares feature map에서 Desified feature map으로) Decoder(Upsampling 하는 부분)에서 고유한 업샘플링 메커니즘은 Encoder에서의 Max pooling indices를 사용하여 Sparse feature map을 생성하는 것입니다. 이 feature map은 학습 가능한 filter bank와 함께 밀집화되어 픽셀 단위 분류를 위해 더 세밀한 세부 정보를 포착하게 됩니다.

* (Pixel-wise Classification) 네트워크의 최종 출력은 입력 이미지의 픽셀 단위 분류로 도출되게 됩니다.

 

 

- 보다 세부적으로 네트워크의 구조에 대해서 알아보겠습니다.

 

1) Encoder Network

* Encoder Network는 위 그림에서 feature map의 크기가 작아지는, 파란색(Conv + Batch Normalization + ReLU) 층과 빨간색(Upsampling) 층으로 구성된 우측 부분을 말합니다.

* 본 논문에서는 VGG16의 구조를 활용하였으며, VGG16에서  FC(Fully Connected) Layer를 제외한 13개의 Layer를 사용해 연산량을 줄였습니다.(이미지 Classification이 아니므로 굳이 FC Layer가 있을 필요도 없습니다)

 

 

2) Decoder Network

* Decoder Network는 위 그림에서 feature map의 크기가 작아지는, 파란색(Conv + Batch Normalization + ReLU) 층과 초록색(Pooling) 층으로 구성된 좌측 부분을 말합니다.

* Decoder Network는 각 Encoder Network와 대응되어 존재합니다. (Mirrored)

* Encoder의 Pooling layer 부분이, Decoder에서는 Upsampling layer로 대체되어 존재되어 있으며 그 순서 또한 Encoder 부분과 반대됩니다.

 

*SegNet의 Decoder에서는 정교한 Segmentation과 빠른 연산을 위해, Encoder의 Max pooling indices만을 전달받아 Max Unpooling을 진행합니다. 

 

 

* 위 그림은 SegNet과 FCN의 디코더 적인 측면에서의 차이점을 기술하고 있는데요

  a) SegNet의 경우, Max pooling Indices를 사용해 비학습방식(without learning)으로 업샘플링을 진행합니다. 예를 들어, 인코더에서의 Max pooling indices가 feature map의 영역에서 'd'를 선택했다면, 디코더에서의 업샘플링 연산은 2x2 영역에서 해당 위치에 'd'값을 배치하고 다른 값들은 0으로 한 희소 특징맵(sparse feature map)을 만듭니다. 

 이후, 희소 특징맵은 학습 가능한 디코더 필터 뱅크와의 합성곱을 통해 밀집화되어 디코더 출력을 생성하게 됩니다. 

 b) FCN의 경우, Deconvolution을 통해 업샘플링을 하고, 인코더 부분에서 동일한 크기의 특징맵을 서로 더해주는 스킵 커넥션을 하게됩니다. 이 과정에서 SegNet과 달링 학습가능한 Decoder Filter Bank가 없습니다.

 c) 이 둘을 비교해보면, 디코더 부분에서 차이가 발생하는데요. SegNet에서는 Max pooling indices만을 사용해 Sparse 한 feature map이 만들어지지만 학습 가능한 Decoder Filter Bank가 있기 때문에 학습 과정에서 더 정교해질 수 있습니다. FCN에서는 인코딩 과정에서 도출된 feature map 자체를 활용해 더해준다는 특징이 있지만, 추가적인 학습을 통해 정교해질 수 있는 학습 가능한 부분이 없다는 점이 특징입니다.

 -> 즉, SegNet은 max pooling indices만을 사용했기 때문에 모델이 더 경량화 된다는 점과 trainable filter bank를 사용했기때문에 학습이 진행될수록 더 정교해지는 결과를 만들어 낼 수 있다는 점이 특징입니다.

 

 

3) Softmax Classifier

- Decoder의 Output은 각 픽셀마다 특정 Class에 속할 독립적인 확률 값을 제시해주며, 이를 통해 가장 확률이 높은 클래스가 해당 픽셀의 클래스로 출력되게 됩니다.

 

 

2. 결과

- SegNet의 성능을 비교하기 위해 두 개의 Data set을 사용하여 다양한 모델들과 비교를 하였습니다. 사용된 데이터 셋은 1) Camvid data-set for Road Scene Segmentation 과 2) SUN RGB-D Dataset for Indoor Scene Segmentation 입니다.

 

1) Camvid data-set for Road Scene Segmentation

- 다양한 모델들과 비교했을 시, 해당 데이터에서 Sign-Symbol과 Road를 제외한 모든 Class에서 SegNet의 결과가 더 좋음을 알 수 있습니다. 

 

- Deep Learning 접근법과 비교했을 때 SegNet은 G(Global average accuracy)와 C(class average accuracy), 그리고 mIOU와 BF(Boundary F1-measure) 모두 가장 높았음을 알 수 있습니다. 

Output을 시각화했을때도 SegNet의 결과가 더 Ground Truth와 유사함을 알 수 있습니다.

 

 

2) SUN RGB-D Dataset for Indoor Scene Segmentation

이 결과는 다른 딥러닝 방법과의 비교이며,  mIOU에서 DeepLabv1이 가장 우수하였지만 나머지는 SegNet이 가장 우수함을 알 수 있습니다.

 

- Class average accuracy에서도 실내 장면에서의 각 클래스의 사이즈별로 그 퍼포먼스가 잘 연관되어 있음을 확인할 수 있다.

 

Output을 시각화한 측면에서도 SegNet의 결과가 Ground Truth와 가장 유사함을 알 수 있다. 

 

 

 

[본 리뷰는 아래 제시된 논문과 블로그 포스팅을 참조했습니다]

https://arxiv.org/pdf/1511.00561.pdf (SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation)

https://wikidocs.net/148875

 

2) SegNet

SegNet은 2016년에 공개된 모델로, 도로를 달리면서 촬영한 영상(road scene)에 대해 pixel-wise semantic segmentation 하기 위해 설계된 …

wikidocs.net

https://kuklife.tistory.com/120

 

[Semantic Segmentation] SegNet 원리

* 논문 : https://arxiv.org/pdf/1511.00561.pdf 1. Semantic Segmentation의 목적 : https://kuklife.tistory.com/118?category=872136 2. Semantic Segmentation 알고리즘 - SegNet SegNet 논문은 2016년 10월 경, Vijay Badrinarayanan, Alex Kendall, Robe

kuklife.tistory.com

 

반응형

댓글