자율주행차와 인공지능
GPGPU와 딥러닝
2016년 07월호 지면기사  / 글│박 재 호 _ jaypark@ex-em.com



 

자동차 분야에서 인공지능은 어떤 영향을 미치고 있을까. 최근 들어 인공지능이 다시 부각되는 이유는 무엇일까. 빅데이터와 클라우드 기술이 발전함에 따라 과거에 비해 수집된 자료량이 엄청나게 늘어났을 뿐만 아니라 컴퓨터 자체의 성능도 날이 갈수록 좋아지고 있기 때문에 방대한 자료 처리에 필요한 계산량을 뒷받침하는 것이 가장 큰 요인으로 볼 수 있다. 본고에서는 운전자의 개입 없이 운행이 가능한 자율주행차를 중심으로 현재까지 기술발전 상황을 정리한다.

 

이세돌 九단과 알파고의 대국 이후에 인공지능에 대한 관심이 급격하게 높아지고 있다. 딥러닝, 강화 학습, 과적합(overfitting)과 같이 일상에서 듣기 어려운 전문용어가 포함된 기사가 일간지에 실리고 있으며, 다양한 분야에서 인공지능을 이용한 응용 사례가 소개되고 있다. 인공지능 관련 연구개발 인력이 부족해서 기업 사이에 치열한 인재 쟁탈전이 벌어지고 있다는 소식도 들려온다. 정부는 물론 민간에서도 집중적으로 인공지능 관련 분야에 대한 투자를 집행하고 있다.

최근 들어 인공지능이 다시 부각되는 이유는 무엇일까? 빅데이터와 클라우드 기술이 발전함에 따라 과거에 비해 수집된 자료량이 엄청나게 늘어났을 뿐만 아니라 컴퓨터 자체의 성능도 날이 갈수록 좋아지고 있기 때문에 방대한 자료 처리에 필요한 계산량을 뒷받침하는 것이 가장 큰 요인으로 볼 수 있다. 또 전통적인 산업에 IT 기술이 접목되면서 복잡한 작업을 처리할 수 있는 소프트웨어 기술 향상도 다른 요인으로 볼수 있다. 융복합 기술의 발전은 생산 자체를 고도화할 뿐만 아니라 제품에도 부가가치를 더하는 촉매로 작용하고 있다. 인공지능이야말로 차세대 산업의 주축이 될 것으로 기대하는 사람도 많다.

그렇다면 자동차 분야에서 인공지능은 어떤 영향을 미치고 있을까? 본고에서는 운전자의 개입 없이 운행이 가능한 자율주행차를 중심으로 현재까지 기술발전 상황을 정리한다.

 

1. 개괄

 

스마트폰 기반의 교통 서비스를 제공하는 우버(UBER)의 예를 들면 자사 서비스에 인공지능 개념을 적극적으로 활용해 차량이 필요한 수요자와 차량을 운행하는 공급자(개인/법인) 사이에 원활한 연결을 제공함으로써 정보 비대칭성을 줄이고(지역과 시간대 별 차량 수요와 공급 관련) 자원의 활용을 극대화하고 있다. 여기서 한 걸음 더나가 우버는 운전사의 인건비를 줄이고 차량 가동률을 높이는 동시에 시간에 구애받지 않는 진정한 24×7×365 서비스를 목표로 자율주행차 기술에 집중하고 있다. 차량 소유시대의 종말에 대비한 자동차 업계의 관심까지 합쳐지면서 자율주행차에 대한 연구는 더 이상 먼 미래의 이야기가 아니며 현재 진행형으로 봐도 틀림없겠다.

