Monthly Seminar

20.02.29 Monthly Seminar 자율주행자동차

KAU-Deeperent 2020. 3. 2. 04:27

20.02.29 Monthly Seminar 자율주행자동차

발표자 : 김성훈

 

자율주행 자동차 기술은 운전자가 상황을 인지하고 조작하던 기존 시스템에서 더 나아가, 센싱과 컴퓨터 연산을 통하여 운전자를 직간접적으로 보조하거나 최종적으론 운전자가 필요하지 않는 자동차를 의미한다.

미국 자동차 학회에서 자율주행차량 기술을 0단계에서 5단계로 나눠 분류하고 있다.

 

0~2단계 자율주행은 현재 상용 자동차로 구현되어 많은 기종이 해당 단계의 기술을 체택하고있다. 이 수준에서 운전자가 주체적으로 운행하며, 시스템은 주행기능을 보조하게 된다. 3단계 자율주행부턴 hand off 주행이라고 표현한다. 운전자는 시스템은 기능하에 핸들을 잡지 않아도 운행이 가능하며, 시스템의 요청에 따라 다시 직접주행한다. 4단계 자율주행은 거의 완벽하게 시스템 스스로 주행이 가능하지만 몇몇 상황에 대비하여, 운전자가 존재하여야 한다. google의 waymo는 자율주행 기술의 선두주자로서 4단계 자율주행에 도달한 것으로 알려져 있다. 마지막으로 5단계 자율주행은 driver off 라고 하여, 사람의 개입없이 완벽한 자율주행이 가능한 기술을 일컷는다.

 

 

이러한 자율주행 기술에서 머신러닝, 특히 딥러닝은 핵심기술로서 평가 받고있다. 최근 몇 년간 영상인식 기술이 비약적으로 상승하여, 그 결과로 기존 운전자가 주행을 하며 시각을 통해 여러 정보를 처리했던 것을 대체할 수 있게 된 결과이다. 이 영역에서 머신러닝은 상황인식 뿐만 아니라 상황판단, 차체제어 부분에서도 다소간 사용된다.  기존에 존재하는 방식은 어떤 판단이라고 말하는 개념 없이, 센싱을 통한 인지와 feedback 통한 단순한 제어이다. 그러나 딥러닝기술은 사람 수준의 통찰을 컴퓨터에 학습시킬 수 있다. 인공신경망의 비선형성에 의한 결과이다.

 

 

현재로선 자율주행에 사용되는 딥러닝 기술 대부분은 '인지'분야에 활용된다.  앞서 언급하였듯 이 인지분야에서 딥러닝은 운전자의 시각을 대신하여 기능한다. 카메라 영상데이터를 받아 실시간으로 차량 주변에 차량, 도로, 사람, 표지판, 신호등 같은 물체들이 어느 픽셀에 위치하고 있는지 감지할 수 있다. 즉 컴퓨터 비젼분야에서 object detection을 활용 한다는 의미이다. 

 

실제 object detection 화면

 

 

 

Sliding window나 YOLO, R-CNN 같은 알고리즘의 등장으로 컴퓨터는 실시간 영상데이터로부터 물체를 인간수준으로 정확하게 인지할 수 있게 되었다. 그러나 이러한 방식에도 단점은 존재한다. 높은 FPS의 영상데이터를 매 순간마다 합성곱네트워크를 통과시키기 위해선 어쩔 수 없이 높은 연산량이 동반된다. 결과적으로 자율주행자동차는 항상 높은 컴퓨팅파워가 요구되지만, 그러한 만큼 기존 방식을 상회하는 성능을 보인다고 받아드리면 된다. 우리가 비젼분야를 공부하다 보면 알 수있듯이 Object detection을 통해 얻는 결과는 물체가 있다고 판단되는 픽셀의 위치이다. 이러한 데이터를 유의미하게 사용하기 위해서 우리는 결과값을 알맞게 후처리해주어야 한다.

 

 

detecting을 통해 알고 싶은 데이터는 여러가지가 있겠으나, 가장 기본적으로 내 차량과 다른차량과의 거리를 예시로 말할 수 있겠다. 영상데이터는 카메라 특성상 초점을 중심으로 왜곡된 형상을 보인다. 그래서 초점에 가까이 있는 차선일 수록 더 많은 왜곡을 보인다. 하나의 예시로 차선을 일자로 쭉피게끔 rgb데이터를 변환하여, bbox의 중점과 내 차량사이의 거리를 떨어진 픽셀의 개수로부터 알 수 있다.  

또 다른 경우 사람의 눈처럼 카메라를 2개를 사용하는 방법도 가능하다. 사람의 눈은 양쪽눈이 서로 다른 위치에서 물체를 바라보며, 두 눈에서 인지한 물체의 차이를 통하여 원근감을 느낀다. 이러한 메커니즘을 2개의 카메라로 자동차에도 구현하는 것이다.

 

위와 같은 방식을 통하여 영상 상에서 여러 차량들을 detecting한 후, 내 차량을 기준으로하여 bbox의 상대위치, 상대속도등을 파악할수 있으며 차선의 휜 정도를 통하여, 도로의 곡률같은 정보도 인지할 수 있다. 인지분야에선 카메라센서 뿐만 아니라, radar센서, lidar센서를 사용하여 카메라센서를 보조한다. 이러한 3가지 센서를 통칭 ADAS(첨단 운전자보조 시스템)라고 일컷는다. 또한 차량-사물통신(V2X,vehicle to everything communication), 맵핑데이터 등을 종합하여, 차량은 주행에 필요한 수많은 정보들을 입수하게 된다. 

 

