R-CNN이란?

김태영·2022년 10월 6일
0
post-thumbnail
post-custom-banner
  • R-CNN 동작 방식
    • 이미지를 넣는다.
    • 이미지에서 2000개의 region propsals(후보영역)를 찾는다.
      • region propsals(후보영역)을 추출할 때는 Selective Search 알고리즘을 사용한다.
    • 추출된 2000개의 region propsals(후보영역)을 CNN모델에 넣기 위해서 227x227 크기로 warp(resize)합니다.
    • Pre-trained된 AlexNet을 negative sample로 Fine tune하고, warp된 region propsals(후보영역)을 입력하여 4096차원의 feature vector를 추출합니다.
      • 데이터셋은 객체와 배경을 포함한 학습 데이터를 구성해야 합니다.

      • 데이터셋은 bbox(region propsals)와 ground truth box의 IoU값을 구합니다. IoU값은 교집합을 합집합으로 나눈 값입니다. IoU값이 0.5 이상인 경우에는 positive sample(=객체)로 판단하고, 0.5 미만인 경우에는 negative sample(=배경)으로 판단합니다.

      • negative sample을 통해서 AlexNet을 Fine tune합니다.

      • AlexNet의 마지막 layer를 구하려는 객체의 개수 N개와 배경을 포함한 (N+1)로 맞춰줍니다.

      • 그 후, Fine tune된 AlexNet에 warp된 region prosals를 넣어 2000x4096의 feature vector를 얻습니다.

        Untitled

    • 2000x4096 사이즈의 feature vector를 SVM classifier에 입력하여 class를 예측하고 confidence score를 얻습니다.
      • 추출된 2000x4096사이즈의 featue vector를 각각의 클래스 별로 SVM Classifier를 학습시킵니다. 주어진 벡터에 대해서 해당 물체가 맞는지 아닌지를 구분하는 Classifier를 학습시키는 것입니다.
    • Non-maximum Supperssion을 적용합니다.
      • SVM을 통과한 bbox들은 어떤 물체일 확률값(score)를 가지게 되었습니다. 굳이 2천개의 bbox는 필요하지 않기 때문에, score가 가장 높은 상자만 남겨놓아야 합니다. IoU가 0.5보다 크면 동일한 물체를 대상으로 한개의 bbox로 판단합니다. Untitled
    • 사진으로 보는 R-CNN 동작 방식 Untitled
  • R-CNN 마무리
    • 한개의 GPU를 기준으로 13초, CPU를 기준으로는 54초가 걸린다고 한다. 속도 저하의 이유로는 selective search로 찾은 2000개의 bbox를 모두 CNN inference하기 때문이다.
    • Pascal VOC 2010 데이터를 기준으로 53.7%의 정확도를 기록하였고, 당시 획기전인 object detection 모델이였습니다.
profile
하얀 도화지 김태영입니다.
post-custom-banner

0개의 댓글