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


카일스쿨 유튜브 채널을 만들었습니다. 데이터 분석, 커리어에 대한 내용을 공유드릴 예정입니다.

PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다

이 글이 도움이 되셨거나 의견이 있으시면 댓글 남겨주셔요.

Buy me a coffeeBuy me a coffee





© 2017. by Seongyun Byeon

Powered by zzsza