CS231n 11강. Detection and Segmentation


Stanfoard CS231n 2017 11강을 요약한 글입니다. Object Detection, Segmentation, Localization, Classification 등의 개념에 대해 나옵니다

Computer Vision Tasks


Semantic Segmentation


  • No objects, just pixels
  • Input : Image
  • Output : decision of a category for every pixel(픽셀별로 어떤 카테고리에 속하는지 알려줌)
  • 픽셀이 어떤 것을 나타내는지 알려주지만, 개별에 대해선 분류할 수 없음(2개 이상의 물체를 같은 것으로 인식) 추후 instance segmentation에서 이 문제를 해결할 예정입니다
  • Semantic Segmentation은 classification을 통해 진행될 수 있습니다.
  • Sliding Window Approach
    • 잘려진 patch마다 어떤 class인지 유추
    • 이 방법은 computation이 비싼 방법이고 중복되는 patch 사이에서 공유된 feature를 재사용하지 않습니다
  • Fully Convolutional
    • 3x3 filter를 사용해 이미지 크기를 유지하며 convolution에 넣음
    • 한번에 모든 픽셀을 예측할 수 있도록 설계
    • Output : C \times H \times W의 Tensor
    • 그러나 원본 이미지를 그대로 convolution하는 것은 비싼 연산
  • Fully Convolutional with downsampling and upsampling
    • max pooling 또는 strided convolution을 통해 downsampling
    • unpooling을 통해 upsampling

Upsampling

  • 1) Unpooling
    • pooling의 반대 작업으로, unpooling 지역의 receptive field의 값을 복제
    • we duplicate receptive filed of unpooling region
    • 하지만 우측처럼 나머지 값이 0일 경우는 Bed of Nails(무척 괴롭다)
    • max pooling을 할 때 max인 값을 기억했다가 Max Unpooling할 때 사용. 해당 위치 말고는 모두 0으로 채워넣음
    • fixed function
  • 2) Transpose Convolution
    • 딥러닝에서 사용되는 여러 유형의 Convolution 소개 참고
    • Up-sampling with Transposed Convolution 이 글도 좋습니다
    • Convolution Operation은 input values와 output values 사이에 공간 연결성을 가지고 있습니다. 3x3 kernel을 사용한다면, 9개의 values가(kernel) 1개의 value(output, 문지른 후의 결과물)와 연결됩니다. 따라서 many to one 관계라고 볼 수 있습니다
    • Transposed Convolution은 1개의 value를 9개의 values로 변경합니다. 이것은 one to many 관계라고 볼 수 있습니다
    • 필터의 값 사이에 0을 넣은 매트릭스를 Transpose한 후, 곱해줍니다
    • Others names
      • Deconvolution (bad)
      • Upconvolution
      • Fractionally strided convolution
      • Backward strided convolution

Classification + Localization


  • Single Object
  • what the category is, where is that object in the image?
  • Output : Bounding Box(around the region of label), label
  • localization은 regression 문제!
  • Multi Task Loss를 계산
  • 처음부터 학습하기 어려울 수 있으니, ImageNet의 pretrain 모델을 사용하기도 합니다(Transfer Learning)

Aside: Human Pose Estimation

  • Pose Estimation에도 활용할 수 있음. Image를 넣으면 14개의 join position이 나옴

Object Detection


  • Computer Vision의 핵심 Task
  • Multiple Object
  • Output : Bounding Box(around the region of label), label
  • 딥러닝을 활용한 이후부터 점점 성능이 좋아지고 있음
  • Localization과의 차이점은 동일한 종류의 물체가 여러 개 있다면 Object Detection은 모두 잡음(Localization은 1개로 취급)
  • Sliding Window Approach
    • 다른 모양의 crop에서 물체인지 배경인지 분류
    • 거대하고 많은 crop이 필요한데, 이게 비싼 연산
  • Region Proposals
    • Selective Search 방법으로 물체가 있을만한 Region을 1000~2000개 생성
    • CPU에서 연산

R-CNN

  • 문제점

Fast R-CNN

  • ConvNet을 통해 나온 feature map에서 RoIs를 찾음
  • RoI Pooling
    • Fully Connected Layer는 Fixed size input이 필요한데, RoI Pooling이 작업을 수행
  • Fast R-CNN은 여전히 Bottleneck을 보유

Faster R-CNN

  • RPN(Region Proposal Network)을 추가해서 성능 개선
    • Output : Object 유무, Object Proposal
  • Faster R-CNN 논문 리뷰 참고

Detection without Proposals: YOLO / SSD

Aside: Object Detection + Captioning = Dense Captioning

  • region에 대한 예측보다 region에 대한 캡션을 작성하려고 함
  • Faster R-CNN처럼 보임(region proposal stage, bounding box, processing per region)
  • 그러나 실제론 각각의 region에 대한 캡션을 예측하는 RNN 모델

  • 특정 문제로부터 배운 것을 다른 Task에 적용할 수 있음(Multi Task)

Instance Segmentation


  • Object Detection에서 Bounding Box 대신 Segmentation

Mask R-CNN

Reference


이 글이 도움이 되셨다면 공감 및 광고 클릭을 부탁드립니다 :)




© 2017. by Seongyun Byeon

Powered by zzsza