brunch

You can make anything
by writing

C.S.Lewis

by 글쓰는 워커비 Jun 06. 2023

테슬라는 어떻게 자율주행을 만들었을까?

테슬라 자율주행의 비밀, 뉴럴 네트워크

테슬라의 자율주행을 말하려면 너무나도 많은 지식이 필요한지 모르겠습니다. 엄청난 대단한 기술이 있겠지만, 우리가 이 모든것을 이해하기엔 우리의 현실은 너무나도 각박하고 지치죠. 따로 공부할 시간은 없으니 그냥 대단한 기술이겠거니 합니다. 


 테슬라에서는 매년 오토노미 데이를 열고 있으며, 이곳에서는 자신들이 테슬라의 개발현황이나 새로운 신기술을 만들게 된 배경등을 발표하고 직접 소통하고 있습니다. 매번 새로운 영감을 주시는 '비즈카페'님께서 2019년 테슬라의 오토노미 데이 영상*을 번역 업로드해주셔서 함께 공부하고 더더더 요약정리를 해보고자 합니다. 


*관련영상 

테슬라 자율주행의 설계자 안드레 카파시 | How AI Powers Self Driving Tesla | Andrej Karpathy | Tesla Autonomy Day 2019



 테슬라의 차량에는 이처럼 카메라 센서를 장착하였습니다. 이를 테슬라 비전이라고 하는데, 이와 같은 카메라에서 축적하는 비디오 데이터를 기반으로 뉴럴 네트워크가 데이터 처리하고 있습니다. 


이와 같은 테슬라 비전을 통해 도로상의 테슬라 차량이 도로의 상태를 인지하고 자율주행에 도움을 주거나 혹은 자율주행을 할 수 있습니다. 이와 같은 테슬라 비전을 이용한 자율주행이 어떻게 만들어졌는지 자세히 설명드리겠습니다.(발표자가 쉽게 설명했음에도 불구하고 너무 길고, 여전히 복잡해 단순화해보겠습니다)



실제로 우리는 살아가면서 첼로, 보트, 이구아나, 가위 등을 너무나도 쉽게 구분합니다. 너무 뻔하니까요. 하지만, 컴퓨터에게는 그렇지 않습니다.


   이 모든 그림 하나하나가 엄청난 양의 픽셀로 인식되고 있기 때문에 어떤 사물을 보여줬을 때 그것이 무엇인지 구분하는데 굉장히 많은 처리 능력이 필요합니다. 또 같은 이구아나여도 색깔이 다르고 포즈가 다르기 때문에 하나만 학습시킨다고 다음부터 바로 이구아나를 인식시키는 건 어려운 일입니다.


 그래서 이처럼 컴퓨터(기계)가 사물을 캐치하고, 인식하여 어떤 개념인지 인지하는 과정을 우리는 인공 신경만(뉴럴 네트워크)을 통해 가능하게 만들었습니다. 그럼 그 과정을 압축해 보여드리겠습니다.



 뉴럴 네트워크를 대충, 간단하게 표현하면 이렇게 생겼습니다. 무언가 입력값을 주면, 여러개 층, 레이어를 거쳐 무언인지 결과값을 도출해냅니다. 아까의 이구아나 사례를 들어볼까요?