자율주행 프로세스

위 사진은 자율주행 3가지 단계를 간단하게 요약한 도표이다. 크게 인지-판단-제어 순서를 데이터가 이동한다. 제어의 경우 목표조향각, 목표 가감속이 입력이 판단을 통해 정해진다면, 딥러닝의 힘을 빌리지 않고도 충분히 실현가능하다. 그러나 이것보다 어려운 문제는 판단이다. 인지를 통해 넘어온 상황데이터들을 어떻게 처리하여 어떤 목표궤적, 어떤 주행경로를 설계할 것인지. 이런 과정을 컴퓨터에게 학습시키는 것을 자율주행의 아이덴티티라고 생각한다. 이 판단 분야는 현재 활발히 연구가 진행 중에 있으며, 지도학습이나 강화학습 등등 다양한 방법을 사용할 수 있겠다.

 

마지막으로 이런 3단계의 프로세스를 하나의 네트워크로 통합한 간단한 인공신경망을 소개하며 글을 마치겠다. 카메라 센싱을 입력으로 하여 출력을 스티어링, 엑셀러레이터, 브레이크 조작으로하는 간단한 네트워크는 한번의 데이터 이동을 통해 인식,판단,제어의 모든 프로세스를 거치게 된다. 학습방법은 강화학습이며, 에이젼트의 리워드를 최대로 하게끔 학습을 진행한다. 학습 규칙을 다음과 같다.

 

ACTOR - CRITIC network

위 방법론은 연속적인 state space와 연속적인 action space일 때 사용되는 policy gradient 방법이다. policy란 관측된 state에서 어떤 행동을 할지를 나타내는 확률변수 이다. 이 policy를 value function이 높은 방향으로 기울기를 구하여, policy network의 파라미터를 업데이트 시키는 과정이 policy gradient 이다. 가장 기본적인 policy gradient 방법론은 REINFORCEMENT 알고리즘이다. 이 방법은 unbiased, high variance (높은 수렴성, 낮은 학습속도)의 특징을 가지고있다. 따라서 이 알고리즘은 상황에 맞게 개량한 방법인 존재하며, 해당 논문에서 사용한 방법은 TD Actor critic 이다.

 

위 항에서 R대신 G를 사용하면 해당 목적함수이다

이 방법론에서 파라미터, theta 를 업데이트하기 위한 목적함수 J 는 Policy_theta를 따르는 Return,G 의 기대값이다. 이 함수의 theta에 대한 기울기를 찾기위해, 편미분하는 과정이 필요하다. 함수상에서 theta에 대한 항은 오로지 policy만이 존재하기 때문에 수학적인 기법을 적용한다.

폴리시의 기울기의 다른 표현

위 수식을 대입하면 결과적으로, 목적함수의 기울기는 Policy_theta를 따르는 (return)*(grad)*(log_pi)의 기대값으로 표현 가능하다. 이 값을 loss function으로 하여, episode를 진행하면서 계속 계산해나가 학습을 진행시키면 된다. 이러한 전개를 기조로 하여, return 대신 TD error를 사용하게 되면 variance를 낮춰 학습속도를 증가시킬 수 있고, online학습이 가능하게 된다. 또한 일반적인 actor-critic방법이 3개의 parameter를 학습시켜야 하는 것에 비하여 TD actor-critic 방법은 2개의 network만 학습시키면 된다. 학습에 대한 디테일은 이 정도로 거두절미하고, 나머지 부분이 더 궁금하다면 David silver의 RL강의 중 특히 7강을 참고하는 것이 도움이 될 것이다. 

 

다시 자율주행으로 돌아와서, 본 자료에선 위와 같은 네트워크를 구성하여 Unity 3D에서 시뮬레이션을 진행하였다. 지금과 같은 네트워크는 상당히 소규모이며, 오직 카메라만을 이용하여 간단하게 자율주행을 구현하였다. 이러한 방식대로 시뮬레이션을 통하여 학습을 시킨 인공신경망의 파라미터를 실제 자동차에 옮겨도 아마 상당 부분 잘 작동하게 될 것이다. ndivia를 포함하여 여러 기업들이 이러한 방식을 자율주행 자동차 구현에 적용하고 있다. 

 

이 발표는 이론적인 내용보단 자율주행이라는 분야에 대한 소개에 중점을 뒀다. 따라서 언뜻보기에 많은 디테일이 빠져있지만, 완벽한 발표보단 많은 사람이 흥미를 가지게 되었으면 좋겠다고 생각한다. monthly seminar를 준비하면서 자율주행에 대해 많은 자료와 논문을 찾아보게 되었는데, 역시나 골자는 머신러닝이라고 생각한다. 자동차라는 분야는 많은 시간동안 기계공학을 대표하는 기술로서 평가되었지만, 미래엔 그렇지 않을 것이라고 확신한다. 당장 지금은 그럴 필요가 없지만 언젠가 학회 구성원분들 중에서도 자율주행에 한 번쯤 관심을 가질 수 있게 되었으면 좋을 것 같다고 생각한다.