Semantic Segmentation

 

  • 의미론적으로 분할하였다는 것. 의미를 갖는 분할 영역을 갖도록 이미지를 분할한다. 정확한 영역을 픽셀 단위로 구분하여 준다.
  • 채널별로 레이블을 나눈다. (ex) Person 채널엔 Person에 해당하는 영역만 1로 Plants/Grass 채널엔 Plants/Grass에 해당하는 영역만 1로..)
  • Pixel-wise loss를 사용한다.
  • 우리가 평소 아는 방식으로 Convolution 연산을 수행하면 연산량이 매우 많아진다. 이를 보완하기 위해서 다음과 같은 구조로 만들게 된다.
    http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf
    위 네트워크 구조는 정보를 압축하는 과정인 Encoding과 압축된 정보를 풀어내는 과정인 Decoding을 거치는 Network이기 때문에 Encoder-decoder network라고 한다.

FCN(Fully Convolutional Network)

 

  • Semantic Segmentation을 맨 처음 제안한 논문
  • 구조
    • https://arxiv.org/pdf/1411.4038.pdf
    • 위의 과정에서 사이즈가 굉장히 크게 줄어든 영상을 2D-Bilinear Interpolation(2차원 쌍선형 보간법) 이용하여 원래의 크기로 되돌려 놓는다.
      https://medium.com/@msmapark2/fcn-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-fully-convolutional-networks-for-semantic-segmentation-81f016d76204
      위 과정을 거쳐 만들어낸 이미지는 해상도가 늘어났다고 하지는 않는다. 새로운 정보가 생기지 않았기 때문이다.(그저 사이즈만 키운 것이기 때문에) 그래서 세밀한 정보를 잃어버리는 정보 손실 문제가 발생하게 된다. 이는 하나의  scale만을 사용해 생긴 문제로, 이를 보완하기 위해서 Multiscale을 활용하게 된다.
      • Multi-scale Prediction
        • https://medium.com/@msmapark2/fcn-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-fully-convolutional-networks-for-semantic-segmentation-81f016d76204
          3번째 풀링 단계에서 나왔던 Feature맵을 가져와서 1X1 Convolution을 거쳐 28x28 Feature map을 생성하고, 4번째 풀링 단계에서 나온 Feature맵을 가져와 1x1 Convolution을 거쳐 14x14 Feature map을 생성한다. 그리고 최종 Upsampling 과정 전 나온 Feature map을 우선 2배만큼 Upsampling하여 14x14 Feature map으로 만든 후 4번째 풀링 단계에서 나온 Feature map과 합 연산을 한다. 이를 2배만큼 UpSampling하여 3번재 풀링 단계에서 나온 Feature맵과 합 연산을 하고 여기서 나온 Feature 맵에 8배만큼 Upsampling을 한다. 이 때 나온 Feature map은 최종적으로 Upsampling된 Feature map보다 정보를 더 많이 갖고 있다. 그래서 이 둘의 정보를 결합해 Segmentation 품질을 개선하였다.

          위 Upsampling을 보면 노란색이 아닌 빨간 색으로 칠해져 있는 Upsampling이 있다. 이 Upsampling은 학습이 가능한(Trainable) Backwards convolution(=Strided convolution, Transpose convolution, deconvolution)을 사용하고 있다. 
          https://medium.com/apache-mxnet/transposed-convolutions-explained-with-ms-excel-52d13030c7e8
          제대로 Upsampling이 되도록 하는 Weight를 학습한다.

 

PSPNet

UNet

 

 

 

Mask-RCNN (Faster RCNN(Object Detection) + FCN(Object Segmentation))

 

https://developpaper.com/mask-r-cnn/

 

Faster RCNN과 유사하지만 마지막 부분에 mask를 씌우는 부분에 변화가 있다.

앞 부분(Faster RCNN부분)에서 인코딩된 영상이 Mask를 씌우는 부분에서 디코딩된다고 봐도 된다.

 

  • ROI Align
    • https://towardsdatascience.com/understanding-region-of-interest-part-1-roi-pooling-e4f5dd65bb44
    • ROI Pooling을 진행하며 정보 손실이 일어나게 된다.(위 그림에선 맨 아랫줄 부분) 그래서 ROI Pooling이 아닌 ROI Align이라는 개념이 나오게 되었다.
    • https://erdem.pl/2020/02/understanding-region-of-interest-part-2-ro-i-align
    • 하나의 그리드 안에서 가로, 세로로 3등분으로 하여 4개의 좌표값을 얻어낸다. 
      4개의 좌표값 각각 4개의 좌표를 제외하고 알고 있는 좌표 중 좌표값에 가까운 좌표들의 Bilinear Interpolation equation을 구한다.
    • 그렇게 해서 나온 값 중에서 Max Pooling을 하게 된다. 이렇게 하면 Roi Pooling을 했을 때보다 정보 손실의 값이 적어진다고 한다.

Stacked Hour Glass Model

 

https://arxiv.org/pdf/1603.06937.pdf

Pose Estimation 혹은 Face Mesh와 같은 곳에 이용되는 히트맵들을 결과로 내주는 모델이다.

 

+ Recent posts