본문 바로가기

자율주행/논문리뷰

[Review] End to End Learning for Self-Driving Cars

SMALL

0. Abstract

자율주행 자동차의 주행을 위해 컴퓨터 비전 기술을 사용하는 방법을 설명하고 있습니다

이를 위해 컨벌루션 신경망(CNN)을 사용하여, 전면 카메라에서 입력되는 생 이미지(raw pixels)를 직접 조향 명령(steering commands)으로 매핑(mapping)하였습니다.

이 방법은 전체 시스템에 대한 최적화를 가능하게 하기 때문에, 최소한의 학습 데이터만으로도 시스템이 교통 정체와 같은 도로 환경에서 운전할 수 있습니다.

 

이 시스템은 컴퓨터가 도로 특징을 자동으로 감지하고 이를 처리하는 방식을 학습합니다.

인간의 조향 각도만을 학습 신호(training signal)로 사용하여, 시스템 내부 표현(internal representations)을 자동으로 학습합니다.

 

이러한 방식은 차선 탐지(lane marking detection), 경로 계획(path planning) 및 제어(control)와 같은 문제를 명시적으로 분해하는 방식과 비교할 때 모든 처리 단계를 동시에 최적화할 수 있습니다.

이러한 방식은 중간 기준을 최적화하는 것이 아니라, 전체 시스템 성능을 최대화하기 위해 내부 구성 요소를 자동으로 최적화하기 때문에 더 나은 성능을 낼 것으로 예상됩니다.

또한 최소한의 처리 단계를 사용하여 문제를 해결하기 때문에 더 작은 네트워크를 사용할 수 있습니다.

 

 

 

1. Introduction

CNN의 핵심은 훈련 예제로부터 특징을 자동으로 학습할 수 있다는 것이다.

특히 Image Recognition 에서는 convolution이 이미지의 2D 특성을 캡처할 수 있기 때문에 CNN은 매우 강력한 방법이다.

또한 Convolution Kernels을 사용하여 전체 이미지를 스캔하므로 총 연산 횟수 대비 상대적으로 적은 매개변수가 필요하다.

 

논문에서는 패턴 인식 이상으로 나아가 자동차를 조향하는 데 필요한 Entir Processing-Pipeline을 학습하는 CNN을 제시한다. (DARPA 자율 주행 차량이라는 seedling project에서 기초작업)

DAVE(자동차)는 비슷한 환경에서 사람이 운전하는 시간을 학습했다.

비슷하지만 완전히 동일하지는 않은 환경에서 인간 운전자의 좌우 조향 명령을 기록한 비디오와 함께 사용되었다.

 

 

 

Overview of the DAVE-2 System

이 시스템은 자동차에 장착된 세 개의 카메라로부터 시간 정보가 포함된 영상을 캡처하고, 인간 운전자가 적용한 조향 각도와 함께 동시에 캡처합니다.

이 조향 명령은 차량의 Controller Area Network(CAN) 버스에서 가져옵니다.

차량 기하학에 독립적인 시스템을 만들기 위해, 우리는 조향 명령을 미터 단위의 회전 반경인 r의 역수 1/r로 나타냅니다.

직진 운전의 회전 반경은 무한대이므로 1/r을 사용하여 특이점을 방지합니다. 1/r은 왼쪽 회전(음수 값)에서 오른쪽 회전(양수 값)으로 부드럽게 0으로 전환됩니다.

 

훈련 데이터에서는 영상에서 Sampling된 단일 이미지와 상응하는 조향 명령이 들어있습니다.

인간 운전자의 데이터만으로는 충분하지는 않기 때문에 네트워크는 차가 도로를 벗어나지 않도록 오차를 복구할 수 있도록 학습이 되어야한다.

따라서 훈련 데이터는 차선 중심으로부터 다양한 이동 및 도로 방향 회전을 보여주는 추가 이미지로 보강된다.

 

왼쪽과 오른쪽 카메라에서 두 가지 특정한 중심점 이동에 대한 이미지를 얻을 수 있습니다.

카메라 간 추가적인 이동 및 모든 회전은 가장 가까운 카메라에서 이미지의 시점 변환으로 시뮬레이션됩니다.

정확한 시점 변환에는 3D 장면 지식이 필요하지만 이를 포함하고 있지는 않기 때문에 지평선 아래의 모든 점은 평지에

있으며 지평선 위의 모든 점은 무한히 멀리 떨어져있다고 가정하여 근사 변환합니다.

Network Computed Steering Command 와 Desired Steering Command를 비교해서 오차 차이 만큼 가중치를 부여해서 CNN 모델을 조절합니다 -> End-to-End Supervised Learning

