ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Segmentation] DeconvNet, SegNet, FC DenseNet, Unet, DeepLab, DilatedNet
    CS 공부/AI 2023. 6. 6. 19:01

    FCN의 한계점


    1. 객체의 크기가 크거나 작은 경우 잘 예측을 못함
      • 큰 object의 경우 지역적인 정보로만 예측
      • 같은 object여도 다르게 labeling
      • 작은 object가 무시되는 문제 (max pooling)
    2. Object의 디테일한 모습이 사라지는 문제 발생
      • Deconvolution의 절차가 간단해서 물체의 경계를 학습하기 어려움

     

    Decoder을 개선한 모델들 (DeconvNet, SegNet)


    DeconvNet

    Conv=Conv-Batch Norm-MaxPooling, Decoder에서는 Deconv 3개를 통해 sparse한 matrix를 dense하게 만들어줌

    • Architecture
      • Decoder와 Encoder을 대칭으로 만든 형태
      • Encoder(Conv-Conv-Pooling - 7x7 conv) - 1x1 conv - Decoder(7x7 Deconv - Unpooling - Deconv - ReLU)
      • Convolution Network는 VGG16 사용
        • 13개의 층으로 이루어짐
        • ReLU와 Pooling이 convolution 사이에서 이루어짐
      • Decoder(Deconvolution Network): Unpooling과 Transposed Convolution이 반복적으로 이루어진 형태
        • Unpooling을 통해서 Pooling시에 지워진 경계 정보를 기록했다가 복원, 학습할 필요 없어 속도가 빠름
        • 하지만 sparse한 activation map을 가지기 때문에 Transposed Convolution으로  input object 모양을 복원
          • Low layer의 경우 전반적인 모습을 잡아냄 (직선, 곡선, 색상 등 local feature)
          • High layer의 경우 구체적인 모습을 잡아냄 (복잡하고 포괄적인 개체 정보 global feature)
    정리하자면 unpooling의 경우 example-specific(자세한) 구조를 잡아내고 transposed conv의 경우 class-specific한 구조를 잡아냄. 이 두개를 병행하면 FCN보다 DeconvNet의 activation map이 디테일해짐

     

    SegNet

    • Real-time Semantic Segmentation이 가능하게 함

    DeconvNet과 다른점

    1. DeconvNet과 다르게 가운데 7x7 conv,deconv, 1x1 conv을 없앰으로써 파라미터 수 감소시킴 -> 속도 향상
    2. Decoder에서 Deconv대신 Conv 사용
    3. Score 부분에서 1x1 conv 대신 3x3 conv 사용

    DeconvNet은 성능에 집중 SegNet은 속도에 집중

     

     

    Skip Connection을 적용한 모델들 (FC DenseNet, UNet)


    FC DenseNet

    • skip connection: Neural network에서 이전 layer의 output을 일부 layer을 건너 뛴 후의 layer의 입력으로 제공
    • Architecture
      • skip connection을 활용
      • FCN과 달리 채널별로 concatenate를 진행

     

    Unet

    • Architecture

     

     

    Receptive Field를 확장시킨 모델들 (DeepLab v1, DilatedNet)


    • receptive field: 뉴런이 얼마만큼의 영역을 바라보고 있는지. receptive field가 넓을수록 물체를 더 잘 인식할 수 있음
      • receptive field가 작으면 물체에 대한 정보를 부분적으로 포함하여 segmentation의 예측 정확도가 떨어짐
    • Conv - Max pooling - Conv를 반복하면, 효율적으로 receptive field를 넓힐 수 있음 (+ 노이즈 제거, 메모리 효율성)
      • 그러나 Max Pooling(downsampling - convolution - upsampling)을 진행하면 해상도가 많이 낮아짐

    DeepLab v1

    이미지의 크기는 많이 줄이지 않고 파라미터 개수도 변함없는 채로 receptive field만 넓힐 방법이 없을까?
    "Dilated Convolution": 이미지의 크기를 적게 줄이면서도 효율적인 receptive field를 넓히는 방법
    (dilation rate를 주어 내부 값을 0으로 padding)

    • Architecture
      • 2x2 Max Pool -> 3x3 Max Pool (stride=2, padding=1)으로 receptive field 넓힘
      • conv4에서 stride=1, padding=1로 크기에 변동 없음
      • conv5에 dilated conv 사용하여 receptive field 넓힘
      • fc6 ~ score로 크기가 1/8로 줄어들고 Bi-linear interpolation으로 8배 키워줌
        • Bi-linear interpolation 보간법: 원본 영상을 n배 확대할 때 원본 영상의 값을 그대로 받지 못하는 빈 cell이 생기는데 이때 빈 cell을 내적 계산처럼 채워서 더 smoothing한 영상 출력

     

    • Dense Conditional Random Field (Dense CRF) 후처리 (input: 이미지, 물체가 존재할 픽셀의 확률) 
      1. DeepLab v1을 이용해 segmentation 수행
      2. 계산된 확률 및 이미지를 CRF에 입력
        • 유사한 색상의 픽셀이 가까이 위치하면 같은 범주
        • 유사한 색상이어도 픽셀 거리가 멀면 같은 범주로 치지 않음
      3. 여러번 반복 수행
      4. 다른 class에 대해서도 같은 과정 수행
      5. 각 픽셀 별 가장 높은 확률을 갖는 class를 선택하여 최종 결과 도출
    DeepLab 전체 segmentation 과정
    input -> deep conv neural network -> score map -> bi-linear interpolation -> fully connected CRF -> Output

     

    DilatedNet

    Only Front-End Module
    Front + Basic Context module (정보를 더 복잡하고 좋게 만들어줌)

    • DeepLab과의 차이점
      • 3x3 maxpooling 대신 2x2 maxpooling 사용
      • conv4, conv5에서 max pooling 사용하지 않음
      • fc6에서 3x3 dilated conv 대신 7x7 dilated conv 사용
      • upsampling 과정에서 Bi-linear interpolation 대신 Deconv 사용

     

Designed by Tistory.