탐험노트

최근 인공지능 머신러닝 분야에서 가장 관심이 집중되는 기술은 바로 이미지 인식(Image Recognition)’ 입니다.

이미지의 정보를 식별하는 기술로써 컴퓨터 비전 분야에서 오랫동안 연구된 기술 중 하나입니다.

이미지 인식은 단순히 사진 한 장을 인식하는 것이 아니라,

자율주행을 위한 무인 자동차 개발, 사람 얼굴을 인식하는 안면 인식,

의료 진단을 위한 엑스레이 사진 분석 등 다양한 산업에 적용됩니다.

 

이미지 인식을 위해서는 인식한 이미지가 어떤 종류인지 나누는 분류(Classification)’를 가장 먼저 진행합니다.

이미지의 위치를 확인한 후, 이미지 내의 객체(사람, 동물, 장난감 등)를 대략 구분해 추출합니다.

마지막 단계에서 객체를 실제 모양에 따라 정확하게 추출하는 과정을 거칩니다.

이러한 단계는 이미지 인식 기술의 실행과 품질에 직접적인 영향을 미칩니다.

 

이미지 인식 기술이 자리 잡을 수 있었던 계기에는 합성곱 신경망(CNN, Convolutional Neural Network)과 이미지 빅데이터의 등장이 결정적입니다.


CNN 알고리즘을 간단하게 표현한 그림

CNN은 이미지, 비디오, 오디오 등을 분류하는 딥러닝에서 주로 사용되는 알고리즘이며,

이미지에서 얼굴, 객체 등을 인식하는 패턴을 찾는 데 유용합니다.

CNN은 자동으로 특징을 학습하거나 기존 네트워크를 기반으로 CNN을 재학습하고

새로운 이미지로 인식하도록 만들 수 있는 장점이 있습니다.

여러 장점과 좋은 성능 때문에 컴퓨터 비전이 필요한 분야에 CNN이 널리 활용되고 있습니다.

여러 개의 레이어(계층)으로 구성되어 있는 CNN

인간의 시각 피질 작동 원리에서 출발한 CNN은 시각 피질처럼 여러 중첩이 존재합니다.

복잡하게 얽혀 있는 각 계층은 데이터 특징을 학습하기 위해 샘플링, 계산, 출력 등의 과정을 진행합니다.

이러한 과정이 수십, 수백 개의 계층에서 반복되면서 여러 특징을 추출합니다.

이런 중첩과 복잡한 신경망 구조를 높은 컴퓨팅 성능으로 해결하면서 인간의 시각 인식과 비슷한 수준이 됐습니다.

 

이미지 인식을 위한 데이터도 빼놓을 수 없습니다. 이미지 학습을 위해서는 대량의 이미지 데이터가 필요합니다.

과거보다는 이미지 데이터를 확보하기 쉬워져서 이미지 인식 기술 발전이 더욱더 빨라졌습니다.

과거 스마트폰이나 클라우드가 없었던 이미지 데이터를 모으는 것도 벅찼지만,

지금은 대량의 이미지 데이터를 언제 어디서나 내려 받을 수 있고, 이미지 데이터를 직접 촬영 하는 방법도 쉽고 다양합니다.

 

수많은 이미지 데이터를 기반으로 이미지를 인식하는 대표적인 서비스로 구글의 구글 포토가 있습니다.

구글은 20155월 구글 포토 서비스를 시작했는데, 이미지 인식을 통해 사진을 자동으로 정리해주거나 검색 결과를 사용자에게 보여줍니다.

 

CNN의 작동과정을 더 자세히 알아보자면, CNN은 이미지의 픽셀 값을 가지고 추출한 특징으로부터 그림의 숫자가 무엇인지 인식해야 합니다.

CNN의 구조를 설명해주는 그림

특징의 추출은 컨볼루션 필터(또는 커널)가 수행합니다.

 

<필터를 바탕으로 가중합 연산을 수행하는 예시 자료>

이 필터는 이미지를 상하좌우로 훑으며 픽셀 값에 대해 가중합 연산을 수행합니다.


<이미지의 특징으로 사진을 인식하는 예시 자료>

이렇게 찾아낸 특징은 이미지의 색상이나 테두리, 각도와 같은 정보를 포함합니다.

컨볼루션 연산을 여러 번 반복하면 인공신경망은 점차 추상적이고 복합적인 특징을 찾아낼 수 있습니다.

신경망의 깊이가 깊어질수록 인공지능은 강아지와 고양이를 분류하거나, 사람의 얼굴을 인식하거나,

제품 공정에서의 불량품을 탐지하는 등의 고도화된 역할을 수행할 수 있습니다.

<맥스플링 방식의 간단한 예시 자료>

컨볼루션 필터가 이미지를 상하좌우로 훑으며 특징을 찾아내면 이 결과로부터 정보를 추리는 풀링 연산이 이어집니다.

컨볼루션 필터가 추출한 특징을 상하좌우로 훑으며 핵심적인 정보만을 영역별로 샘플링하는데,

주로 영역 내 가장 큰 값만을 남기고 나머지 값을 버리는 맥스풀링(Max Pooling) 방식을 적용합니다.

 

컨볼루션 연산이 이미지의 특징을 찾아낸다면 풀링 연산은 그중 핵심 정보만 남깁니다.

대부분의 이미지 처리 모델에서는 컨볼루션과 풀링 연산을 여러 번 반복하면서 데이터의 특징을 추려냅니다.

이미지로부터 특징을 배워 나가는 작업이라는 뜻에서 이 과정을 피처러닝(feature learning)이라고 부릅니다.

CNN 프로그래밍 예시 Tensorflow 라이브러리를 사용한 예시>

 

이미지 인식 머신러닝 개발 플랫폼, NVIDIA Jetpack Jetson Software(SDK)

NVIDIA에서 개발한 AI Developer KitNVIDIA Jetson Nano을 이용하여 위와 같은 알고리즘을

TensorRTcuDNN(CNN)를 프레임워크 상에서 적용하여 학습시키면 이미지 인식 기술을 구현할 수 있습니다.

 

작동 구조를 정리한 자료

위 사진과 같은 구조로 실제 작동됩니다.

TensorRT 작동 구조

댓글 0
첫 댓글의 주인공이 되어 보세요!
  • 폴리매스 문제는 과학기술진흥기금 및 복권기금의 재원으로 운영되고, 과학기술정보통신부와 한국과학창의재단의 지원을 받아 수행된 성과물로 우리나라의 과학기술 발전과 사회적 가치 증진에 기여하고 있습니다.

  • ☎문의 02-6749-3911