본문 바로가기
Machine Learning/개념 정리

Object Detection 모델 개념 정리

by W_log 2024. 2. 1.

Object Detection 문제와 Classification 문제의 차이

 

일반적인 image classification은 단순 분류만 잘 하면 되기 때문에 이미지 속 객체가 어디에 있는지에 대해서 모델이 구체적으로 학습할 필요가 없었다. 단순히 픽셀 분포랑 정답만 알려주면 실제 그 과정은 모델이 알아서 학습하기 때문이다.

 

그렇지만 Object Detection은 이미지 속에 배경과 실제 객체를 구분할 수 있어야 하고, 그 실제 객체가 이미지 상에서 어디에 위치했는지(Localization) 알아야하며, 그 위치한 객체가 무슨 이미지인지 분류(Classification)해야한다.

 

즉 모델이 학습해야하는 케이스가 총 2개인 것이다. 

 

 

접근 방식의 차이

 

위에서 설명한 이 2가지를 각각 다른 솔루션으로 접근하는 것을 2 stage Detector라고 부르고 이걸 하나의 모델로 해결하는 것을 1 stage Detector라고 한다.

 

이름에서 주듯이 이 두가지 방식은 장단점이 명확하다.

두개의 단계로 나누어진 모델은 결국 그 모델간의 input, output을 전달해줘야한다는 문제가 있고 학습하는데에도 고려해야하는게 많다. 시간도 오래걸린다. 다만 하나의 task만 잘하는 모델을 만드는 것이기 때문에 정확도는 매우 좋다.

 

1 stage detector는 반대로 학습시키기도 쉽고 속도도 빠를 것이다. 다만 상대적으로 모델에게 친절하게 task를 가이드해주는 느낌은 아니기 때문에 상대적으로 정확도가 낮다.

 

 

필수 개념

이걸 인지하지 못해서 아래 개념들을 이해하는데 꽤 오랜 시간이 걸렸다...

 

CNN은 필터를 돌면서 일반적으로 이미지의 높이와 너비가 축소된다. 즉 Convolution Filter는 특정 픽셀에 대해서 그 주변 픽셀들을 고려해서 연산했기 때문에 이미지의 전반적이고 지역적인 정보, 픽셀 중심으로는 픽셀 주변의 정보를 학습한다고 이해할 수 있다. 이렇게 나온 결과물을 Featuremap이라고 하며 각 이미지의 특성들을 모아놨다고 볼 수 있다.

 

300X300픽셀의 이미지를 CNN을 통해서 30X30의 Featuremap으로 만들었다고 하자. 이 때 위 이미지를 1/10씩 줄인것과 이 Feature map은 어떤 관계가 있을까?

 

엄밀히 말하면 다르겠지만 이렇게 1/10으로 줄인 것조차도 각 픽셀 주변 값들의 정보를 함축하고 있다고 볼 수 있다. 그래서 대응되는 값들끼리는 다른 값들보다는 유사한 성격을 가질 확률이 높다. 

 

이러한 특성을 활용해서 우리는 라벨링 데이터를 만들 때에도 이미지를 Featuremap으로 투사할때 리사이즈를 한다. 비록 Feature map을 계산하는 방식은 다르지만 결국은 전반적인 지역적 정보를 함축한다는 관점에서 이렇게 적용할 수 있다.

 

 

 

 

2 - Stage Detector

region proposal(이미지 속 어떤 영역이 객체가 포함되어 있는지 제안하는 단계)과 classification(그 물체가 무엇인지)의 두가지 단계로 크게 나뉘어있다. 아래 방법론들은 이 둘을 어떻게 해결했는지 간략하게 정리해보았다. 또 여기에서 핵심은 1단계 -> 2단계로 넘어가는 과정에 어떻게 데이터를 넘기는지도 중요해서 같이 전달한다.

 

 

