Posts List

[머신러닝/딥러닝] 9-3. CNN을 활용한 컴퓨터 비전 - Object Detection

Computer Vision with CNN

CNN을 다루는 마지막 챕터가 될 것 같다. [머신러닝/딥러닝] 수업이 끝나면 [컴퓨터 비전] 수업이 따로 기다리고 있기 때문에 이번 포스팅에서는 예습하는 기분으로 가볍게 다룬다.

처음부터 영상처리에 관심에 있는 것이 아니라, 딥러닝을 공부하다보니 CNN을 알게되고, CNN을 공부하다보니 컴퓨터 비전이라는 단어도 알게되는 사람이 많다. 나도 그 중 한명이었는데, 몰라도 일하는덴 상관없지만 모르면 부끄러울 것들이 있다. 바로 영상처리의 목적을 분리해서 이해하는 것이다.

영상처리에 대해 관심을 갖기 전, CNN으로 이미지를 '분류(classification)'해놓고 '탐지(detection)'했다고 말하며 뿌듯해하던 기억이 나는데, 사실은 전혀 달랐다는 것을 뒤늦게 깨닫고 낯부끄러웠던 적이 있다. 그래서 일단 이미지 인식(Recognition)분야의 종류에 대해서 정리하고, 각 기술별로 간단히 포스팅하도록 한다.


[ 영상 인식(Recognition)의 종류, 출처 : 나]

컴퓨터 비전은 영상을 이용한 모든 기술을 총칭하는데, 그 중 영상 인식(Recognition)에 대해서 알아보자.

Image Recognition 

 : Image Recognition은 이미지나 영상으로부터 정보를 뽑아 사람이 '인식'할 수 있게 하는 기술을 총칭한다. Image Recognition의 종류는 크게 아래 4가지로 나뉠 수 있다.

Image Classification

 - Image를 discrete 한 class로 구분(혹은 분류) 하는 기술을 의미한다.

 - 위 그림과 같이 Image를 보고 '고양이'일 '확률'이 출력된다. (softmax)
   ※ softmax → 각 class의 확률을 모두 더하면 1.0

Image Localization

 - Image에서 발견된 class가 어디'쯤' 위치하는지 bounding box로 표현하는 기술이다.

 - 위 그림과 같이 (고양이일 확률, X좌표, Y좌표, box의 너비, box의 길이)가 출력된다.

Object Detection

 - Image에서 다수의 객체(object)를 모두 찾아 bounding box로 표현하는 기술이다.

 - 위 그림과 같이 (각 object의 확률, bounding box의 좌표)가 출력된다. (logistic)
   ※ logistic → 각 class의 확률을 독립적으로 본다.

Instance Segmentation

 - Object Detection의 발전된 형태로, object의 형태까지 찾는 기술이다.

 - 위 그림과 같이 bounding box보다 자세하게 object의 x, y좌표를 찾아낸다.


그럼 이제 앞 포스팅에서 충분히 다루었던 Classification은 생략하고 Object detection부터 조금 자세히 알아보도록 하자.


1. Object Detection

객체 탐지(Object Detection)는 앞서 설명했듯, 단순히 이미지를 1개 class로 분류(classification)하는 것을 넘어, 복수 객체의 위치까지(localization) 알아내는 기술이다. 이 때, 객체의 위치를 표현하기 위한 box를 bounding box라고 한다. 물론 CNN이 등장하기 전부터 활발히 연구되던 분야지만, CNN 등장 후 획기적인 성과를 달성한 분야이기도 하다.

1) R-CNN (Regions with CNN)

CNN을 활용해 객체 탐지를 시도한 첫번째 논문은 2014년 Ross Girshick에 의해 CVPR에서 R-CNN이라는 알고리즘으로 발표 됐다.
※ Rich feature hierarchies for accurate object detection and semantic segmentation, 2014

이 때는 아직 CNN 연구의 진행 수준이 낮아서 CNN은 Feature map 추출 용도로만 사용하고 Feature map 분류는 SVM(Support Vector Machine)을 사용했다. 그래도 CNN이 만든 feature map이 특징을 잘 표현했는지 성능은 좋았지만 1장의 이미지를 예측하기 위해 약 47초나 걸릴 정도로 느렸다.

2) Fast R-CNN

그래서 2015년에 Ross Girshick는 R-CNN의 빠른 버전인 Fast R-CNN을 ICCV에서 발표한다.
※ Fast R-CNN, ICCV, 2015

Fast R-CNN에서 달라진 점은 CNN의 feature map을 SVM이 아닌 FC Layer를 이용해 분류와 bounding box를 찾는데 사용한 것이다. 실제로 위 그림에서 확인할 수 있듯, Feature map을 2개의 FC layer가 각각 softmax, regressor를 거쳐 classification과 bounding box를 찾는 모습을 확인할 수 있다.

3) Faster R-CNN

집요한 Ross Girshick는 같은해 NeurIPS에서 Fast R-CNN보다 더 빠른 Faster R-CNN을 발표한다.
※ Faster R-CNN: Towards Real-Time Object Detection with Regional Proposal Networks, NeurIPS, 2015

객체 탐지의 Naive approach는 특정 window를 이미지의 처음부터 끝까지 훑으면서 객체가 있는지 판단하는 것이다. 하지만 탐색해야 하는 범위가 너무 넓어 연산이 오래 걸린다.

Fast R-CNN까지는 위 문제 해결을 위해 region proposal을 rule-base의 알고리즘을 직접 구현했었다. 하지만 Faster R-CNN은 이 알고리즘까지 신경망 구조(RPN)로 교체함으로써 훨씬 빠르게 region proposal이 가능하도록 개선시켰다.

Ross Grishick의 이런 노력은 실제로 Real-time Object detection이 가능하도록 획기적인 학습/실행 속도를 개선시켜 현재까지도 Object detection의 근간이 되고 있다.

4) YoLo (You only Look once)

Grishick를 만나보진 못했지만 대단히 집요한 사람이란 생각이 든다. 주 저자는 아니지만 Joseph Redmon, Santosh Divvala와 함께 2016년 CVPR에서 YoLo라 이름붙인 Faster R-CNN보다 10배 더 빠른 알고리즘을 발표한다.

YoLo는 Faster R-CNN의 RPN조차 병합해서 1개의 End-to-End 방식의 통합 CNN구조로 각 클래스의 확률과 bounding box의 좌표 모두를 출력한다. 이 연구는 최초의 Real time object detector를 구현했다고 평가받으며 현재까지도 대부분의 Object detection은 YoLo로 구현된다. 

5) etc.

지금까지 설명한 알고리즘 외에도 Object Detection 분야는 계속해서 발전해 나가고 있으니 관심있는 알고리즘은 관련 논문을 읽어봐도 재미있을 것 같다. (LEGO 경진대회를 보는 느낌이다.)


댓글 쓰기

0 댓글