구글과 같은 회사는 플랫폼을 확장해나가는 관점에서 차량에 주목하고 있다. 차량은 기존 웹(검색 엔진)과 스마트폰(안드로이드)에 이어 사용자의 데이터를 축적하고 이를 활용하는 새로운 플랫폼으로 떠오르고 있고, 그 중에서도 가장 강력한 애플리케이션이 바로 자율주행 기능으로 보면 틀림없다. 자율주행차에 장착된 센서에서 수집된 각종 정보를 IoT를 지원하는 클라우드 컴퓨팅 환경으로 보내고, 빅데이터 기술을 사용해 운행 패턴과 도로상황을 분석한 다음에 해당 정보를 내려 받아 안전한 운전이 가능하게 만든다.

테슬라 같은 경우에는 자동차의 아이폰화라는 기치를 내걸고 소프트웨어 업그레이드 만으로 제한적인 자율주행(고속도로 대상)이 가능하게 만들어 운전자들을 깜짝 놀라게 만들었다. 또한 소프트웨어 업그레이드로 소환(summon) 기능을 제공해 집에 도착해서 내리면 차량이 저절로 운전해서 차고로 들어간 다음에 시동이 꺼지고, 운행이 필요할 때 집 앞에 있으면 차량이 자동으로 시동을 걸고 차고 문을 열고 나와서 집앞으로 나올 수 있게 만들었다.

 

그렇다면 사람들이 자율주행차에 관심을 기울이는 이유는 무엇일까? 다음과 같은 사안을 생각해보자.

- 안전성: 사람 운전자와는 달리 과속운전, 난폭운전, 졸음, 음주, 스마트폰 사용에 영향을 받지 않는다. 교통법규를 정확하게 지키기 때문에 자율주행 차량만 운행될 경우 사고 가능성이 극도로 낮아진다.
- 효율성: 네트워크에 항상 물려있기 때문에 도로 정보를 활용해 정체 구간을 회피하며, 주변 차량과 협력해 차간 거리를 유지함으로써 도로의 처리량을 극대화한다.
또한 군집주행 기술을 활용해 대량의 물류를 신속하게 운송할 수 있다.
- 편의성: 운전자의 피로를 줄이며, 차량 이동 중에도 휴식, 여가 활용, 업무가 가능해진다. 또한 정상적인 운전이 힘든 노약자와 장애인을 배려할 수 있다. 차량 공유 서비스와 결합할 경우 차량의 대수를 줄일 수 있어 주차난과 같은 기반 시설 부족 현상에 따른 시간 낭비도 완화할 수 있다.
이렇듯 장점이 많은 자율주행차를 지탱하는 기술은 무엇일까? 하드웨어(센서, CPU/GPU)와 소프트웨어(인공지능) 관점에서 바라볼 필요가 있다.

 

2. 자율주행 차량의 눈과 귀: 센서

 

사람은 시각과 청각을 활용해 운전 중에 도로상황을 파악하는 반면에 자율주행차는 다양한 센서에 의존해 경로를 결정하고 사고를 회피해야 한다. 쉽게 말해 센서는 자율주행차의 눈과 귀라고 생각할 수 있다. 자율주행차는 크게 다음과 같은 센서를 탑재한다.

 

Radar
레이더는 무선신호를 방출한 다음 부딪혀서 돌아오는 신호를 찾는 원리로 동작하는 가장 범용적으로 사용되는 센서로 단거리, 중거리, 장거리 특성을 모두 갖추고 날씨에 무관하게 동작한다. 예를 들어, 적응형 순항제어 장치는 차량의 200 m 전방을 주시하며, 차량을 추적하며 가감속을 지령해 차량사이의 간격을 유지한다. 또한 레이더는 사각지대 감지와 차선이탈 경보 기능을 제공한다. 초기에는 운전자에게 임박한 문제를 음성으로 경고하는 선에서 그쳤지만, 자율주행형 차량에서는 문제를 회피하기 위해 운전자의 제어권을 자신이 가져간다. 레이더는 움직이는 물체가 산란된 파형의 주파수를 바꾼다는 도플러 효과를 이용해 정지된 물체를 추적할 수 없으며, 금속이 아닌 다른 재질의 물체를 감지하기 힘들다는 단점이 존재한다.

 