1. R-CNN

  • Region Proposal : 이전의 computer vision에서 사용하던 이미지 속 객체 위치 탐지 방식인 selective search를 활용한다. 이는 작은 영역부터 뽑아서 픽셀 유사도 등을 고려해서 점차 영역을 확장해서 잠재 후보군을 뽑는 방식이다.
  • Data : 똑같은 신경망으로 학습하기 위해서는 고정된 벡터 크기로 이미지가 들어가야해서 여기서는 그냥 자르거나 축소하는 방식을 사용했다. 그러다 보니 정보를 많이 손실한다.(이미지를 임의로 자르니까)
  • Classification : 일반적인 CNN을 사용해서 feature map(이미지에 대해서 함축된 정보)을 뽑고 최종적으로 SVM으로 classification을, BBOX Regressor로 좌표를 뽑는다.

2. Fast R-CNN

  • Region Proposal : 위와 동일하다. 다만 위에서는 이 이미지에 대해서만 신경망을 돌렸다면 여기에서는 원본 이미지를 CNN으로 돌린 Feature map에 이 Region Proposal을 투사시켰다. 
  • Data : 투사시킨 것에 끝나지 않고 ROI Pooling이라는 것을 사용해서 정보 손실을 줄이면서 고정된 벡터를 추출하는 방식을 사용했다.
  • Classification : SVM이 아닌 Softmax로 classification을, BBOX Regressor로 좌표를 뽑는다.

 

3. Faster R-CNN

  • Region Proposal : selective search에서 RPN이라는 신경망으로 대체한다. RPN에서 Anchor box라는 개념이 생기는데 Feature map 기준으로 convolution filter를 window로 돌면서 그 중심점 기준으로 후보 박스들을 만든다. 크기랑 비율을 다양하게 임의로 일단 만든다. 
    • Feature map 크기만큼 원본이미지도 축소시킨다음 각 앵커박스에 객체가 있는지, 그리고 그 박스 기준으로 실제 객체와 얼마나 먼지를 라벨링하고 이것이 학습데이터로 들어간다.
  • Data : ROI Pooling을 그대로 사용한다.
  • Classification :  Fast r-cnn과 동일하다.

 

 

 

1 - Stage Detector

어떻게 한번에 이 두가지를 다할 수 있을까? YOLO를 통해서 설명해보겠다. 사실 아래에 정의된 값은 인간이 정의한 것일 뿐 실제로 모델에게는 예측값과 실제 지정한 답을 주고 알아서 학습하게 했다. 즉, 로직을 만든게 아니라 모델이 저절로 학습했다는 것을 인지하는게 중요하다.

 

 

  • Bounding Box : 이전의 FasterCNN은 피쳐맵으로 줄여서 앵커박스를 만들고 이걸 통해서 후보 Bounding box를 다음 신경망에 넘겨줬다. YOLO는 비슷하게 피쳐맵 1개당 2개의 Bounding Box를 만들게 했다. 만일 피처맵이 7x7이라면 이는 마치 이미지를 7x7로 나누고 각 구역 안을 중심점으로 하는 바운딩 박스를 2개씩 그리게 하는 것과 유사하다.
    • 최종적인 output은 confidence와 중심점, 높이, 너비이다.
      • Connfidence란? 바운딩 박스 안에 객체가 존재할 확률과 IOU를 곱한 값

 

  • Classfication : box랑 별개로 7X7개 하나하나에 대해서 20개의 클래스가 있을 확률을 모델이 계산한다.

 

  • 최종적인 박스 선정
    • 20개의 클래스 각각의 확률과 각각 박스의 confidence를 곱한다. 
    • 그리고 이제 클래스 기준으로 해당 값이 높은 박스들을 보고 IOU가 안겹치고 값이 높은 박스는 서로 다른 객체라고 생각하고 박스를 남기고 많이 겹치면 확률 높은 것만 살리고 나머지는 제거한다.

 

 

참고 링크

1. https://www.youtube.com/watch?v=ZhvU7D_qKO8

 

2. https://www.slideshare.net/ssuser67be14/yolo-v1-241861792

 

YOLO v1

YOLO v1 - Download as a PDF or view online for free

www.slideshare.net