처음 컴퓨터에 이구아나의 그림이 입력되면, 뉴럴 네트워크를 거쳐 4가지 답변이 나옵니다. 10%는 이구아나, 20%는 가위, 30%는 첼로, 40%는 보트 이렇게 나옵니다. 정답률이 10%에 불과하죠


 이 정답률을 높이기 위해서 뉴럴 네트워크의 레이어에 가중치를 줍니다. 가령 팔다리가 달린 것을 생물이라고 인식하는 레이어가 있을 것이고, 복잡도 높은 색을 가진 것을 생물이라고 판단하는 레이어 등이 있을 것입니다. 이런 레이어에서의 가중치를 높이는 것입니다. 



 처음 랜덤하게 결과값을 낼 때보다 평균적으로 더 높은 정답률로 이구아나라는 답을 낼 것입니다. 그리고 이 뉴럴 네트워크에 이와 같은 이구아나의 사진을 수백만번 넣어서 결과값이 올바르게 나오게끔 학습시키는 것입니다. 이구아나 사진에 대한 이구아나 정답률을 높이는 과정이죠.



 우리 인간은 재패니즈 스페니얼의 사진을 한번 보여주고 학습시키면, 여러가지의 강아지 사진이 주어져도 한번에 재패니즈 스페니얼만 구분할 수 있습니다.


  그러나 컴퓨터는 이 역시 한번에 인지하기 힘들죠. 그래서 컴퓨터에는 재패니즈 스페니얼의 다양한 정보를 굉장히 많이 줘야합니다. 이런 점에서 착안하여 자율주행도 인식시키기 시작했습니다.



 그러나 차량에게 자율주행을 위해 도로를 인식시키는것은 또 다르게 어렵습니다. 무엇이 차선인지 먼저 영상안에서 표시를 해줘야합니다. 그리고 이런 차선표시에 대해서도 역시 다양한 도로, 다양한 빛 아래에서도 도로를 인식시킬 수 있도록 표시해줍니다. 


그럼 위의 이구아나, 재패니즈 스페니얼 인식과정처럼 반복합니다. 이를 통해 직선 도로에서 차선을 인식하는 것은 능숙해집니다.



 그러나 바로 위기에 봉착하죠. 곡선도로에서는 차선을 인식하기가 어렵습니다. 왜냐하면, 곡선구간에서 앞차가 앞의 차선 진행방향을 가리고 있기 때문입니다. 그렇다고 그냥 둔다면, 곡선도로에서 직진 주행하여 차량은 사고를 일으킬 수 있습니다. 


 이 역시 마찬가지입니다. 곡선도로에서는 곡선의 차선을 표시해줍니다. 그리고 이와 비슷한 이미지를 대량으로 뉴럴 네트워크에 입력하여 학습시키는 것입니다. 그러면, 다른 곡선도로가 나타나도 차선을 '예측'할 수 있게 됩니다.



이처럼 직선, 곡선 도로만 학습하는 것이 아니라 굉장히 많은 상황을 인식해야만 합니다. 비가오나 눈이오나 그림자지거나 터널인 곳등 시각, 물적 환경이 모두 달라지는 것을 다 뉴럴네트워크에 넣어줘야합니다. 


 실제로 다양한 빅테크들이 얼마나 많은 양의 데이터를 넣고 있는 지 본다면, 이는 필수불가결한 일이기도 하죠.



그래서 시뮬레이션을 하는 것입니다. 이를 위해 위와 같이 테슬라 자율주행 시뮬레이터를 통해 방대한 양의 시뮬레이션을 학습시키고 있죠. 



왜냐하면 단순 도로 뿐만아니라, 날씨나 길거리의 오물, 다양한 돌발적이거나 예측하기 어려운 도로 상태들을 기존의 이미지 영상만으로 학습시킬 수 없기 때문입니다. 



세상에 트럭이 3대가 연달아 있는 그림이나, 보트를 끌고 가는 트럭 등을 예상할 수 있었을까요? 그래서 시뮬레이터를 통해 뉴럴 네트워크 트레이닝에 사용하고 있습니다. 



 처음부터 이야기하고 있는 뉴럴 네트워크가 잘 작동하기 위해서는 이처럼 다양한 데이터셋이 필요합니다. 방대한 데이터 셋은 물론이고, 그 형태가 다른 다양한 데이터셋, 그리고 현실에서의 데이터셋까지 세가지 데이터 셋이 뉴럴 네트워크를 고도화하는 것이죠.


 그런데 이런 데이터를 어떻게 갖게 되었을까요? 바로 플릿입니다. 전세계를 돌아다니는 테슬라 차량을 모두 플릿이라고 하는데 이를 통해 데이터를 수집합니다. 사물 인식에 대해서 조금 더 자세히 설명해보죠.