Lidar(Light Detection And Ranging)
라이더는 지상의 형태와 표면 특성에 대한 지리적인 정보를 정밀하게 제공한다.
원래 라이더는 지상, 얕은 물가를 대상으로 밀도가 높고 정확한 데이터를 수집하기 위해 만들어졌다. 일반적으로 비행기, 지상, 이동 차량에서 넓은 지역에 걸쳐 빠르게 여러지점(point)을 수집하며, 높은 정밀도와 풍부한 지점 밀도라는 특성 때문에 철도, 도로, 교량, 빌딩, 방파제, 해안선에 대한 정교하고 현실적인 3차원 표현을 가능하게 한다.

라이더는 레이저를 발사해서 감지되는 반향을 센서가 잡아내는 원격 감지기술을 일컫는다. 이런 정보는 물체에 대한 범위 또는 거리를 계산하는 데 쓰인다. 언뜻 보면, 라이더는 레이더와 비슷하지만 별개의 레이저 파동에 기반한다. 목표 객체의 3차원 좌표(예: 위도, 경도, 고도)는 발사한 레이저 파동과 반환된 레이저 파동 사이의 시간, 파동이 발사된 각도, 센서의 절대 위치를 사용해 계산된다. 하지만 라이더는 레이더와는 달리 구름, 비, 눈, 짙은 연무를 통과할 수 없다는 단점이 존재한다.

라이더는 대기 조성, 구조, 구름, 연무등을 연구하기 위해 고정된 위치의 지상 장비로 개발됐으며, 세상의 날씨 관측에 강력한 도구로 자리잡아 왔다. 또한 교량, 빌딩, 해안과 같은 특정 목표물을 탐색하기 위해 고정된 위치에 장착한 다음에 상황의 변화를 추적한다. 현대적인 내비게이션과 위치측정 시스템을 위해 라이더는 이동형 차량에 탑재돼 철도, 도로, 공항, 빌딩, 배관, 항만, 해안선 등 아주 정밀한 지도를 제작하는데 사용되기도 한다.

이렇게 40년 이상 축적된 기술을 바탕으로 라이더는 자율주행차 센서 중에서도 핵심을 차지하고 있다. 최근 자율주행차에서 많이 사용 중인 벨로다인 HDL(High-Definition Lidar)은 64개의 회전하는 레이저를 사용해 초당 220만 개의 지점을 수집하며, 이런 정보를 토대로 주변의 가상 모델을 생성한다. 레이더 대신 라이더를 사용하는 한 가지 이유는 레이저의 고에너지, 단파장 레이저가 비금속 표면(예: 인간과 나무 전신주)에 더 잘 반사되기 때문이다. 기존 시스템과 달리, 벨로다인 HDL은 조밀하게 레이저를 발사해 눈이나 비가 내리는 환경에서도 빈틈을 찾아 주변 환경을 파악할 수 있다.

 

Camera(일반/3D)
특정 이미지를 개별 픽셀로 인식해 숫자로 변환하는 장비로 물체에서 반사되는 빛을 광학 센서가 잡는 원리로 동작한다. 일반 카메라는 깊이를 인식하지 못하는 반면에 3D카메라는 렌즈를 두 개 사용하거나 다른 센서의 도움을 받아 깊이를 인식할 수 있다. 카메라는 다른 센서에 비해 높은 해상도를 자랑해 정확한 배경/물체 인식이 가능하다는 장점이 있는 반면에 빛의 반사를 이용하므로 주변 환경에 크게 영향을 받는 단점도 있다.

카메라를 반드시 사용해야 하는 상황이 존재한다. 고정된 도로 표지판의 경우에는 GPS와 도로 지도를 사용해 충분히 방어가 가능하지만 긴급 도로공사와 같은 임시표지판의 경우에는 카메라가 없다면 내용을 인식하지 못하는 문제가 발생한다. 또한 색상을 인식할 수 있어 신호등이나 브레이크 등을 판단하기에 적합하다.

 

