컴퓨터 비전

컴퓨터 비전이란?

꼭 알아야 할 3가지 사항

컴퓨터 비전이란 영상, 비디오 또는 포인트 클라우드로부터 정보를 추출하는 일련의 기법입니다. 영상 인식, 객체 검출, 행동 인식, 3차원 자세 추정, 비디오 추적, 모션 추정 등이 컴퓨터 비전에 속합니다. 실제 응용 사례에는 얼굴 인식을 통한 스마트폰 로그인, 자율주행 차량의 보행자 및 차량 회피, 의료 MRI에서의 종양 검출 등이 있습니다. 컴퓨터 비전 기법의 개발에는 MATLAB®Simulink® 같은 소프트웨어 툴이 사용됩니다.

작동 방식

대부분의 컴퓨터 비전 기법은 광범위한 실제 세계 데이터와 데이터 탐색, 모델 훈련, 알고리즘 개발 워크플로를 사용하여 개발됩니다. 컴퓨터 비전 엔지니어는 특정한 관심 문제에 맞춰 기존의 기법을 수정하는 방식을 흔히 사용합니다. 컴퓨터 비전 시스템에 사용되는 주요 접근법은 아래에 설명되어 있습니다.

딥러닝 기반 기법

컴퓨터 비전에 대한 딥러닝 접근법은 객체 검출, 객체 인식, 영상 디블러 처리, 장면 분할에서 유용하게 사용됩니다. 딥러닝 접근법에서는 CNN(컨벌루션 신경망)을 훈련시켜, 다양한 규모로 패턴을 활용해 데이터로부터 직접 학습합니다. CNN을 훈련시키기 위해서는 대규모의 레이블 지정 영상이나 포인트 클라우드가 필요합니다. 전이 학습사전 훈련된 신경망을 사용하여 더 적은 훈련 데이터로 이 과정을 가속화합니다.

MATLAB에서 Computer Vision Toolbox를 사용한 거리에 대한 의미론적 분할.

MATLAB에서 Computer Vision Toolbox를 사용한 거리에 대한 의미론적 분할.

특징 기반 기법

특징 검출 및 추출 기법은 영상 정렬, 비디오 안정화, 객체 검출 등을 위해 영상과 포인트 클라우드에 있는 패턴이나 구조를 식별하는 컴퓨터 비전 알고리즘입니다. 영상에서 유용한 특징에는 경계, 코너 또는 균일 밀도 영역 등이 있으며, BRISK, SURF, ORB 등의 검출기를 사용하여 그러한 특징을 식별할 수 있습니다. 포인트 클라우드에는 고유값 기반 특징 추출기나 FPFH(빠른 특징점 히스토그램) 추출기를 사용할 수 있습니다.

특징 매칭을 사용하여 움직이는 우주선에서 획득한 영상과 참조 영상 비교.

특징 매칭을 사용하여 움직이는 우주선에서 획득한 영상(오른쪽)과 참조 영상(왼쪽) 비교. (이미지 제공: NASA)

영상 처리

흔히 컴퓨터 비전 워크플로에서 전처리 단계로 영상 처리 기법을 적용합니다. 전처리 유형은 작업에 따라 달라집니다. 다음과 같은 관련 영상 처리 기법이 있습니다.

MATLAB에서 rgb2hsv 색 변환을 사용한 빨간 원뿔 감지.

MATLAB에서 rgb2hsv 색 변환을 사용한 빨간 원뿔 감지.

포인트 클라우드 처리

포인트 클라우드는 3차원 공간에 있는 데이터 포인트의 집합으로서, 함께 모여 3차원 형상이나 객체를 나타냅니다. 포인트 클라우드 처리는 보통 포인트 클라우드를 분석하는 컴퓨터 비전 알고리즘을 준비하는 과정에서 데이터를 전처리하는 데 사용됩니다. 일반적으로 포인트 클라우드 처리는 다음과 같은 작업을 수반합니다.

MATLAB에서 ICP(Iterative Closest Point)를 사용한 3차원 포인트 클라우드 정합 및 스티칭.

MATLAB에서 ICP(Iterative Closest Point)를 사용한 3차원 포인트 클라우드 정합 및 스티칭.

3차원 비전 처리

3차원 비전 처리 기법은 보정된 카메라로 촬영한 다수의 영상을 사용하여 장면의 3차원 구조를 추정합니다. 이런 영상은 일반적으로 단안 카메라 또는 한 쌍의 스테레오 카메라로 생성합니다. 다음과 같은 3차원 비전 처리 기법이 있습니다.

MATLAB에서 SfM(움직임 기반 구조)을 사용한 객체의 3차원 복원.

MATLAB에서 SfM(움직임 기반 구조)을 사용한 객체의 3차원 복원.

중요한 이유

