엔지니어스 - Engineeus

Object Detection이란? 본문

Autonomous Tech./Image Processing

Object Detection이란?

Engineeus 2019. 12. 14. 15:29
728x90

start()

{


Object Detection, OD 란?

Object Detection(앞으로 'OD' 라고 하겠습니다.)은 물체 검출 입니다. 즉, 카메라나 다른 센서를 이용하여 자동차, 사람, 동물, 물건 등을 검출 하죠. 추가로 이게 뭔지를 나타내 주기 위해서 우리는 Classification(분류) 이란 단어를 사용 합니다.

 

Object Detection의 역사는 아래와 같습니다. 컴퓨팅파워가 좋아 지기 전에는 이 문제는 모두 영상처리로 풀고 있다가 2012년 AlexNet이 나타나고 부터는 딥러닝을 활용하여 문제를 접근 하고 있고 현재 정말 'Hot'한 분야 입니다.

 

Object Detection in 20 Years: A Survey

OD의 역사에 좀더 자세히 알고 싶아면 아래 논문을 추천 합니다.

https://arxiv.org/pdf/1905.05055.pdf

 

Object Detection이란 아래 순서도와 같습니다. 일단 영상이 들어오면 한 부분에 물체가 있다는걸 인식 (Object Recognition)하고, 그 물체가 무엇인지(Objectt Classification)하고 정확한 위치를 찍어 줍니다(Object Localization).  OC와 OL이 합쳐지면 Object Detection, OD 가 됩니다.

 

Object Detection 순서도

Tracking은 그 다음 문제 이므로 다른곳에서 다루도록 하겠습니다. 궁금하면 여기를 참고해 주세요.

 

Object Detection의 결과는 아래와 같이 분류가 됩니다.

 

 

Object Detection의 역사

 

 - 영상처리(Image Processing) 시대

OD는 2012년 이전에는 주로 '영상처리' 로만 문제를 풀어왔습니다. 아래 파란색 표시 된 부분이 영상처리로만 문제를 풀던 때 입니다.

 

- 딥러닝(DNN) 시대

하지만 컴퓨팅파워의 발전과 인터넷에 많은 사진들이 업로드 되면서 데이터들이 쌓이게 된 순간 한 이미지 Classification 경진대회에서 사건이 터지게 된거죠. (자세한 사항은 제 CNN 포스트를 참조 바랍니다.)

최근 들어 '딥러닝'을 활용해 문제를 풀기 시작했죠. 즉, CNN과 같은 이미지에 특화된 딥러닝 방법을 이용하여 이러한 문제를 풀기 시작 한건 몇년 전 부터 입니다. 딥러닝을 사용하는 문제로는 최근 2가지가 있습니다.

 

  • Two-shot-detection (초기 버전)

Two-shot이란 2단계를 걸쳐서 검출 하기 때문 입니다. 

ROI의 Window가 영상 전체를 Sliding 해가면서 계속 네트워크를 돌려줍니다. 한장의 이미지에 엄청나게 많은 여러번의 네트워크를 사용 해야 하므로 연산량이 엄청나게 됩니다. 거의 실시간성 zero라고 보면 됩니다. 아래 초록색으로 표시된 시대가 이때의 시대 입니다.

 

 

  • Two-shot-detection (업그레이드 버전)

two-shot-detection 원리

 

이번엔 다른 방법으로 접근 해 봅시다. Two-shot-detection의 선두주자 R-CNN으로 설명 드리자면 위 그림과 같습니다.

1. 첫번째로 예상범위 추출(RPN) 작업을 합니다. RPN 작업을 할때 대표적으로 Selective Search라는 알고리즘으로 추려 냅니다. 엄청나게 많은 박스가 나오면 비슷한 위치를 갖는 박스들을 줄여 2000개의 랜덤사이즈 Bounding Box만 남게 됩니다. 

(※ Selective Search알고리즘은 Segmentation 분야에 많이 쓰이는 알고리즘이며, 객체와 주변간의 색감(Color), 질감(Texture) 차이, 다른 물체에 애워쌓여있는지(Enclosed) 여부 등을 파악해서 다양한 전략으로 물체의 위치를 파악할 수 있도록 하는 알고리즘입니다.)

2. 이제 이 모든 Bounding box들을 CNN으로 보내버립니다.

 

이 또한 몇번의 네트워크를 통과 해야 하므로 연산량이 꽤나 expensive 합니다.

이 때만도 엄청난 발전 이라고 느꼇죠... 고작 아래와 같이 0.05 FPS인데도 말이죠.

 

일반 CNN -> R-CNN(0.05 FPS ) -> Fast R-CNN(0.5 FPS) -> Faster R-CNN(7 FPS)

 

후기 버전에는에는 대표적으로 R-CNN, F-CNN, R-FCN, FPN-FRCN, Fast R-CNN, 등이 있습니다.

 

 

 

  • One-shot-detection

one-shot-detection

 

자 이제 Yolo라는 알고리즘을 만든 사람이 답답한 나머지 좀 신박한 생각을 해봤습니다. 사실 특별하지도 않습니다. 사람이 눈으로 뭔가를 보고 눈앞의 물체가 뭔지 검출 할때 왼쪽에서부터 쭈우욱 돌면서 하지않습니다. 그냥 직관적으로 한번 보고 '아 여기 이런것들이 있네' 라고 판단을 해 버리죠. 

 

 

위 그림 처럼 input image가 있으면, 하나의 신경망을 통과하여 물체의 bounding box와 class를 동시에 예측하게 되는게 Yolo이며 이게 곧 One-shot-detection의 일련의 과정 이라고 보면 됩니다. 

One-stage method에는 대표적으로 YOLO, SSD, RetinaNet 등이 있습니다. 대표적인 알고리즘 중 Yolo에 대한 포스트가 있으니 여기서 검출 방법에 대해 확인 하실 수 있습니다.

 

One-shot-detection vs Two-shot-detection?

하지만 각 장단점이 있습니다. 

 

  One-shot-detection Two-shot-detection
장점 정확도는 Twe-stage method에 비해 낮음 높은 정확도
단점 높은 실시간성 느림

 

따라서 현재는 아래와같이 두개의 알고리즘 모두 계속 개발 되어 가고 있는 추세라고 보시면 됩니다.

 

 


 

다음 포스트는 Object Tracking에 대하여 알아보겠습니다.

https://mickael-k.tistory.com/26

 

Object Tracking 이란?

strat() { Object Tracking을 공부하기 앞서 Object Detection에 관해서 그리고 Classification에 관해서 제 다른 포스트에서 공부를 하고 오시면 이해가 더 쉬울겁니다. 1. Classification 2. Object Detection O..

mickael-k.tistory.com

 


출처

1. https://cv-tricks.com/object-detection/faster-r-cnn-yolo-ssd/


return 0;

}

 

Comments