위와 같은 한번의 학습이 진행된다면, 네트워크는 중앙의 단일 카메라의 영상 이미지로 조향을 할 수 있습니다. 그 과정은 다음과 같습니다.

 

 

 

3. Data Collection

훈련 데이터는 다양한 도로와 다양한 조명 및 날씨 조건에서 운전을 통해 수집되었습니다.

대부분 뉴저지 중부에서 수집되었으며, 고속도로 데이터는 일리노이, 미시간, 펜실베니아 및 뉴욕에서 수집되었다.

또한 차선의 유무 상관없이 2차선 도로, 주차된 차량이 있는 주거 도로, 터널 및 비포장 도로가 포함됩니다.

데이터는 맑은 날씨뿐만 아니라 흐린, 안개 낀, 눈오는, 비오는, 낮과 밤에 수집되었습니다.

경우에 따라 태양이 낮게 떠 있어 도로 표면에서 반사되는 눈부심과 창문에서 산란되는 빛이 발생했습니다.

운전자들은 전체적인 주의를 유지하도록 권장되었지만, 그 외에는 평소처럼 운전했습니다. 2016 3 28일 기준으로 약 72시간의 운전 데이터가 수집되었습니다.

 

 

 

4. Network Architecture

우리는 네트워크의 가중치를 학습하여, 네트워크에서 출력하는 조향 명령과 인간 운전자의 명령 또는 중앙에서 벗어난 및 회전된 이미지에 대한 조정된 조향 명령 간의 평균 제곱 오차를 최소화하도록 합니다.

네트워크는 정규화 레이어, 5개의 컨볼루션 레이어 및 3개의 완전 연결 레이어를 포함한 9개의 레이어로 구성됩니다.

  • 입력 이미지는 YUV 평면으로 분할되어서 네트워크에 전달됩니다.
  • 네트워크의 첫 번째 레이어는 이미지 normoalization 수행 (GPU processing을 통해 가속화될 수 있슴)
  • Convolution 레이어 (특징 추출을 수행하도록 설계)
    • 3개의 Convolution Layer (2x2 stride, 5x5 kernel 사용) => stride Convolution 사용
    • 2개의 Convolution Layer (non-stride, 3x3 kernel) => non-stride Convolution 사용
  • Fully-Connected Layer (출력 제어 값으로는 반전 회전 반경을 사용)
    • 조향 controller로 작동 설계

우리는 시스템을 end-to-end로 학습시킴으로써, 네트워크의 어떤 부분이 주로 특징 추출기로 작동되고 어떤 부분이 컨트롤러로 작동하는지 명확하게 구분하기는 불가능하다는 것을 언급합니다.

 

 

 

5. Training Details

5.1 Data Selection

신경망을 훈련시키기 위한 첫 번째 단계는 사용할 프레임을 선택하는 것입니다.

수집된 데이터는 도로 유형, 날씨 조건 및 운전자의 활동(차선 유지, 차선 변경, 회전 등)으로 라벨링되어 있습니다.

차선 따라가기를 위해 CNN을 훈련하기 위해, 운전자가 차선을 유지하고 있었던 데이터만 선택하고 나머지는 제외합니다. 그런 다음 해당 비디오를 10 FPS로 샘플링합니다.

높은 샘플링 속도는 매우 유사한 이미지를 포함할 수 있으므로 유용한 정보를 제공하지 않을 수 있습니다.

 

5.2 Augmentation

최종 Frame Set를 선택한 후 네트워크에게 오류 상태에서 정상으로 복구하는 방법을 가르치기 위해 인위적인 데이터를 추가해 데이터를 보강합니다. (Augmentation)
잘못된 위치 또는 방향에서 복구하도록 진행하는 것, 하지만 데이터를 인위적으로 보강하다보면 크기가 증가하면서 바람직하지 않은 인공 데이터가 생기게 된다.

 

 

 

6. Simulation

CNN을 도로 테스트하기 전에, 먼저 시뮬레이션에서 네트워크의 성능을 평가합니다.

이 시뮬레이터는 데이터 수집 차량의 전방카메라에서 사전 녹화된 비디오를 사용하여, CNN이 차량을 조종하는 경우와

유사한 이미지를 생성합니다.

이러한 테스트 비디오는 사람 운전자가 생성한 조향 명령과 시간 동기화됩니다.

인간 운전자들이 항상 차선 중앙을 운전하지는 않기 때문에, 시뮬레이터에서 사용되는 각 프레임에 연결된 차선 중앙을

수동으로 보정합니다. 이 위치를 "ground truth"라고 합니다.

 

시뮬레이터는 ground truth와의 차이를 고려해 원래의 이미지를 변환합니다.

시뮬레이터는 선택된 테스트 비디오의 첫 번째 프레임을 조정하여 입력 데이터로 학습된 CNN에 전달합니다.

