3 분 소요

본 글은 2022년 4월에 강의한 스탠포드 대학의 “Convolutional Neural Networks for Visual Recognition” 2022년 강의를 듣고 정리한 내용입니다.
개인 공부 목적으로 작성되었으며, 설명이 맞지 않거나 글 오타가 있으면 알려주시길 바랍니다.

원본 링크 : cs231n.stanford.edu
한글 번역 링크 : aikorea.org - cs231n
강의 링크 : youtube - 2017 Spring (English)




Object Detection

  • Object Detection은 이미지에 있는 모든 물체를 찾아내어 각각을 분류하고 각각의 좌표를 출력하는 task이다. 1
  • object의 클래스를 classification할 뿐만 아니라 localization까지 함께 수행한다.
  • Localization : 이미지 내에 하나의 object가 있을 때 그 object의 위치를 특정하는 것 2
  • Detection : 여러 개의 object가 존재할 때 각 object의 존재 여부를 파악하고 위치를 특정하여 classification을 수행하는 것 2


  • 우선 하나의 object만 있다면 하나의 2D bounding box를 찾으면 된다.
    • bound box는 $(X,Y,W,H)$ 또는 $(X_1,Y_1,X_2,Y_2)$ 4개의 파라미터로 구성된다.
      • $(X,Y,W,H)$에서 X,Y는 왼쪽 상단의 코너 위치를 나타내고, W,H는 box의 크기를 설정한다.
  • multitask loss는 서로 다른 loss 조건의 크기(magnitude)를 balance하기 위해 모든 task별 손실의 가중치 합(weighted sum)이다.
  • 따라서, classification을 위한 레이블과 localization을 위한 bounding box를 사용하여 네트워크를 학습시킨다.
    • Loss = Softmax Loss + L2 Loss



Multiple Object Detection

  • 위 그림에서 볼 수 있듯이 object가 많을수록 고려해야할 파라미터 수 또한 많아진다.


  • 그렇다면 어떻게 해야 할까?
  • semantic segmentation에서 언급한 방법처럼 슬라이딩 윈도우를 사용하는 것이다.
  • 슬라이드하는 각 이미지 cut마다 image classifier를 사용하여 슬라이드 창에 object가 있는지를 파악한다.
  • 하지만 계산 효율성의 문제뿐만 아니라 슬라이딩 윈도우가 이미지 내의 다른 위치로 이동해야 하며 다양한 크기의 객체(object)를 고려해야 한다는 것이다.


  • 어떻게 하면 모든 가능한 box를 거치지 않고도 모든 객체를 포착할 수 있는가이다.
  • 객체를 포함할 가능성이 있는 윈도우를 선택하는 것을 region proposal 문제라고 한다.
  • 이 문제에 대한 매우 효과적인 접근법으로 selective search 기법을 쓴다.



R-CNN

  • R-CNN은 첫 번째로 객체를 포함할 가능성이 있는 관심 영역(RoI)을 찾기 위해 selective search를 사용한다.
    • 수천 개(약 2000개)의 region을 생성한다.
  • 이러한 RoI의 크기를 동일한 크기의 이미지 자르기(cropping)로 조정한다.(224x224)
  • ConvNet을 통해 각 지역을 forward한다.
  • SVM 손실이 있는 선형 분류기로 학습한다.
  • 하지만, 각 이미지의 forward pass가 2천개 이상이 필요하는 등 매우 느린 단점이 있다.


Slow R-CNN

  • 이미지를 자르기 전에 convnet으로 전달하고 대신 conv feature를 자른다.
  • 이러한 아이디어의 개선된 버전을 기본적으로 제안하는 현재 거의 모든 딥 러닝 기반 2D 객체 감지 모델에서 여전히 사용되고 있다. 3



Fast R-CNN

  • Fast R-CNN은 이미지를 자르고 크기를 조정한 후 ConvNet에 전달하는 RNN 방식 대신 ConvNet에 전체 이미지를 먼저 전달한 다음 region proposal과 관련된 conv feature를 자르고 크기를 조정한다.
    • 이렇게 하면 단일 이미지를 처리하기 위해 비싼 변환 레이어를 수천번 통과해야 하는 것을 피할 수 있다.
  • Fast R-CNN 아키텍처는 end-to-end로 학습된다. 자르기 및 크기 조정은 이미지 내에서가 아니라 feature map에서 직접 수행된다.
  • 그럼 다음 질문으로 feature 자르기 및 크기 조정 작업은 무엇일지 살펴보는 것이다.



Cropping Features: RoI Pool

  • RoI Pool : 자르기(cropping) 및 크기 조정(resizing) 작업
    • 목표 : 주어진 영역의 활성화 맵에서 feature를 추출하고 downstream 레이어가 처리할 고정 크기 텐서로 새 feature 맵을 줄이는 것이다.
  • 위 그림의 녹색 box는 region proposal을 강조 표시한 것이다.
    • 목표는 동일한 영역을 사용하지만 feature 맵에서 잘라내는 것이다.
  • 그 다음, 파란색 box처럼 대략적으로 동일한 하위 영역의 그리드에 맞춘다.
  • maxpooling을 사용하여 텐서의 공간 크기를 2x2로 줄인다.
    • 따라서, 입력 영역의 크기가 다른 경우에도 region feature는 항상 같은 크기이다.
    • 하지만, 이 영역 feature가 약간 잘못 정렬될 수 있다.



