[CV] Semantic Segmentation

조성운·2023년 3월 30일
0

BoostAI

목록 보기
3/3

Semantic Segmentation은 영상단위가 아니라 픽셀단위로 분류를 하는 task이다. 동일한 클래스를 구분하지는 않는다. 동일한 클래스에 속하는 객체를 구분하는 경우 instance segmentation이라고 하며 이를 포함한 넓은 도메인이 panoptic segmentation이다.

  • Fully Convolutional Networs(FCN)
  • U-Net
  • DeepLab

Fully Convolutional Networks(FCN)

최초 End-to-End semantic segmentation 모델로 1x1 conv를 사용하였으며,

  • Image Classification : CNN + Fully connected layer
    • spatial 정보가 없어진다.
  • Semantic segmentation : CNN + Fully convolutional layer by 1x1 convolutions
    • spatial 정보를 보존할 수 있다.

Fully convolutional layer 특징

  • spaical 정보 보존
  • 넓은 recpetive field 반영
  • Fully connected layer와 연산 과정은 동일하다.

Fully connected layer를 사용하는 분류 문제의 경우 convolution 결과 피쳐맵을 채널 축으로 flatten 한 후 FC layer에 입력하게 된다. 모든 정보가 벡터화 되기 때문에 spatial 정보가 없어진다. 반면 Fully convolutional layer를 사용하게 되면 출력 결과가 피쳐맵 형태이기 때문에 공간 spatial 정보가 보존된다고 볼 수 있다.

CNN 기반의 네트워크를 통과하게 되면 output 크기가 작아지기 때문에 출력 결과 피쳐맵은 저해상도이다. output 크기가 작아진다는 의미는 픽셀의 개수가 줄어든다는 의미이므로 고해상도가 아닌 저해상도의 피쳐맵이 출력된다. 이는 최종 출력 결과에서 하나의 픽셀이 입력 이미지에서 보다 넓은 receptive field를 반영하기 위해서이다. 하지만 저해상도 의미지를 사람이 보기에는 불편하므로 FCN에서는 upsampling 과정을 진행한다.

Upsampling

  • Transposed convolution
    • 일부분만 overlapping되는 문제 발생한다.
    • 중첩되는 부분은 더해지므로 해당 부분이 안 생기도록 적절한 stride, kernel_size를 조절해야 한다.
  • Upsample and convolution
    • Nearest-neighbor (NN), Bilinear을 통해 균등하게 overlapping되도록 구현하고 이후에 convolution을 구성한다.
    • 균등하게 overlapping해서 학습된 가중치로 upsampling 되도록 한다.

FCN 모델은 최종 1x1 convolution을 통과한 피쳐맵을 upsampling한 후 ground truth(target 값)과의 loss를 통해서 학습한다. 이때 중간 과정에서 나오는 activation map(피쳐맵)을 upsampling해서 더한 값을 ground truth와 비교하게 된다.

  • FCN-32s : 마지막 피쳐맵만 사용
  • FCN-16s : 중간 부분까지 피쳐맵을 upsampling해서 사용
  • FCN-8s : 앞 단의 피쳐맵까지 upsampling해서 사용

일반적으로 CNN 네트워크는 앞단에서는 detail 정보를 학습하고, 뒷단에서는 coarse한 정보를 학습한다. 앞단의 receptive field는 뒷 단보다 영역이 작기 때문에 모서리, 윤곽과 같은 부분적인 세세한 영역을 학습하게 된다. 반대로 뒷단의 경우 recptive field가 넓기 때문에 하나의 픽셀이 많은 정보를 가지고 있어 뒷단의 경우 전체를 반영한 추상적인 정보를 저장하고 있다. FCN에서는 앞단과 뒷단의 activation map을 모두 반영하여 앞단에서는 모서리와 같은 구체적인 정보, 뒷단에서는 추상적인 정보를 가져와 최종 결과를 더 자세히 나타낼 수 있다.

그외 Segmantion model

  • U-Net
  • DeepLab
    • Dilated convolution : kernel이 부터있지 않고 일정 간격을 유지한체 convolution 연산을 진행한다.
    • Depthwiase separable convolution → 기존의 convolution보다 연산 결과를 줄인다.
      • Depthwise convolution
      • Pointwise conolution
profile
일단 적을게요

0개의 댓글