Ultrassonic
음파(50 KHz 주변 초음파)를 보내 되돌아오는 반향을 듣는 장비로 음파가 미치는 주변 지역에 위치하는 물체를 감지할 수 있다. 잡음과 반사파의 반향으로 인해 매우 정밀하지는 않지만 보조적인 수단으로 활용이 가능하다. 자율주행차가 아닌 일반 차량에는 주로 후방 감지 센서와 측면 감지 센서로 사용되고 있으며, 자율주행차의 경우 저속에서 벌어지는 근접 이벤트(예: 병렬주차와 저속충돌회피)를 감지하기 위해 사용된다. 차량이 사람이 걷는 속력보다 빠르게 움직일 경우 탑재된 초음파 센서는 제대로 동작하지 않는다.

 

GPS(Global Positioning System)
GPS는 중궤도를 도는 24개 이상의 인공위성에서 발신하는 마이크로파를 수신기가 수신해 위치 벡터를 계산하는 방식으로 동작한다. 세 개 이상의 GPS 위성이 송신한 신호를 수신해 위성과 수신기의 위치를 결정한다. 위성에서 송신된 신호와 수신기에서 수신된 신호의 시차를 측정하면 위성과 수신기의 거리를 구할 수 있는데, 송신된 신호에 위성의 위치가 들어 있어 삼각 측량법을 활용해 정확한 수신기의 위치를 계산한다.

GPS를 사용할 경우 현재 이동 중인 자율주행차의 정확한 위치를 구한 다음에, 미리 구축된 정밀한 도로 지도 데이터베이스를 토대로 정적인 주변 상황을 파악할 수 있다. 기상 상태나 주변 장애물에 영향을 받지 않는 장점이 있다. 하지만 터널, 교량 아래, 지하도에 들어설 경우 GPS를 사용할 수 없는 상황이 발생하기 때문에 100% GPS를 신뢰할 수 없다는 문제점이 있다. 차량의 속도 정보를 사용해 현재 위치를 추정할 수 있는 추측항법시스템으로 이런 문제점을 해결한다.

적외선 LED와 광센서
적외선 LED와 광센서는 비 탐지/와이퍼 동작과 같은 분야에 사용되며, 충돌회피를 위해 차량 외부에 장착돼 상향등의 조명 범위를 벗어난 물체를 감지하기 위해 사용되기도 한다. 또한 에어백의 전개 속력을 조절하기 위해 탑승자의 위치를 파악하거나 운전자의 눈꺼풀을 감지해 졸음운전을 막기위해 사용될 수도 있다.


자율주행차의 두뇌: CPU와 GPGPU

사람의 감각기관에서 들어오는 전기적인 신호는 두뇌에서 처리한다. 마찬가지로 차량의 센서에서 들어오는 각종 정보 역시 CPU와 GPGPU(General Purpose GPU)에서 처리하게 된다. CPU는 소프트웨어의 실행이 이뤄지는 핵심이며, 외부에서 정보를 입력받고, 기억하고, 컴퓨터 프로그램의 명령어를 해석하고 연산하고 외부로 출력한다. 각종 전자부품을 단일 칩에 내장한 마이크로프로세서 형태로 만들어지면서 부터 CPU는 복잡한 범용 컴퓨터는 물론이고 가전제품이나 차량에도 탑재되기 시작했다. 또한 중앙처리장치의 한 블록인 코어를 여러 개 탑재한 칩이 등장하면서 단일 코어의 성능 한계(클록 주파수의 한계, 슈퍼 스칼라 아키텍처의 한계)를 극복해 나가는 추세이다.

