Object Detection

 

  • 문제 정의
    • Classification
      • ex) 영상이 'car' 영상일 확률이 가장 높다.
    • Classfication + Localization
      • ex) 영상이 'car' 영상일 확률이 가장 높고, 그 'car'의 위치는 어디쯤에 있다.
      • 물체가 있는지 / 물체의 중심점의 x좌표 / 물체의 중심점의 y좌표 / 물체의 넓이 / 물체의 높이를 찾아낸다.
    • Object Detection
      • ex) 영상 안에 있는 모든 물체들과 그것들의 위치(영역)을 함께 찾는다.
      • 현재 예측치와 Ground Truth(참값)의 차이가 줄어들도록 CNN을 업데이트한다.
      • Object Detection에서는 box가 반드시 한 개인 것은 아니다. (여러 물체가 detect될 수 있다.) 따라서 object별로 벡터가 필요하다.
      • 어느 위치에 object가 있는지 찾고 + 영역 크기도 결정하고 + 어떤 object인지도 알려줘야 한다. 복잡한 문제이다.
      • Object Detection 요소 기술
        • Region Proposal : Object가 있을만한 영역을 다수 추천
        • Non-max Suppression : 겹치는 영역 제거
        • Classification : 영역 속 Object 분류
        • Bounding Box Regression : Object 영역 (Boundary) 미세조정

Faster RCNN

 

  • 기본 flow
    • https://medium.datadriveninvestor.com/review-on-fast-rcnn-202c9eadd23b
      pre-trained된 cnn 모델을 통과시키고 두 개의 Stage로 나눈다. 위 그림같은 경우는 위 stage가 region proposal stage가 된다.
      이후 region proposal가 추천해준 3개의 영역(위 그림의 경우)에 대해서만 classification과 bounding box regression을 수행하게 된다.
    • Region Proposal Architecture
      • https://tryolabs.com/blog/2017/11/15/our-odsc-talks-in-video/
        anchor의 값이 9면 2k objectness scores(물체가 없는가에 대한 점수)의 output channels는 2*9가 되어 18개가 된다.

IOU(Intersection over Union) measure

 

  • IOU = 교집합 / 합집합
    • Objectness의 기준
      • (Training시) 이 영역이 object 영역인지 아닌지 판단하는 방법 :
        Ground Truth object 영역과 IoU를 계산해 IoU가 Threshold(ex) 0.6 -> IoU가 0.6 이상부터 물체라 판단.)보다 크면 이 영역을 object 영역이라 판단. 
      • IoU로 판단하지 말고 Ground Truth Object영역과 교집합으로 판단하면 되는 문제 아닐까?
        but 그렇게 하면 Box Boundary Regressor가 할 일이 어려워진다.
      • RPN(Region Proposal Network)에서는 Ground Truth Object 영역과 IoU가 0.6이상 되는 후보 영역들을 찾아주는 것이 목적

Anchor Box

 

  • 정해진 크기와 비율을 가진 미리 정의된 후보 Box
    • 상단 그림의 오른쪽과 같이 미리 정의된 Anchor Box를 둔다. 각 Anchor Box를 Object가 있는 곳에 위치시켜 IoU가 0.6 이상이 되면 Object라고 Detect하도록 한다. 즉, 너무 작은 Anchor Box가 Object에 위치하게 되면 (물체의 아주 일부분만 보게 된다면) IoU가 0.6보다 작게 나올 테니 Object라고 판단하지 않는다. 이렇게 하면 딱 물체 크기에 적당히 알맞게 Boundary할 수 있게 된다.
      위 그림에선 오른쪽 아래의 Anchor Box가 가장 적절하고 큰 IoU가 나타나게 될 것이다. 즉, 왼쪽부터 Anchor Box 0번이라고 하면 0,1,2,3,4,5,6,7번 Anchor Box는 Object가 거짓이라는 값(아니라는 값)을 뱉어낼 것이고, 마지막 8번째 Anchor Box만이 Object가 맞다(참)고 정답을 줄 것이다. 이를 한 번에 모아서 정답 벡터를 만들어낸다. 이에 대한 모든 정답 벡터를 모아 하나의 정답 박스를 만들어내게 된다.
    • 상당히 많은 Boundary Box가 새겨지게 될텐데 이를 전부 이용해 연산을 하면 너무 많은 연산량으로 오랜 시간이 걸리게 될 것이다. 이를 보완해주는 것이 Non Max Suppression

RPN Training 수식화

 

출처 : https://www.slideshare.net/hpkim0512/tutorial-of-faster-rcnn?fbclid=lwAR2YDdJAWptDiMGuz4I2TSEbBRrCF51r2WEb27aKUB3bioo4cEI2OuZWF5Q

 

Tutorial on Object Detection (Faster R-CNN)

CSE WinterSchool 2018 Tutorial on Machine Learning 발표자료 https://2018winterschool.weebly.com/

www.slideshare.net

 

예측값은 두 가지이다.

Predicted probability of objectness : 오브젝트일 확률, 오브젝트가 아닐 확률로 총 두 개의 값을 반환하는 값이다.

proposal transformation : Bounding Box가 얼마만큼 변화되는가(실제 중심점과, 실제 너비, 높이와 얼만큼 차이가 나는가)

 

1x1 Convolution 정답 박스를 만들어 내는(anchor box/IoU를 이용하여) 수식이 바로 위의 수식이다.

Loss 함수로는 smooth_L1함수를 사용한다.


ROI Pooling

 

  • Bilinear interpolation(보간법) & Max pooling을 활용하여 크기를 정해진 크기로 맞추는 기법.
  • Fully Connected Layer를 쓰려면 입력값이 고정이 되어야 하기 때문에 사용한다.
  • 만약에 이 과정에서 Feature가 위 아래로 줄어들어 변형이 일어나게 된다면, Input Data에서 위 아래로 늘린 데이터를 Training 데이터에 포함을 시켜 Feature가 위 아래로 줄어도 심한 변형으로 나타나지 않게끔 학습을 시키는 방법을 사용하기도 한다.

Classifier & Regressor Traning

 

RPN을 통해 나온 파라미터를 활용하게 된다.

 

L_CR을 minimize하는 방향으로 update한다.

+ Recent posts