컴퓨터 비전은 다양한 실제 응용 분야에서 필수적입니다. 컴퓨터 비전이 가장 널리 사용되는 몇 가지 분야가 아래에 설명되어 있습니다.

자율 시스템

항공 또는 지상 자율 시스템에서는 환경에서 시각적 데이터나 포인트 클라우드 데이터를 수집하는 다양한 센서를 활용합니다. 시스템에서는 이런 데이터와 SLAM(동시적 위치추정 및 지도작성) 및 추적 같은 컴퓨터 비전 기능을 사용하여 환경 지도를 작성합니다. 자율 시스템에서는 그러한 지도를 사용하여 도로, 보행로 또는 건물을 분할하고 인간과 차량을 감지하고 추적할 수 있습니다. 예를 들면 BMW는 ADV(Assisted Driving View)에서 컴퓨터 비전 기능을 사용하여 주변 차량을 표시하고 그 유형을 식별합니다.

실제 데이터를 사용한 BMW의Assisted Driving View 종단간 테스트를 지원하는 MATLAB.

실제 데이터를 사용한 BMW의Assisted Driving View 종단간 테스트를 지원하는 MATLAB.

산업 응용 분야

컴퓨터 비전은 부품 품질 모니터링이나 인프라 정비 같은 제조업 응용 분야에 사용됩니다. 예를 들어 Shell에서는 훈련된 R-CNN(영역 컨벌루션 신경망)을 사용하여 기계의 태그를 식별했습니다. TimkenSteel에서도 그와 동일한 기능을 제조 중 품질 관리, 저품질 또는 결함 부품 식별에 활용했습니다.

MATLAB에서 OCR과 딥러닝을 사용한 태그 인식.

MATLAB에서 OCR과 딥러닝을 사용한 태그 인식.

건설업 및 농업

건설업과 농업에서는 컴퓨터 비전을 사용하여 항공 촬영한 인프라나 지형 데이터로부터 정보를 추출합니다. 항공 플랫폼에서 촬영한 영상, 포인트 클라우드 또는 초분광 데이터를 분석하는데 스펙트럼 시그니처 지도작성, 객체 검출, 분할 등의 컴퓨터 비전 기능이 적용됩니다. 일본의 Yachiyo Engineering에서는 의미론적 분할과 이러한 기능을 사용하여 댐과 교량의 손상을 검출하고 있습니다. 농부들도 드론으로 농장의 초분광 영상을 획득하여 작물의 생육 상태를 분석합니다.

MATLAB에서 SegNet을 사용한 댐 표면의 손상 검출.

MATLAB에서 SegNet을 사용한 댐 표면의 손상 검출.

사진

지난 10년 동안 카메라와 스마트폰에서도 컴퓨터 비전 사용이 크게 증가하였습니다. 이런 기기에서는 얼굴 검출 및 추적을 사용하여 얼굴에 초점을 맞추고 스티칭 알고리즘을 사용하여 파노라마를 생성합니다. 또한 OCR(광학 문자 인식) 또는 바코드나 QR 코드 스캐너를 통합하여 저장된 정보에 액세스합니다.

MATLAB에서 특징 기반 영상 정합 기법을 사용한 파노라마 영상 생성.

MATLAB에서 특징 기반 영상 정합 기법을 사용한 파노라마 영상 생성.

MATLAB을 사용한 컴퓨터 비전

MATLAB의 Image Processing Toolbox™, Computer Vision Toolbox™, Lidar Toolbox™는 컴퓨터 비전 기능을 구축하는 데 사용할 수 있는 앱, 알고리즘 및 훈련된 신경망을 제공합니다. 영상 또는 포인트 클라우드 데이터를 가져오고 전처리하며 내장된 알고리즘과 딥러닝 신경망을 사용하여 데이터를 분석할 수 있습니다. 툴박스에 있는 예제를 이용하여 바로 시작할 수 있습니다.

MATLAB을 사용한 결함 검출

Computer Vision Toolbox를 사용하여 기계 부품, 전자회로 등의 객체에 있는 이상 및 결함을 검출할 수 있습니다. 먼저 Image Processing Toolbox에 있는 영상 전처리 알고리즘으로 정렬 보정, 색상별 분할, 영상 명암 조정 같은 기능을 사용하여 적절한 특징을 검출할 확률을 높일 수 있습니다.

결함 검출 단계는 흔히 딥러닝을 사용하여 수행합니다. MATLAB의 영상, 비디오 또는 라이다 레이블 지정 앱을 사용하여 의미론적 분할 또는 인스턴스 분할 마스크를 생성하여 데이터에 레이블을 지정함으로써 딥러닝에 필요한 훈련 데이터를 제공할 수 있습니다. 이어서 처음부터 또는 전이 학습을 사용하여 딥러닝 신경망을 훈련시킬 수 있습니다. 이후 훈련된 신경망이나 사전 훈련된 신경망을 사용하여 이상 또는 결함을 기준으로 객체를 분류할 수 있습니다.