CPU는 순차적인 직렬 처리에 최적화된 멀티코어를 내장하고 있기 때문에 일반적인 작업을 수행하기에 충분하다. 하지만 복잡한 수치 연산을 위한 병행(parallel) 작업이 필요한 경우에는 문제가 발생한다. 물론 단일 CPU 내부의 코어 수를 늘리거나 네트워크로 연결된 여러 컴퓨터를 사용해 작업하는 방법도 존재하지만 고려해야 하는 사항이 많아 현실적으로 쉽지 않다.

기존 임베디드 부문에서는 신호처리를 빠르게 하기 위해 특화된 칩인 DSP(Digital Signal Processor)가 많이 사용됐는데, 실시간으로 아날로그 신호를 표현하는 복잡한 수치 데이터를 빠르게 처리하기 위한 기능이 탑재돼 있었다. 하지만 DSP는 1차원(오디오)이나 2차원(이미지) 데이터는 어느 정도 실시간으로 처리할 수 있었지만, 자율주행차에서 요구하는 복잡한 2차원(높은 해상도나 복잡한 영상인식)이나 3차원 데이터는 처리하기가 곤란하다는 문제가 존재한다.

따라서 CPU와 DSP의 문제점을 해결하기 위해 뭔가 해법이 필요하다. 게임을 많이 하는 사람들은 GPU에 대해 이미 잘 알고 있을 것이다. GPU는 CPU에서 그래픽과 관련된 각종 연산 기능을 가져와서 전용으로 처리하게 만든 칩으로, 초기에는 2차원 가속(비트맵 복사와 이동) 기능을 중심으로 화면 출력을 빠르게 하는 쪽에 집중했지만, 점차 3차원 가속을 위한 각종 수치 연산 기능을 강화하는 쪽으로 발전해나갔다. 이를 위해 병렬처리용으로 특별히 설계된 수천 개에 이르는 소형 코어를 탑재하고 있으며, 계산이 필요한 작업을 CPU로부터 가져와서 빠르게 처리한다. GPU는 앞서 언급한 CPU와 DSP의 제약점을 극복하기 위한 훌륭한 대안으로 자리 잡고 있다.

현대적인 GPU는 기본적으로 SIMD(Single Instruction Multiple Data)계산 방식에 기반한다. 이런 유형의 GPU를 GPGPU라 부른다. GPGPU는 SIMD 계산 유닛으로 여러 독립적인 데이터에 대한 병행연산을 수행할 능력을 갖추고 있다. 현대적인 GPGPU는 수천 개에 이르는 병행 스레드를 띄우고 모든 스레드를 배치 방식으로 처리한다. 이런 특성으로 인해, GPGPU는 복잡한 대규모 DSP 문제를 여러 개의 작은 수치 문제로 쪼개고 한 번에 처리한다. 따라서 전반적인 시간 복잡도를 엄청나게 줄일 수 있다. 예를 들어, 두 M×M 행렬을 곱하는 작업은 출력 데이터 의존성 없이 GPGPU 장비에서 M×M 병행 스레드를 처리할 수 있다. 이와 같은 특성으로 인해 전통적인 CPU나 DSP와 비교해 상당한 성능 이익을 얻을 수 있다.

 

 

GPGPU는 화면과 중립적인 계산 전용 프로그래밍 인터페이스를 제공한다. 몇가지 예를 정리하면 다음과 같다. ▶CUDA: CUDA는 NVIDIA GPU를 프로그래밍하기 위한 표준 인터페이스다. 2006년에 처음 등장한 이후 엄청나게 많이 판매된 하드웨어 기반을 토대로 다양한 애플리케이션 제작에 사용돼 왔다. CUDA는 윈도우, 리눅스, MacOS X를 지원하며 C/C++ 프로그래밍 언어로 개발이 가능한 라이브러리를 제공한다. ▶OpenCL: OpenCL은 원래 애플이 제안한 업계 표준으로 CPU, GPU, DSP 등의 프로세스로 이뤄진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 한다.

