객체 검출

객체 검출이란?

객체 검출은 영상이나 비디오에서 객체 인스턴스를 찾기 위한 컴퓨터 비전 기법입니다. 객체 검출 알고리즘은 일반적으로 머신러닝이나 딥러닝을 활용하여 유의미한 결과를 산출합니다. 사람은 영상이나 비디오를 보면 관심 객체를 바로 인식하고 찾을 수 있습니다. 객체 검출의 목표는 컴퓨터를 사용하여 이러한 지능을 재현하는 것입니다.

객체 검출이 중요한 이유

ADAS(첨단 운전자 보조 시스템)에서 사용되는 주요 기술인 객체 검출은 자동차가 차선과 보행자를 검출할 수 있도록 하여 도로 안전을 개선합니다. 또한 객체 검출은 외관 검사, 로보틱스, 의료 영상, 비디오 감시, 콘텐츠 기반 영상 검색과 같은 응용 분야에서도 필수적인 구성요소입니다.

객체 검출을 사용하여 식별된, 고속도로의 차량 사진에 적용된 레이블을 보여주는 스크린샷.

객체 검출을 사용한 차량 식별 및 찾기.

객체 검출의 작동 방식

딥러닝을 사용한 객체 검출

다양한 기법을 사용하여 객체 검출을 수행할 수 있습니다. YOLO, SSD, R-CNN 같은 CNN(컨벌루션 신경망) 을 사용하는 널리 사용되는 딥러닝 기반 접근법은 영상 내에서 객체를 검출하는 방법을 자동으로 학습합니다.

다음의 두 가지 주요 접근법 중 하나를 선택하여 딥러닝을 사용한 객체 검출을 시작할 수 있습니다.

  • 사전 훈련된 객체 검출기 사용. 여러 딥러닝 객체 검출기는 대규모 데이터셋으로 훈련되어 사람, 차량 또는 영상 텍스트와 같은 일반적인 객체를 추가적인 훈련 없이 검출할 수 있습니다.
  • 사용자 지정 객체 검출기 만들기 및 훈련. 특정 요구사항에 맞게 객체 검출기를 조정하려는 경우 전이 학습을 사용할 수 있습니다. 이 접근법을 사용하면 사전 훈련된 신경망을 기반으로 구축한 후 응용 분야에 맞게 더 세밀하게 조정할 수 있습니다. 이 방법에서는 객체 검출기가 수천 개, 많게는 수백만 개의 영상을 통해 이미 훈련되어 있으므로 처음부터 훈련시키는 방법보다 더 빨리 결과를 제공할 수 있습니다.
정지 표지판에 접근 중인 자동차가 있는 거리 장면을 보여주는 영상. 객체 검출을 사용하는 예제로, 사전 훈련된 모델이 표지판에 레이블을 지정하며 신뢰수준이 포함됩니다.

사전 훈련된 R-CNN을 사용한 정지 표지판 검출.MATLAB 코드 예제를 참조하십시오.

사전 훈련된 객체 검출기를 사용하든 사용자 지정 객체 검출기를 만들든 선호하는 객체 검출 신경망의 유형을 결정해야 합니다.

회로 보드, 고속도로 장면, 물 위의 보트 영상이며 객체가 검출되어 레이블이 지정되어 있습니다.

사전 훈련된 YOLOX 신경망을 사용한 ROI(관심 영역) 내 소형 회로 보드의 특징, 차량, 객체를 검출. MATLAB 코드 예제를 참조하십시오.

머신러닝을 사용한 객체 검출

머신러닝 기법도 일반적으로 객체 검출에 사용되며, 딥러닝과는 다른 접근법을 제공합니다. 일반적인 머신러닝 기법은 다음과 같습니다.

  • ACF(Aggregate Channel Feature)
  • HOG(Histogram of Oriented Gradient) 특징을 사용한 SVM(서포트 벡터 머신) 분류
  • 사람 얼굴 또는 상체 검출을 위한 Viola-Jones 알고리즘

ACF 객체 검출 알고리즘을 사용한 보행자 추적.MATLAB 코드 예제를 참조하십시오.

딥러닝 기반 접근법과 마찬가지로 사전 훈련된 객체 검출기로 시작하거나 응용 분야에 맞는 사용자 지정 객체 검출기를 만들 수 있습니다. 머신러닝을 사용하는 경우 딥러닝 기반 워크플로의 자동 특징 선택과 달리 객체의 식별 특징을 수작업으로 선택해야 합니다.

객체 검출을 위한 머신러닝과 딥러닝 비교