Cropping Features: RoI Align

  • (향후 업데이트)



R-CNN vs Fast R-CNN

  • Fast R-CNN은 공유 컨볼루션 백본을 사용하여 이미지 처리를 훨씬 더 효율적으로 만들었다.
  • 학습 때 Fast R-CNN은 R-CNN보다 약 10배 빠르다. 그리고 테스트 때는 약 20배 더 빠른 것을 알 수 있다.
  • 하지만, Fast R-CNN이 실제로 selective search를 사용한 region proposal를 계산하고 있다는 것을 알 수 있다.
  • 따라서, 전체 작업은 region proposal의 경우 2초로 분할되는 2.3초와 region proposal를 얻은 후 객체를 분류하는 데 0.32초가 소요된다.
    • 따라서 런타임은 region proposal에 의해 좌우된다.



Faster R-CNN (1)

  • Faster R-CNN은 region proposal 부분을 더 빠르게 만들기 위해 노력했다.
    • 외부 selective search 알고리즘에 의존하는 대신 네트워크에 실제로 컨볼루션 feature를 사용하여 객체가 주어진 영역(region)에 존재하는지 여부를 결정하고 네트워크 내부에서 region proposal을 생성하는 내장형 RPN(Region Proposal Network)가 있다.



Region Proposal Network

  • RPN의 첫 번째 단계는 앵커 박스(anchor box) 세트를 지정하는 것이다.
    • 이러한 anchor box는 슬라이딩 윈도우와 유사한 다른 위치, 크기, 비율로 샘플링된 영역이다.
    • 앵커는 이전 R-CNN과 Fast R-CNN 에서 사용된 다수의 슬라이딩 윈도우와 달리 상대적으로 드문드문 샘플링된다는 점에서 슬라이딩 윈도우와 다르다. 즉, 수가 훨씬 적다.
  • 이러한 앵커는 객체가 일반적으로 natural 이미지에서 발생하는 영역만 덮고 모든 입력 이미지에 대해 동일한 앵커 세트를 사용한다.
  • RPN이 하는 일은 앵커 상자에 객체가 있는지 여부를 예측하는 매우 얕은 convnet을 통해 이러한 영역의 중심에 있는 feature를 전달하는 것이다.
    • feature map의 각 지점은 해당 지점을 중심으로 앵커 상자에서 객체를 감지하는 역할을 한다.



Faster R-CNN (2)

  • 다시 돌아와 Faster R-CNN 과정을 살펴본다. 1
    • Faster R-CNN에는 총 4개의 loss가 있다.
  1. 입력 이미지가 CNN을 통과항 전체 이미지에 대한 feature map을 생성한다.
  2. RPN이 feature map에서 region proposal을 예측한다.
  3. RPN에서 예측한 region proposal에 대해 물체가 있는지 없는지에 대한 여부의 classification와 bounding box regression을 진행한다.
  4. RPN에서 예측한 region proposal에 ROI Pooling을 진행하고 FC 레이어를 거쳐 classification과 bounding box regression을 진행한다.


  • 계산 효율성 측면에서 Faster R-CNN은 단 몇 0.2초만에 이미지를 처리할 수 있고, Fast R-CNN보다 약 10배 빠르다.


  • Object Detection은 1-stage와 2-stage로 나뉜다. 4
    • Object Detection은 객체의 위치를 찾는 Localization 문제와 객체를 실별하는 classification 문제를 풀어야 한다.
    • 1-stage : 위 두 문제를 동시에 행하는 방법
      • fast but low accuracy
      • ex. YOLO, SSD, RetinaNet
    • 2-stage : 위 두 문제를 순차적으로 행하는 방법
      • slow but high accuracy
      • ex. R-CNN, Fast R-CNN, Faster R-CNN
  • Faster R-CNN은 1-stage가 이미지를 특징짓고 region proposal의 초기 배치를 생성하는 2-stage 객체 감지기다. 2번째 단계는 각 proposal를 개별적으로 처리하여 이러한 영역을 분류하고 세분화하여 최종 예측을 산출하는 것이다.
  • 그렇다면 2-stage가 정말로 필요한 가에 대해 질문이 있을 수 있다.



Others

  • YOLO(You Only Look Once)는 기본적으로 입력 이미지를 그리드로 나누는 단일 단계 객체 감지기(single-stage object detector)이다.
  • 각 그릴 셀에 대해 다수의 “베이스 박스”(Faster R-CNN이 “앵커 박스”라고 부름)를 사용하고 각 베이스 박스에 대한 경계 박스 수정을 출력한다.
  • 또한 각 셀에 대한 클래스를 예측하고 이를 예측 상자에 대한 클래스 예측으로 사용한다.
  • YOLO는 모든 경계 상자와 해당 클래스를 한 번에 하나의 전진 패스로 출력하므로 두 번째 단계가 없다. 따라서 단일 단계 검출기라고 한다.





References

댓글남기기