로열티가 없는 OpenCL은 비영리 기술 컨소시엄인 크로노스에서 관리하고 있으며, 2008년 11월에 1.0 명세서가 완성됐다. AMD는 물론이고 NVIDIA에서도 OpenCL을 지원한다. ▶C++ AMP(C++ Accelerated Massive Parallelism): C++ AMP는 GPU와 같은 데이터 병행 하드웨어에서 컴파일돼 수행되는 프로그램을 쉽게 작성하게 도와주는 C++ 라이브러리다. C++ AMP는 마이크로소프트에서 개발한 개방형 명세이며, DirectX 11에 구현돼 있다. 마이크로소프트 윈도우 운영체제에서 동작하지만 향후 다른 플랫폼에도 이식될 예정이다(예: 인텔이 만든 Shevlin Park). ▶OpenACC(Open Accelerators): 크레이, NVIDIA 등이 개발한 병행 컴퓨팅을 위한 프로그래밍 표준으로 이기종 CPU/GPU 시스템에서 병행 프로그래밍을 단순하게 만들어준다. OpenMP와 유사하게 C, C++ 코드에 애노테이션(컴파일러 지시자)을 붙여 가속해야 할 영역을 지정한다.

GPGPU를 사용하는 주요 분야를 정리하면 ▶디지털 필터: 다차원 디지털 필터설계 ▶레이더 시그널 재구성과 분석: 실시간으로 엄청나게 많은 3D나 4D 데이터 샘플 재구성 ▶자율주행차 제어를 위한 3D이미지 인식 ▶초음파, X레이, MRI, CT와 같은 2D 또는 3D 영상 시그널 진단 등 의료 영상 처리 등이다.

 

4. 인공지능: 기계학습과 딥러닝

 

자율주행차에서 인공지능 기술을 바로 논하기에 앞서, 우선 인공지능을 응용하는 기능부터 짚고 넘어갈 필요가 있다. 앞서 GPGPU를 사용하는 주요 분야를 설명할 때 자율주행차 부문에서 차량 제어를 위한 3D 이미지 인식을 언급했는데, 조금 더 세부적으로 파고 들어가면 ▶보행자 충돌 경고(차량 운행 도중에 등장하는 보행자를 감지하고 회피하는 기능) ▶차선이탈 경고(차량 운행 도중에 차선이탈을 감지하고 경보하는 기능) ▶전방충돌경보(차량 운행 도중에 앞에 나타난 차량이나 장애물을 감지하고 경보하는 기능) ▶속도제한 경고(운행 중 속도 제한 표지판을 읽어 경보하는 기능) ▶교통신호 감지(각종 신호등과 표지판을 읽어 표시하는 기능) 등이다.

상기 기능을 구현하기 위해 일반적인 영상처리 알고리즘을 사용할 수도 있지만, 최근에는 맥락에 무관하고 정확도를 높이기 위한 방안으로 인공지능을 도입하는 추세다. 즉 알고리즘을 먼저 만들고 데이터를 넣어 가공하는 대신 데이터를 넣어 알고리즘을 만들어내는 방법이다. 이렇게 되면 매번 상황에 맞춰 알고리즘을 수정하지 않고 데이터를 추가로 넣어 학습하는 방법으로 문제를 해결할 수 있다.

즉 기계학습을 도입해 수많은 데이터를 토대로 정교한 패턴 인식과 분류 작업을 수행할 수 있게 됐다. 그렇다면 과거에는 어떤 문제가 있었기에 기계학습을 적용하기 어려웠을까?