가장 좋은 객체 검출 방법은 응용 분야와 해결하려는 문제에 따라 다릅니다. 머신러닝과 딥러닝 중에서 선택할 때는 강력한 GPU가 있는지와 레이블이 지정된 훈련 영상이 풍부한지 여부를 고려해야 합니다. 두 가지 모두 없는 경우 머신러닝 접근법이 더 나은 선택일 수 있습니다. 딥러닝 기법은 영상이 많은 경우에 더 우수한 성능을 발휘하는 경우가 많으며, GPU는 모델 훈련에 필요한 시간을 줄여줍니다.

기타 객체 검출 방법

딥러닝이나 머신러닝 기반 객체 검출뿐만 아니라, 응용 분야에 따라 적용할 수 있는 다음과 같은 여러 일반적인 기법이 있습니다.

  • 영상 분할과 블롭 분석, 이 기법에서는 크기, 모양, 색과 같은 단순한 객체 속성이 사용됨
  • 인스턴스 분할, 각 객체의 정확한 모양과 영역의 픽셀 단위 분할 마스크를 예측하는 기법
  • 키포인트 검출, 객체의 특정 관심 지점을 예측하는 기법 
  • 특징 기반 객체 검출, 이 기법은 특징 추출, 매칭, RANSAC을 사용하여 객체의 위치 추정함
여러 객체가 어지럽게 놓여 있는 책상으로, 객체 검출을 사용하여 스테이플 제거기 상자가 식별됩니다.

MATLAB에서의 객체 검출. 어수선한 장면에서 특징점 매칭을 사용하여 스테이플 제거기가 검출되었습니다.MATLAB 코드 예제를 참조하십시오.

MATLAB를 사용한 객체 검출

전문가가 아니더라도 단 몇 줄의 MATLAB® 코드로 객체 검출을 위한 머신러닝 모델과 딥러닝 모델을 구축할 수 있습니다.

앱을 사용하여 훈련 영상에 자동으로 레이블 지정

MATLAB은 훈련 데이터를 준비하고 컨벌루션 신경망을 사용자 지정하기 위한 대화형 방식의 앱을 제공합니다. 객체 검출기를 위한 테스트 영상에 레이블을 지정하는 작업은 번거로우며, 우수한 성능의 객체 검출기를 만들기에 충분한 훈련 데이터를 확보하려면 상당한 시간이 걸릴 수 있습니다. 영상 레이블 지정기 앱은 영상 모음 내의 객체에 레이블을 대화형 방식으로 지정할 수 있게 해주며, ground-truth 데이터에 자동으로 레이블을 지정하기 위한 내장 알고리즘을 제공합니다. 자율주행 응용 분야에는 Ground Truth 레이블 지정기 앱을 사용할 수 있으며 비디오 처리 워크플로에는 비디오 레이블 지정기 앱을 사용할 수 있습니다.

대화형 방식의 객체 검출 알고리즘 생성 및 프레임워크 간 상호운용

기존 CNN을 사용자 지정하거나 새로 만드는 경우 귀중한 훈련 시간이 낭비될 수 있는 아키텍처 문제가 발생하기 쉽습니다. 심층 신경망 디자이너 앱을 사용하면 대화형 방식으로 딥러닝 신경망을 구축, 편집, 시각화할 수 있으며, 신경망 훈련에 앞서 아키텍처 문제를 검사하기 위한 분석 툴도 제공합니다.

MATLAB에서는 ONNX™(Open Neural Network Exchange) 가져오기 및 내보내기 기능을 사용하여 TensorFlow™-Keras, PyTorch®, Caffe2 같은 프레임워크에서 신경망 및 신경망 아키텍처와 상호운용할 수 있습니다.

ONNX에 의해 활성화되는 MATLAB과 TensorFlow, Caffe2, PyTorch, MXNet, Core ML, Chainer, Cognitive Toolkit 등 프레임워크 간의 상호운용성을 보여주는 다이어그램.

TensorFlow, PyTorch ONNX 모델에서 가져오고 이러한 모델로 내보낼 수 있습니다. 예제 보기

배포를 위한 최적화된 코드 자동 생성

MATLAB으로 알고리즘을 생성한 후 자동화된 워크플로를 활용하여 GPU Coder™ 로 TensorRT 또는 CUDA®  코드를 생성하여 Hardware-in-the-Loop 테스트를 수행할 수 있습니다. 생성된 코드를 기존 프로젝트와 통합하여 데스크탑 GPU 또는 임베디드 GPU(예: NVIDIA® Jetson™ 또는 NVIDIA Drive 플랫폼)에서 객체 검출 알고리즘을 검증하는 데 사용될 수 있습니다.