부스트 캠프 ai tech 8주 2일차 Sementic Segmantation


Semantic segmentation

  • 이미지의 픽셀단위로 Classification을 수행하는 Task
  • 의료분야에서나 자율주행, 영상편집 등의 분야에서 다양하게 사용된다.

Fully Convolutional Networks (FCN)

  • KeyPoint : 기존 fully connected Layer(fc Layer)를 Convolutional Layer로 대체하면서 fc Layer의 문제점을 해결하고 Semantic Segmentation까지 end to end로 구현한 모델
  • 기존의 Classification 모델들은 마지막 Layer를 fc Layer로 구성하기 때문에 고정된 input 이미지 사이즈를 가져야 했지만 1 x 1 Convolution Layer를 사용하면서 가변적인 input 이미지를 사용할 수 있게 되었다

  • 맨 마지막 단에 Upsampling을 시행하여 해상도를 맞춰주어 Segmentation을 한다

    • Transposed Convolution
  • 아래와 같은 특징을 골고루 가지기 위해 중간단계의 map을 Upsampling을 해서 가져와 더한다. 단계별 Map들이 합쳐지면서 더 좋은 Segmantaion 이 가능했다.

    • Layer를 적게 거칠수록 이미지의 지역적이고 세부적인 부분에 집중한다
    • Layer를 많이 지나가면 이미지의 전체적인 부분에 집중한다

U Net

  • FCN을 유사한 구조를 가진 Segmentation 모델
  • Feature를 추출하는 Contracting 과정과 Upsampling을 단계적으로 진행하는 Expanding 과정으로 나뉜다
  • Contracting Path
    • 한번의 과정이 끝날 때 마다 Channel 수를 2배로 늘린다
    • 기존의 FCN의 추출과정과 비슷하다
  • Expanding Path
    • 해상도를 2배씩 늘리면서 점진적으로 Upsampling을 진행한다
    • 반대로 Channel수는 절반으로 줄이면서 진행한다
    • Contracting 과정에서 대칭으로 대응되는 Layer에서 나온 Map과 Concatenating을 진행해서 Fusion 시킨다
  • 주의할점
    • MaxPooling을 통해서 크기를 반으로 점진적으로 줄이고 다시 Upsampling을 통해 2배씩 늘려나가기 때문에 이미지 사이즈가 홀수일 경우 차원이 맞지않아 계산이 불가능하다

DeepLab

  • 구글에서 2018년에 작성된 논문으로 그 당시 좋은 성능을 보여주었다
  • 모델의 특징으로는 Dilated convolution와 Depthwise separable convolution를 이용하여 파라미터 수를 줄이면서 성능을 유지시켰다
  • 본 글에서는 논문의 주된 특징인 Dilated convolution와 Depthwise separable convolution Layer에 대해서 다룬다

Dilated convolution

  • Atrous Convolution 이라고도 한다
  • 필터 내부에 빈 공간이 존재하는 Convolution Layer를 말한다
  • parameter r을 조절하여 내부의 빈 공간의 크기를 조절 할 수 있다
    • 1일 경우 기본적인 Convolution Layer와 동일
  • 동일한 양의 파라미터와 계산량을 유지하면서 한 픽셀이 볼 수 있는 영역을 크게 할 수 있다.
    • 기존에 한 픽셀이 볼 수 있는 영역을 크게 하기위해서는 Kernel Size를 키워야 했는데 이는 필연적으로 파라미터와 계산량의 증가가 따라온다
    • 이미지 데이터의 경우에는 한 픽셀 주위의 픽셀이 어느정도 연관이 되어있다고 가정할 수 있기 때문에 가능한 방식으로 생각된다

Depthwise separable convolution

  • 기존 Convolution Layer의 연산을 2단계로 분리시켜서 사용되는 파라미터 수를 획기적으로 줄인 방법이다
  • Convolution Layer에서는 Channel축을 필터가 한번에 연산하지만, Depthwise separable convolution Layer에서는 Channel을 분리해서 1의 길이를 가지는 여러개의 Feature로 만들고 여기에 1 x 1 x 채널길의 크기의 필터를 다시한번 적용하여 연산을 하는 방식을 취한다
  • 이를 통해서 기존 연산에서는 $H \times W \times C \times n$ 개의 파라미터가 필요 했지만 Depthwise separable convolution 연산에서는 $H \times W \times C + C \times n$ 개의 파라미터가 필요하게 되어 수를 더욱 줄일 수 있었다.

reference

부스트 캠프 ai tech 8주 1일차 CNN architectures


Image Classifier

  • 이미지를 분류하는 기본적인 모델을 말한다
  • 충분한 데이터가 존재한다면 모든 분류문제는 K-Nearest Neighobors로 해결이 가능하다.
    • 영상 분류 문제를 검색 문제로 바꿔서 해결이 가능하다
    • 하지만 데이터는 너무 많고, 우리의 머신 리소스는 한정적이기 때문에 모든 문제를 해결하기에는 적합하지 않다
    • 데이터 수에 비례해서 시간복잡도가 증가한다
  • 초창기에는 single Fully Connected Layer를 이용해서 분류 문제를 해결하려 했다
    • 레이어층이 적다보니 평균적인 이미지에서 벗어나면 잘 작동하지 않았다(test 성능이 좋지 않았다)
  • 이미지를 전체적으로 보는것이 아닌 부분적으로 파라미터 연산을 하는 Locally Connected Layer가 등장하였고 Convolution Layer의 전신이 되었다

Data Augmentation

  • 우리가 모델을 학습시킬때 사용하는 Data는 실제 전체 데이터에서 샘플링한 극히 일부의 데이터이다. 또한 데이터를 제작한 사람의 주관또한 들어가 있을 가능성이 존재하기 때문에 Train Data의 분포가 실제 데이터와 일치한다고 보기 힘들다. 이를 보안하기 위해서 Data의 분포를 다양하게 만드는 방법을 Data Augmentation이라고 한다.
  • 기본적인 Augmentation
    • 밝기, 채도, 명암 조절
    • Random Crop, Filp, Rotate
    • Affine Transform : 기하학적 변환
      • warp로 시작하는 함수
  • 특수한 Augmentation
    • CutMix : 두개의 사진을 잘라서 합치는 Augmentation. 라벨값 또한 비율에 맞게 조절한다
  • MixUp : 두개의 사진을 Alpha값의 조절을 통한 픽셀을 합치는 Augmentation. 라벨값 또한 비율에 맞게 조절한다

Transfer Learning

  • 기존에 학습시킨 네트워크를 이용하여 새로운 Task를 해결하는 모델에 재학습 시키는 방법
  • 학습시키는 Dataset이 비슷한 분포를 가지고 있어야 더욱 잘 학습 된다.
  • Layer Freeze
    • 특정한 Layer의 Parameter를 Freeze시켜서 고정시키고 나머지 Layer로만 학습시키는 방법
    • 데이터의 양이 적을때 효과가 좋다
  • Fine Tuning
    • 새로 추가된 Layer의 Learning Rate와 기존 CNN 부분의 Learning Rate를 다르게(기존 부분을 더 작게) 설정하여 Tuning하는 방법
    • 어느정도 데이터가 존재할때 효과가 좋다

Knowledge distillation

  • Teacher Student Learning
  • 큰 모델에서 학습한 weight를 작은 모델에도 비슷하게 작동하게 전달하는 기법
    • 최적화방면에서도 많이 이용된다.

reference