90년대 유행했던 인공신경망(Artificial Neural Network, ANN)은 역전파(back propagation) 방법이라는 최적화 기법이 도입되면서 전성기를 맞이한다. 하지만 인간의 두뇌를 흉내내 데이터를 처리한다는 이 멋진 개념에는 한 가지 치명적인 문제가 있었다. 바로 국소 최저치(local minima)였다. 복잡한 함수를 회귀(regression)/분류(classification)하려면 여러 신경망 단계가 필요하기 마련인데, 깊이가 깊어질 경우 매개변수(parameter) 학습과정에서 전역 최적값을 찾아내지 못하고 중간에 멈춰버리는 현상이 발생했다. 잘못된 최적화에서 벗어나려면 뭔가 획기적인 탈출구가 필요했는데, 2006년에 제프리 힌톤 교수가 해법을 제시할 때까지 답보 상태에 머물렀다.

여기서 해법은 바로 요즘 알파고 때문에 유명해진 딥러닝이다. 딥러닝은 국소 최저치라는 문제를 해결하기 위해 데이터의 전처리 과정을 도입해 비지도 학습법(unsupervised learning)으로 각 층을 손질한 다음에 이렇게 처리한 데이터를 여러 층으로 쌓아올려 최적화를 수행한다.
딥러닝의 성공 요인을 크게 다섯 가지로 정리할 수 있다.
▶비지도 학습방법: 앞서 언급했지만, 비지도 학습방법은 사람이 데이터에 의미를 부여하지 않고 컴퓨터가 스스로 군집(cluster)를 찾게 만든다. 이 과정에서 잡음을 줄이고 특이한 자료를 필터링하는 효과를 얻는다.
▶CNN(Convolutional Neural Network)의 진화: 기계학습은 데이터에서 직접 지식을 추출하도록 학습할 수도 있지만, 보통 중간 단계인 특징(feature) 추출을 거쳐 데이터에서 특징을 찍고 이를 사용해 지식을 추출하도록 학습한다. 사물을 인식하기 위해 2차원 이미지의 픽셀 값에서 먼저 특징적인 선이나 색 분포를 추출한 다음에 이를 기반으로 실제 사물을 분류하는 방법을 사용한다.
기계학습의 성능은 얼마나 좋은 특징을 추출하느냐에 달려 있다. 이는 이미지 처리, 음성인식, 필기체 인식, 자연어 분석 등 다양한 부분에 동일하게 적용되는 원칙이다. 딥러닝에서는 사람의 개입 없이 특징조차도 기계학습으로 뽑기 때문에 특징 추출과 학습 양쪽을 모두 기계가 처리할 수 있게 됐다.
▶RNN(Recurrent Neural Network)의 진화: 시간의 흐름에 따라 변화하는 시계열 데이터를 처리하기 위해 등장한 RNN은 매 순간마다 인공신경망 구조를 쌓아올리는 방식을 사용한다. 과거 RNN은 인공신경망이 너무 깊기 때문에 오래 전 데이터를 잊어먹는 현상으로 인해 학습이 어려운 문제가 있었는데, LSTM(Long-Short Term Memory)라는 게이트 유닛을 노드마다 배치하는 방법으로 이런 문제를 극복했다.
▶GPGPU의 등장과 학습 방법의 진보: 과거에는 엄청나게 복잡한 벡터 연산을 위해서 슈퍼 컴퓨터를 동원해야 했지만, 최근에는 GPGPU로 대표되는 병행 컴퓨팅에 필요한 기반이 일반화됨에 따라 누구나 복잡한 계산이 가능해졌다. 또한 빅데이터 시대가 도래하면서 천만 장의 고해상도 사진(ImageNet)과 엄청나게 많은 동영상 클립(유튜브)을 확보할 수 있게 됐다. 또한 인공신경망의 알고리즘적인 측면에서 비선형변환에 사용되는 ReLU(Rectified Linear Unit)의 개발도 한몫을 거들었다.
▶프레임워크의 오픈소스화: 카페(Caffee), Deeplearning4j, 구글의 텐서플로우(Tensorflow)와 같은 딥러닝을 가능하게 만들어주는 프레임워크가 오픈소스로 공개됨에 따라 프로그래머들이 마음만 먹으면 GPU를 장착한 PC에서 쉽게 프로그램을 만들고 테스트할 수 있게 됐다.
지금까지 자율주행차에 대한 기술적인 내용과 인공지능에 대한 사항을 간략하게 살펴보았다. 본고에서는 주로 이미지/동영상에 대해 집중했지만, 기계학습은 데이터의 유형에 중립적이므로 카메라 뿐만 아니라 다른 센서에서 들어오는 데이터 역시 충분히 처리가 가능하다. 실제로 자율주행차 업계의 리더들은 카메라는 물론이고 라이더에서 얻는 정보를 빅데이터 기술로 처리해 차량의 주변 환경을 더 정확하게 파악하는 데 총력을 기울이고 있다.

