YongWook's Notes

<인공지능> Multiple-Object Detection (1) - RCNN 본문

-software/AI

<인공지능> Multiple-Object Detection (1) - RCNN

글로벌한량 2017. 3. 13. 14:42

대학원에 입학하고 인공신경망을 이용한 영상처리 분야를 더 심도있게 공부하고 있다. 학부 졸업을 위해 공부했던 Image Classification을 위한 CNN은 사실 Single Object Detection이라고 볼 수 있다. 자율주행차 등의 실생활에 사용되는 영상처리는 기본적으로 단일 이미지에 여러가지 오브젝트가 존재한다. 따라서 이미지 전체에 대한 Classification 뿐만 아니라 Multiple-Object Detection이후에 각 Object에 대한 Classification을 함께 수행하는 방법론을 알아보려고 한다.




R-CNN

Multiple-Object Detection에 대한 관심을 가지게 된다면 가장 먼저 접하게 될 테크닉이 바로 R-CNN이다. Region의 R을 CNN에 붙인 이 방법은 사실 간단한 프로세스를 거친다. 

  1. CNN을 fine-tuning한다.
  2. Input Image에 Selective search를 적용하여 object detecting을 수행한다.
  3. Detected Object(proposals)를 CNN에 넣고 feature extract를 수행한다.
  4. 분석된 Feature들을 softmax classifier나 SVM에 붙여서 각 proposal의 score를 매긴다.
  5. Non-Maximum Suppression(NMS)을 이용하여 bounding box를 구한다.

  6. *여기서 사용된 Selective search와 NMS는 다음 포스트에서 설명하기로 한다.

간단히 말하자면, R-CNN은 Input image에서 수많은 Object 후보들을 찾아내고 이들을 모두 CNN에 넣어서 Feature를 뽑아낸다. 그리고 뽑아낸 Feature들을 SVM등의 Classifier에 넣어서 분류작업을 수행하고 NMS와 같은 기법으로 Bounding Box를 이미지 위에 그려내는 방법이다. 다음 그림은 전체적인 과정에 대한 이해를 도와준다.


우리가 직관적으로 생각해보았을 때, 하나의 이미지에서 Classiy를 수행하는 Single-Object Detection보다는 Multiple-Object Detection의 Complexity와 Computational Cost가 높을 것으로 생각된다. 그리고 R-CNN은 이런 우리의 직관을 전혀 벗어나지 못했다. 실제로 R-CNN은 Training에서도, Detecting에서도 매우 느리다. 그렇다면 R-CNN이 이토록 느린 이유는 무엇일까?

R-CNN의 Training을 느리게 만드는 가장 주된 이유는 3단계 파이프라인의 사용에 있다.

  1. 사용할 CNN을 Train해야한다. 이때는 주로 이미 알려진 Network 중 성능이 좋은 모델의 가중치를 가져와 fine-tuning한다.
  2. fine-tune된 CNN에 맞게 SVM을 fitting 해야한다.
  3. Bounding Box regressor를 학습시켜야한다.

이 3개의 단계가 순차적으로 일어나기 때문에 학습시간이 비교적 오래걸릴 수 밖에 없다. 또한 힘들게 train시킨 R-CNN을 사용하여 Object Detection을 할 때에도 느린것은 마찬가지다. Input image에서 수많은 Object 후보들을 뽑아내고 이들을 연산량이 많은 CNN에 모두 집어 넣기 때문이다. 게다가, 이미지에서 추출한 Object 후보가 직사각형인 경우, CNN이 요구하는 input size로(일반적으로 정사각형) 이미지를 warp해야 하기 때문에 이 과정에서 이미지의 왜곡이 일어나 학습결과에 부정적인 영향을 끼칠 수 있다는 것도 R-CNN의 단점이다. 이 단점들은 나쁘지 않은 성능을 발휘하는 R-CNN임임에도 실제로 잘 사용되지 못하게 만들었고, 사용자로 하여금 다른 방법론을 강구하도록 만들었다. 

그리하여 R-CNN의 단점들을 보완하며 등장한 것이 바로 SPP-Net이다.


Comments