CNN은 해당 프레임에 대한 조향 명령을 반환합니다.

이 때, CNN의 조향 명령과 녹화된 인간 운전자 명령은 차량의 동적 모델로 보내져 시뮬레이션 차량의 위치와 방향을

업데이트합니다.

 

그런 다음 시뮬레이터는 테스트 영상의 다음 프레임을 수정해 차량이 CNN의 조향 값에 따라 이동한 위치에 있는 것처럼 보이는 이미지가 나타나도록 합니다.

이런렇게 만들어진 새로운 이미지는 CNN의 입력에 다시 들어가고 일련의 과정이 반복됩니다.

 

시뮬레이터는 자동차에서 차선 중앙까지의 거리(off-center distance), Yaw, 가산의 차량이 이동한 거리를 기록합니다.

만약 차량이 중심으로부터 1m 초과만큼 벗어나게 되면 사람이 개입해 차량의 위치와 방향이 원본 테스트 영상의 해당 프레임에서 실측값과 일치하도록 재설정해야합니다.

 

7. Evaluation

논문에서는 네트워크의 성능을 평가하기 위해 '시뮬레이션'과 '도로 테스트' 두 단계로 나누어 진행합니다.

 

7.1 Simulation Tests

시뮬레이션 단계에서는, 미리 녹화된 테스트 경로 앙상블에 대해 네트워크가 조향 명령을 제공하도록 합니다.

네트워크의 자율 주행 능력을 측정하는 방법에 대해서 설명합니다.

이를 위해서는 시뮬레이션에서 사람이 개입해야 하는 경우를 측정해야 합니다.

위와 같은 개입은 실제 차량이 차선을 벗어날 때 발생하며, 이 경우 차량을 다시 제어하는 데 6초가 소요됩니다.

이러한 개입의 수를 카운트하고 6초로 곱한 다음, 시험의 경과 시간으로 나누어서 자율 주행 비율을 계산합니다.

이 비율을 1에서 빼면 자율 주행 능력의 추정치가 됩니다. 이를 통해 네트워크의 성능을 평가할 수 있습니다

정면 이미지에서 Highlighted-Rectangle은 CNN에게 들어가는 영역입니다.

만약 600초 동안 10번의 개입이 이뤄졌다면, 자율성은 90%를 가집니다.

 

7.2 On-road Tests

시뮬레이션에서 좋은 성능을 보인 신경망을 실제 차량에 적용하여 도로 테스트를 수행하는 방법을 설명하고 있습니다.

뉴저지의 Holmdel에서 Atlantic Highlands까지의 일반적인 주행에서 자율 주행이 수행된 시간의 비율을 성능 측정 지표로 사용하였습니다.

이 시간은 차선 변경 및 도로 간 교차로를 제외한 자율 주행 시간을 의미합니다.

결과적으로, 해당 주행에서는 약 98%의 자율 주행 시간이 측정되었으며, 가든 스테이트 파크웨이에서 10마일을 주행하면서 어떠한 문제도 발생하지 않았다고 합니다.

 

7.3 Visualiazation of Internal CNN State

다음 그림 2개는 포장되지 않은 도로와 숲이라는 두 가지 다른 입력에 대한 첫 번째 두 개의 피쳐 맵 레이어의 활성화를 보여줍니다. 포장되지 않은 도로의 경우, 피쳐 맵 활성화는 도로의 윤곽을 명확하게 보여주며, 숲의 경우 대부분의 노이즈를 포함하고 있습니다. 이는 CNN이 인간 조향각만을 학습 신호로 사용하여 스스로 유용한 도로 특징을 감지하도록 학습했음을 보여줍니다. 예를 들어, 우리는 도로의 윤곽을 감지하도록 명시적으로 학습시키지 않았습니다.

 

 

 

8. Conclustion

컨볼루션 신경망(CNN)이 도로나 차선을 따라가는 작업을 수동으로 분해하지 않고 전체 과제를 학습할 수 있다는 것을 증명하고 있다.

수십 시간 미만의 운전 데이터로도 태양이 비치는 날씨부터 비오는 날씨까지 다양한 조건에서 고속도로, 지역 도로, 주거 지역 도로에서 자동차를 운전할 수 있게 된다.

CNN은 운전각만으로 매우 희소한 훈련 신호에서도 의미있는 도로 특징을 학습할 수 있다.

예를 들어, 훈련 중 명시적인 라벨링 없이도 도로 윤곽을 감지할 수 있게 된다.

하지만 이 시스템의 견고성을 향상시키기 위해 더 많은 작업이 필요하며, 견고성을 검증하고 네트워크 내부 처리 단계의 시각화를 개선할 필요가 있다.

LIST