차량과 보행자의 안전을 보장하고 정확하고 빠르게 목적지에 도착하기 위해 사용되는 다양한 기술이 하드웨어 뿐만 아니라 소프트웨어에도 크게 의존하고 있다는 사실을 기억하면, 선도적인 기업이 엄청난 자본을 투자해 데이터를 확보하고, 확보한 데이터를 사용해 의미있는 분석 작업을 수행하는 이유를 알게 될 것이다. 더이상 순수 하드웨어 만으로는 경쟁력을 발휘하기 어려운 세상이 왔기 때문에 소프트웨어 분야에 집중적인 관심과 투자가 필요할 것이다.

----------------------------------------------------------------------------------------------------------------

보행자 감지에 쓰이는 공개된 데이터베이스

기계학습, 특히 딥러닝은 엄청난 데이터를 사용해 학습하는 방법으로 각종 매개변수를 미묘하게 조율하는 방법을 사용한다. 따라서 그 무엇보다 학습을 위한 데이터가 중요하다. 자율주행차에서 가장 중요하게 생각되는 기능인 보행자 감지에 사용되는 데이터베이스를 사례로 소개한다. 캘리포니아 공과대학교(Caltech)에서 제공하는 칼텍 보행자 데이터 집합은 도심 환경에서 차량을 운전하며 찍은 640×480 30 Hz 10시간짜리 비디오를 제공한다. 총 35만 개의 바운딩 박스와 2,300명에 이르는 개별 보행자를 표시해 놓아 테스트 과정에서 검증이 손쉽다. 다음 URL을 참조하자.
http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/

 

 

참고 문헌
- http://m.media.daum.net/m/media/issue/1338/newsview/20160524174507672
- https://en.wikipedia.org/wiki/Autonomous_car
- http://webzine.iitp.kr/html/vol06/sub02_01.html
- http://www8.cs.umu.se/kurser/5DV029/HT09/handouts/Sensors%20for%20autonomous%20vehicles%20.pdf
- https://en.wikipedia.org/wiki/Lidar
- https://coast.noaa.gov/digitalcoast/_/pdf/lidar101.pdf
- http://www.edn.com/design/automotive/4368069/Automobile-sensors-may-usher-in-self-driving-cars
- https://www.cs.utexas.edu/~pstone/Courses/393Rfall09/resources/sensing.pdf
- http://www.templetons.com/brad/robocars/cameras-lasers.html
- https://en.wikipedia.org/wiki/Multidimensional_DSP_with_GPU_Acceleration
- http://t-robotics.blogspot.kr/2015/05/deep-learning.html
- http://slownews.kr/41461
- https://devblogs.nvidia.com/parallelforall/deep-learning-nutshell-core-concepts/
- http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/ 



AEM_Automotive Electronics Magazine


<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>

PDF 원문보기

본 기사의 전문은 PDF문서로 제공합니다. (로그인필요)
다운로드한 PDF문서를 웹사이트, 카페, 블로그등을 통해 재배포하는 것을 금합니다. (비상업적 용도 포함)

  • 100자평 쓰기
  • 로그인


  • 세미나/교육/전시

TOP