2 분 소요

스탠포드대학에서 발표한 CNN 강의 영상을 듣고 자료를 정리했습니다.

Lecture 11 | Detection and Segmentation

컴퓨터 비전 기술은 4가지로 구분할 수 있다.
Untitled

  1. Semantic Segmentation
  2. Classification + Localization
  3. Object Detection
  4. Instance Segmenation


1. Semantic Segmentation

Untitled

  • Semantic Segmentation은 픽셀로 모든 사물 구분한다.
  • 전체 이미지에 하나의 카테코리를 할당하는 것이 아니라 픽셀 별로 카테고리를 할당한다.
  • 단점: 객체들의 개수는 파악할 수 없다.
    • 두 마리 소도 Cow 카테고리로 묶어버림 (두 마리 소라고 구분 못함)
    • instance segmentation에서 단점 해결함


방법1 Sliding Window

Untitled

  1. 이미지를 작은 patch들로 쪼갠다
  2. 기존 이미지 분류했던 것처럼 각각의 patch들로 classification(patch의 중심 픽셀이 의미하는 카테고리가 뭘까?)을 진행한다.
    • 단점
    1. 매 patch 픽셀 마다 분류 연산 → 계산적으로 비용이 많이 든다
    2. patch 마다 겹쳐지는 부분이 많아 같은 Conv layer을 지날 수가 있게 된다.
    3. Conv layer에 넣고 출력되는 모든 픽셀에 score 적용 → spatial size를 유지해야하므로 계산 비용 크다



방법2 Fully Convolutional Network

Untitled

  • 전체 이미지를 Conv Layer에 넣는다.
  • 모든 픽셀에 대해서 분류 연산을 해야한다
  • 단점
    • Convolution들이 input 이미지와 같은 spatial size를 유지하는데 Channel의 숫자도 커지면 → 메모리적 비용이 매우 높다.



개선된 방법: Down Sampling & Up Sampling

Untitled

  • 모든 Conv layer들이 input 이미지의 해상도를 유지하는 대신 원본 해상도를 가진 layers의 수를 줄이고 특성 맵을 down sampling한다. 이후에 up sampling을 하며 input 이미지의 해상도가 같도록 한다.
  • 이미지 분류: FC-Layer : Spatial Resolution을 키운다 → input 이미지의 해상도와 같다.
  • spatial size가 작은 feature map이 많이 존재하여 깊은 Network를 형성한다.
  • Down Sampling 방법: Max Pooling, Strided Convolution 사용
  • Up Sampling 방법: Unpooling, Max Unpooling, Transpose Convolution 사용


Unpooling:

Untitled

  1. Neareset Neighbor Unpooling
  2. Bed of Nails


Max Unpooling

Untitled

  • Max pooling과 Max Unpooling 대칭적으로 사용할 수 있다
  • max pooling 했던 곳과 같은 곳에 max unpooling 한다


Transpose Convolution:

Untitled Untitled

  • Convolution을 거꾸로 하는 개념
  • 학습을 통해 upsampling을 한다



2. Classification + Localization

Untitled

  • 물체를 구별하는 것 뿐만 아니라 물체의 위치까지 파악한다.
    • 물체를 찾아서 bounding box로 표시한다.
    • 두 가지 output, loss 존재한다.
      • class scores
      • box coordinates
      • 두 loss 합해서 gradient decent 진행한다.


  • 아래는 Classification + Localization의 한 예이다.
    • ex) human pose estimation

      Untitled Untitled

      output ⇒ positions of the joints ⇒ 어떤 포즈인지 유추할 수 있음


  • Object Detection(객체 탐지)와의 차이점
    • Localization에서는 객체가 오직 하나라고 가정함
    • 다른 이미지마다 객체의 수가 달라져 미리 예측할 수 없다.



3. Object Detection

  • 한 장의 이미지에서 다수의 물체를 찾고, 그 물체가 어디에 있는지 알아내는 것
  • 1-stage detector, 2-stage detector로 두 가지 방식이 존재한다

    Untitled



방법1 Sliding Window

Untitled

  • 매 patch(crop) 별로 CNN을 진행하여 분류한다.
  • 문제: 이미지를 어떻게, 어떤 사이즈 등으로 쪼갤 것인가?(crop) → 수많은 방식의 crop이 존재하고, 기준도 없고, 한편으로 억지스러울 수도 있다. 그래서 이 방식을 안 쓴다



방법2 Region Proposals

Untitled

  • region proposal network를 이용해 객체가 있을 만한 곳을 후보로 선정한다
    → 이후에 각각 CNN을 이용하여 Classification을 진행한다


1. R-CNN

Untitled

  • region proposal를 이용해 찾은 객체를 CNN의 input값으로 넣어 분류한다

  • Rol(Regions of Interest)의 size가 모두 같지 않다 → 같은 모델로 훈련시킬 수 없기 때문에 → 고정된 크기로 변환하여 CNN 진행한다 → 위 사진에서는 SVM를 이용해서 Classification을 하였다.

  • R-CNN에서도 bounding box로 객체의 위치 찾기를 할 수 있다, (region proposal이 항상 정확하지 않기에 사용할 필요가 있다)

  • 문제 (모든 RoI에 대해 CNN 연산을 해야한다)
    1. 계산 비용이 크다
    2. 메모리를 많이 사용한다
    3. 학습 과정이 느리다
    4. Test Time이 느리다

  • 속도 개선 방법 → Fast R-CNN



2. Fast R-CNN

Untitled

  • 전체 이미지를 CNN을 이용해 고해상도 Feature map을 얻고, Feature map을 통해서 Regions of Interest를 구한다 → Rol를 ROI pooling layer를 이용하여 고정된 크기로 변환하고, CNN을 진행한다.

  • Conv 먼저하고 region proposals 얻을 때의 장점: 중복 연산 불 필요, CNN연산 재사용 가능하다.

  • 문제(problem): Test time의 수행시간이 region proposals에 따라서 달라진다.



3. Faster R-CNN

Untitled

Untitled

  • Fast R-CNN 보다 빨라졌다.
  • Region Proposal도 fixed function이 아닌 Region Proposal Network를 이용해 예측하는 방식이다.



Region Proposal를 사용하지 않는 Network

  • YOLO(You Only Look Once)
  • SSD(Single Shot Detection)



4. Instance Segmentation

image

  • 각각의 사물 instance를 픽셀 단위로 구분한다.
  • 각 픽셀은 어떠한 객체에 포함되었는가를 중심으로 사물을 분류한다.

댓글남기기