본문 바로가기
인공지능/딥러닝

딥러닝 Object detection (이미지에서 객체를 검출 하는 방법) (feat 딥러닝 이전) - 1

by 도토리묵 :D 2022. 11. 27.

지난번까지 우리는 CNN에 대해 알아보았다. 이미지를 Classification(분류) 하는 것뿐 아니라 이미지 내부에서 localization(어느 위치에 물체가 존재하는지 구체적인 위치를 특정) 하는 것을 object detection이라고 한다. 오늘은 이 object detection에 대해 알아보자!!

 

 

 

 

📍이미지에서 사물을 인식하는 방법

 

이미지 에서 사물을 인식하는 방법에는 크게 4가지가 있다.

 

먼저 Classification 이라고 불리는 전통적인 분류 문제는 하나의 이미지를 입력으로 받아 해당 이미지가 어떤 것인지 맞추는 것이다.

 

여기에 Localization 이 추가된 방법은 해당 이미지가 어떠한 것인지 맞추고 추가로 이미지 내에서  객체가 어느 위치에 존재하는지 두 번째 사진과 같이 바운딩 박스로 표시를 해주는 것이다.

 

그리고 세번째 object detection 방법은 이미지 내에 다양한 사물이 존재하는 상황에, 바운딩 박스를 통해 각각의 위치와 종류를 분류하는 방법이다.

 

마지막으로 Instance segmentation은 이미지 내에 존재하는 모든 객체 각각의 인스턴스에 대해 픽셀 단위로 구분하는 방법이다.

 

이중 object detection을 이번엔 중점적으로 다뤄보겠다.

 

 

 

📍객체 검출의 발전 과정

 

객체 검출이 언제부터 어떻게 발전해 왔는지 역사를 알아보자

Object Detection Milestones

객체 인식 방법의 시초는 2001년 비올라 존스의 얼굴 감지 알고리즘으로부터 시작되었다.

2004년에 hog 특징과 svm의 결합으로 보행자 검출을 위한 hog 디텍터가 발표되었다.

2년 뒤 2008 년 펜젠스왈브에 의해 hog 디텍터의 확장 버전으로 DPM이 발표되었습니다.

 

간략하게 하나씩 알아보자!!

 

 

 

 

✅ Viola - jones detector (haar-like feature)

 

 

객체 감지 알고리즘의 첫 번째 성공적인 구현은 2001년 비올라와 존스가 얼굴 감지 알고리즘에 사용하는 haar – like feature로 시작을 한다.

 

간략하게 설명하면, haar 알고리즘은 사람 얼굴에서 일반적으로 나타나는 명암을 특징으로 활용한다.

얼굴에서 이마와 콧대 부분은 밝기 때문에 1의 값을, 눈가는 깊게 파여 어둡기 때문에 0 값을 주는 단순한 아이디어에서 생각해냈다.

위의 사진에서 검정과 흰색 부분에 해당하는 밝기 값을 빼서 임계 값 이상인 영역을 찾아내는 방식으로 이해하면 된다.

 

이 알고리즘은 물체 검출 성능이 높고, 특정 영역에 대한 덧셈 연산만 진행하기 때문에 고속으로 처리 가능하고 특히 얼굴 검출 실행 속도가 빠른 장점이 있다.

 

하지만 영역 간 밝기 차를 이용하는 만큼 광원의 방향 변화에 따른 영상 밝기 변화에 영향을 받아 물체가 회전된 경우에는 검출이 힘든 단점이 있다.

그리고 다양한 배경과 물체가 복합적으로 이루어져 있는 이미지에서는 물체 검출 시 오인식할 가능성이 매우 높은 단점이 있다.

 

 

 

 

 

✅ HOG (Histograms of Oriented Gradients) detector

Hog 디텍터는 2005년 다랄과 트릭스가 보행자 검출을 위해 만든 알고리즘이다.

 

Hog는 영상의 Edge 성분을 이용해 특징을 생성하지 때문에 앞의 비올라 존스 디텍터와 달리 조명에 영향이 크지 않은 장점이 있다.

 

 

📌Hog detector 원리

Hog detector 원리

 

동작 순서를 간략하게 설명하자면 이미지를 block단위로 나누고 block 내부의 위치한 각 셀 들에 대해 기울기에 관한 히스토그램을 만든다.

각 셀의 기울기는 이미지 인접 픽셀 간 값의 차이에 대한 gradient값이다.

 

이것은 한 블록에 대한 특징 백터가 되며, 이와 같은 과정을 이미지의 모든 블록에 적용하고 이어 붙이면 최종 1차원 hog feature 백터를 구할 수 있다.

 

 

📌HOG + SVM

 

Hog 특징 벡터가 나오게 되면 이를 서포트 벡터 머신으로 분류를 한다.

서포트 벡터 머신은 분류 과제에 사용할 수 있는 머신러닝 지도학습 모델이다.

 

이를 통해 사람인지 아닌지를 판단한다.

그 당시 hog detector는 잘 동작한다고 알려져 있고, 그로 인해 후속 연구가 많이 진행되었다.

 

 

 

 

✅ DPM (Deformable Part Model)

위에서 말한 hog detector에 후속 연구 중 하나가 DPM이다

 

 

DPM은 2008년 펜젠스왈브가 hog디텍터의 확장 버전으로 발표했다.

 

DPM의 특징은 사람 객체의 각 부분  즉, 머리 몸통 다리에 대한 템플릿들을 미리 가지고 있다.

그리고 그 템플릿 들은 각각이 변형된 형태까지 가지고 있었다. 

 

이러다 보니 당시 수준에서는 굉장히 잘 동작했다고 한다.

 

그리고 최초로 바운딩 박스라는 개념을 적용시켰다.

 

 

📌 DPM 동작 원리

 

바운딩 박스를 그려 일정 크기의 픽셀마다 이동하며, 박스 영역 안의  block 마다 hog feature에 대해 히스토그램을 분석함으로 해당 block의 특징들을 선별하게 된다.

 

바운딩 박스 영역 매칭

 

그리고 미리 만들어진 인체 각 부위의 템플릿 필터들을 가지고 바운딩 박스 영역마다 매칭을 한다.

템플릿 별 일치 결과를 종합함으로써 각 객체를 분류하는 방법을 사용했다.

 

만약 템플릿이 얼굴 필터라면, 블록을 돌아다니면서 어디가 얼굴인지 svm을 통해 classification을 하게 된다.

결국 다양한 템플릿 필터를 통해  svm으로 classification 한 결과를 이용하여 최종적인 분류를 한 것이니 앙상블 기법이 적용되었다고 할 수 있다.

 

하지만 DPM에는 문제점이 있었다.

슬라이딩 윈도우를 통해 이미지의 모든 부분을 일일이 계산하면 굉장히 많은 바운딩 박스가 형성될 것이고 각각의 바운딩 박스마다 복잡한 classification 과정을 거치게 된다. 이렇게 되면 background를 검출하는 잉여시간이 너무 많아진다.

 

이러한 문제들로 인해 object detection 영역에서 힘을 못쓰다가 CNN분야인 AlexNet의 등장으로 객체인식이 획기적인 발전을 하게 되는데 그 모델이 바로  R-CNN이다.

 

 

 

 

다음 시간에는 딥러닝 이후의 Object detection에 대해 알아보도록 하겠다.

 

댓글