MATLAB에서 훈련시킨 딥러닝 신경망을 사용한 불량 및 양품 너트 검출.

MATLAB에서 훈련시킨 딥러닝 신경망을 사용한 불량 및 양품 너트 검출.

MATLAB을 사용한 객체 검출 및 추적

객체 검출 및 추적은 차량 또는 사람 검출, 바코드 판독, 장면 내 객체 검출 같은 응용 분야에 잘 알려진 컴퓨터 비전 사용 사례 중 하나입니다. 심층 신경망 디자이너를 사용하여 MATLAB에서 딥러닝 신경망을 구축해 YOLO v3를 사용한 자동차 검출 같은 응용 분야에 활용할 수 있습니다. 레이블이 지정된 훈련 데이터를 불러와 데이터를 전처리하고, YOLO v3 신경망을 정의하고 훈련시켜 실측 데이터와 비교해 정밀도미검출율을 평가하는 것입니다. 그런 다음 이 신경망을 사용하여 자동차를 검출하고 객체 주위에 경계 상자를 표시할 수 있습니다.

MATLAB에서 심층 신경망 디자이너로 생성한 YOLO v3를 사용한 자동차 검출.

MATLAB에서 심층 신경망 디자이너로 생성한 YOLO v3를 사용한 자동차 검출.

자율 시스템 시뮬레이션에서 컴퓨터 비전 및 Simulink 사용

컴퓨터 비전에서 나온 객체 검출 및 추적 결과를 로봇공학 또는 자율 시스템에서 사용하여 의사결정을 할 수 있습니다. 센서 융합을 사용한 AEB(자율 긴급 제동) 예제는 컴퓨터 비전 기능을 통합한 Simulink 모델을 손쉽게 구축할 수 있음을 보여줍니다. 이 모델은 두 부분으로 이루어져 있는데, 차량 전방에 있는 장애물을 검출하는 컴퓨터 비전 및 센서 융합 모델과 운전자에게 경고하며 자동으로 브레이크를 작동시키는 FCW(전방 충돌 경고) 시스템이 그것입니다. 이 예제를 통해 Simulink를 사용하여 컴퓨터 비전 알고리즘을 더 큰 시스템 시뮬레이션에 통합하는 방법을 알 수 있습니다.

Simulink를 사용한 차량 전방 객체 검출.

Simulink를 사용한 차량 전방 객체 검출.

Computer Vision Toolbox를 사용한 위치추정과 지도작성

MATLAB에서 컴퓨터 비전을 사용하여 vSLAM(시각적 동시적 위치추정 및 지도작성)으로 카메라 위치를 추정하고 환경 지도를 작성하며, SfM(움직임 기반 구조)으로 객체의 3차원 모델을 만들고 심도를 추정할 수 있습니다.

imageDatastorebagOfFeatures 같은 MATLAB 내장 기능을 사용하여 환경 지도를 작성하면서 동시에 스테레오 카메라 쌍의 위치를 추정할 수 있습니다. 영상 쌍 간의 매칭되는 특징을 식별하여 지도를 초기화하고, 이어서 지도에서 카메라 위치 및 특징 위치를 추정하고, 번들 조정을 사용하여 장면을 가로지르며 이동하는 카메라의 위치와 방향을 정교하게 조정할 수 있습니다.

Computer Vision Toolbox에서 ORB-SLAM2를 사용한 스테레오 카메라 쌍 간의 특징 매칭.

Computer Vision Toolbox에서 ORB-SLAM2를 사용한 스테레오 카메라 쌍 간의 특징 매칭.

객체 수 세기

컴퓨터 비전을 사용하여 영상 또는 비디오에 있는 객체의 개수를 셀 수도 있습니다. 세포 계수 예제에서는 모폴로지 연산자를 적용하여 세포를 분할하고 블롭 분석을 사용하여 세포의 중심을 찾아 찾은 중심의 개수를 셀 수 있습니다. 이후, 이 과정을 비디오의 모든 프레임에 대해 반복합니다.

MATLAB에서 모폴로지 연산자와 블롭 분석을 사용한 세포 계수.

MATLAB에서 모폴로지 연산자와 블롭 분석을 사용한 세포 계수.

MATLAB에서 영상 분할기색 이진화 앱과 같은 앱을 사용하면 대화형 사용자 인터페이스를 통해 영상에 있는 객체를 분할할 수 있습니다. 영상 영역 분석기 앱을 사용하면 편리하게 영상에 있는 객체의 개수를 세고, 면적, 질량 중심 등등의 속성을 계산할 수 있습니다.