우리는 도로에서 차량과 자전거를 위와 같이 구분합니다. 자동차는 빨간 테두리, 자전거는 노란 테두리. 그런데 이렇게만 프레이밍해놓으니, 문제가 생깁니다. 오른쪽처럼 차에 자전거를 매단 경우에는 차로 인식하지 않고, 차량과 자전거를 별개로 하여 인식하는 것이죠. 


 그래서 이에 대한 것 역시 다시 수집하기 시작합니다. 



전세계에 있는 플릿으로부터 비슷한 이미지를 수급합니다.자동차에 자전거를 매단 형태의 것들을 모아 자동차로 인식하게끔 만들기 위한 현실의 / 다양한 / 방대한 양의 데이터인 것이죠.



이와 같은 시도를 통해 차와 보트가 결합했거나, 공사현장에 대한 데이터들도 모았습니다.



도로의 장애물도 마찬가지로 수집하고요. 동물 역시 수집하고 있습니다.



지금까지 말한 뉴럴 네트워크를 한번 정리해볼까요


1) 먼저 데이터 셋을 보면,

2) 데이터셋을 분류합니다.

3) 그리고 2)에서 분류되지 않는 부정확한 상황들을 다시 구분합니다.(ex. 차량과 자전거 겹칩, 동물이나 쓰레기가 있는 도로, 급작스러운 사고 유발 상황)

4) 또 이런 구분에 더 강화하여 전세계 흩어진 플릿들에게 이 상황들에 대한 Real / Varied / Large의 데이터셋을 요청하여 받습니다.

5) 받은 데이터셋으로 3) 구분을 더 강화하는 것이죠



플릿이 데이터셋을 수집하고 러닝하는 효과를 높이기 위해 우리느 인간 대신 컴퓨터의 라벨이 구분하도록 만드는게 중요합니다. 인간이 하면 돈이 많이 드니까요. 결국 이 비용은 차량의 구매비용으로 이어지겠죠.

 


테슬라는 끼어들기에 대한 데이터를 모으기도합니다(2019년의 영상이니까 이미 적용되었을지도..) 테슬라의 오토파일럿은 차량이 끼어들기하려고 한다면 최대한 빨리 감지할 수 있어야 합니다.  


깜빡이를 키고 들어오는 걸 구분해도 좋겠지만, 그렇지 않은 운전자도 많을 테니 깜빡이에 대한 인식은 고려하지 않습니다. 플릿들이 차선을 변경하는 차량들의 데이터를 대신 모아줍니다. 


그리고 차선 변경하는 많은 차량들의 몇초전 영상들에 대해 학습한다면, 미리 차선변경하려는 차량을 인식할 수 있겠죠.



당시 끼어들기 데이터를 모으고 훈련하던 시기의 이야기입니다. 테슬라의 쉐도우 모드로 오토파일럿에 적용하였는데, 우측 차로에서 끼어들려고 하는 차량이 있습니다. 그래서 기존 학습한대로 속도를 줄이거나 대응을 할 것입니다. 그러나 우측 차량은 끼어들기를 하지 않습니다. 그동안 예측안되었던 데이터셋이 생긴것이죠. 이런 것을 꾸준히 신규 추가하고 학습하는 것입니다. 


 실제로 전세계 플릿에서 진행되고 있기 때문에 훈련 당시 테슬라 운전자들은 끼어들기에 대한 오토파일럿의 대응 능력이 실시간으로 좋아지는 것을 체감했을 것입니다. 



 이제 자율주행은 시각적 요소를 넘어 다른 요소의 영향도 받고 있습니다. GPS와 운전대를 기반으로 운전자의 경로를 예측하는 것입니다. (사실 지금까지 모든 뉴럴 네트워크는 예측을 하는 데 초점을 모음)


그래서 사실 슈퍼비전의 수준을 넘어서, 경로에 대한 예측이 완성되면 더이상 완전한 상황이 아니어도 주행을 할 수 있도록 만들어주는 것입니다.



 이처럼 전세계 플릿의 러닝 과정을 통해 더 많은 데이터를 뉴럴 네트워크에 밀어넣어 고도화할 수 있게 된 것입니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari