본문 바로가기

AI/Object Detection

[OD] Object Detection이란

대표적인 객체 탐지 알고리즘에 대해 살펴보겠습니다.

단일 단계 방식의 객체 탐지 알고리즘, YOLO

YOLO(You Only Look Once)는 대표적인 단일 단계 방식의 객체 탐지 알고리즘입니다. YOLO 알고리즘은 원본 이미지를 동일한 크기의 그리드로 나눕니다. 각 그리드에 대해 그리드 중앙을 중심으로 미리 정의된 형태(predefined shape)으로 지정된 경계박스의 개수를 예측하고 이를 기반으로 신뢰도를 계산합니다. 이미지에 객체가 포함되어 있는지, 또는 배경만 단독으로 있는지에 대한 여부가 포함되겠죠. 높은 객체 신뢰도를 가진 위치를 선택해 객체 카테고리를 파악합니다.

 

앵커 박스

 

 

미리 정의된 형태를 가진 경계박스 수를 ‘앵커 박스(Anchor Boxes)’라고 하는데요. 앵커 박스는 K-평균 알고리즘에 의한 데이터로부터 생성되며, 데이터 세트의 객체 크기와 형태에 대한 사전 정보를 확보합니다. 각각의 앵커는 각기 다른 크기와 형태의 객체를 탐지하도록 설계되어 있습니다. 그림 5를 보면 한 장소에 3개의 앵커가 있는데요. 이 중 붉은색 앵커 박스는 가운데에 있는 사람을 탐지합니다. 이 알고리즘은 앵커 박스와 유사한 크기의 개체를 탐지한다는 뜻인데요. 최종 예측은 앵커의 위치나 크기와는 차이가 있습니다. 이미지의 피쳐(Feature) 맵에서 확보한 최적화된 오프셋이 앵커 위치나 크기에 추가됩니다.

 

YOLO 네트워크 아키텍처

 

그림 6을 통해 YOLO 알고리즘의 아키텍처를 설명할 수 있는데요. 탐지 레이어는 많은 회귀 및 분류 최적화 도구를 포함하고 있으며 레이어의 개수는 앵커의 개수에 따라 결정됩니다.

 

이단계 방식의 객체 탐지 알고리즘, Faster RCNN

Faster RCNN은 이단계 방식의 객체 탐지 알고리즘인데요. 그림 7에서 Faster RCNN의 단계를 살펴보겠습니다. 이 알고리즘 이름에 ‘빠른(Faster)’이라는 단어가 포함되어 있지만 단일 단계 방식보다 빠른 처리가 된다는 뜻이 아니고 이전 버전이라 할 수 있는 RCNN 알고리즘과 Fast RCNN 알고리즘 보다 빠르다는 것을 뜻하는데요. 각 관심 영역(RoI; Region of Interest)에 대한 피쳐 추출의 계산을 공유하고 딥러닝 기반의 RPN을 도입해 구현할 수 있습니다.

Faster RCNN 단계

 

많은 CNN 레이어를 사용해 피쳐 맵을 추출하고 나면 RPN을 통해 개체를 포함하고 있을 가능성이 높은 윈도우가 다량으로 생성됩니다. 그런 다음 알고리즘은 각 윈도우에 있는 피쳐 맵을 검색하고, 고정 크기로 조정한 뒤(RoI 풀링) 클래스 확률과 해당 객체에 대한 더욱 정확한 경계박스를 예측합니다.

여기서 고려해야 할 점은 RPN이 윈도우를 생성하는 방법인데요. RPN은 YOLO와 마찬가지로 앵커 박스를 사용합니다. 하지만 YOLO 알고리즘과 다른 점은 앵커 박스가 데이터로부터 생성되는 것이 아니라 고정된 크기와 형태로 생성된다는 것인데요. 이 앵커 박스는 이미지를 보다 조밀하게 커버할 수 있습니다. RPN은 여러 객체 카테고리에 대한 분류 대신 윈도우의 객체 포함 유무에 대한 이진 분류(Binary Classification)만 수행합니다.

 

SAS 딥러닝(SAS Deep Learning)으로 객체 탐지 활용하기

이제 SAS 딥러닝(SAS Deep Learning)에서도 객체 탐지가 지원됩니다. 이에 대한 자세한 내용과 예시는 SAS 비주얼 데이터 마이닝 앤드 머신러닝(SAS Visual Data Mining and Machine Learning)에서 살펴보실 수 있습니다.

SAS 딥러닝은 프레임워크에서 생성된 모델이 실시간 프로세싱을 위한 SAS 이벤트 스트림 프로세싱(Event Stream Processing, ESP) 엔진에 추가적인 프로그래밍 없이 적용될 수 있다는 점에서 차별화됩니다. 현재 지원하고 있는 객체 탐지 알고리즘은 YOLOv1 및 YOLOv2으로, Faster RCNN과 레티나 네트워크(Retina Network) 지원 역시 가까운 시일 내에 이루어질 예정입니다.

SAS 딥러닝 프로그램에서 개발된 모델은 실시간 프로세싱의 세부사항에 대해 걱정할 필요 없이 SAS ESP에 간편하게 적용할 수 있습니다. 또한, SAS 딥러닝은 케라스(Keras) 타입의 파이썬(Phyton) 인터페이스인 DLPy를 제공하는데요. 이 오픈소스 프로젝트의 소스 코드 및 예시는 깃허브(GitHub)에서 확인하실 수 있습니다.

 

sassoftware/python-dlpy

The SAS Deep Learning Python (DLPy) package provides the high-level Python APIs to deep learning methods in SAS Visual Data Mining and Machine Learning. It allows users to build deep learning model...

github.com

 

 

 

 

 

딥러닝을 활용한 객체 탐지 알고리즘 이해하기

인공지능의 기반 기술 중 하나인 딥러닝은 눈부신 혁신을 거듭하고 있습니다.

blogs.sas.com

 

'AI > Object Detection' 카테고리의 다른 글

[OD] Non-Maximum Suppression(NMS)  (0) 2021.06.28
[OD] SPPnet  (0) 2021.06.25
[OD] Fast R-CNN  (0) 2021.06.25
[OD] R-CNN  (0) 2021.05.20
[OD] Object Detection 흐름  (0) 2021.05.20