ATOMIC⚡️T E S L A Profile picture
#𝗧𝗲𝘀𝗹𝗮, 𝗕𝗮𝗻𝗸𝗲𝗿, 𝗗𝗲𝘃𝗲𝗽𝗹𝗼𝗿, 𝗗𝗲𝘀𝗶𝗴𝗻𝗲𝗿, 𝗛𝘂𝘀𝗯𝗮𝗻𝗱, 𝗙𝗮𝘁𝗵𝗲𝗿, @atomicBTC

Jul 1, 2022, 18 tweets

[AI DAY]

(2021년 8월20일 #Tesla AI DAY - 1부)

🧠 DAY형식의 3번째 이벤트로 중간에 BATTERY DAY가 있었지만 AI 관련이라서 2019년 4월에 있었던 AUTONOMY DAY의 이어지는 이벤트에 가까움.
1️⃣ 1부 : Tesla Vision

[Vision 처리방법]

📷 8개의 카메라(Vision)가 촬영하고 있는 raw데이터를 가져와서 Vector(벡터)*공간을 생성하고 그것을 차량화면에 보여주는 중.

* 좌표(x,y,z)가 있는 가상의 공간으로 3차원 공간을 좌표로 구현한 공간.

🧠 #Tesla 는 사람의 인식을 본따 만들었는데 Input(눈) > Backborn(시각피질) > Neck(신경계) > Head(뇌) > Output(반응) 을 똑같이 구현함.
🚘 4년전에는 1대의 차량으로만 주행 학습하였고 단일 이미지만 처리 했었음.

🚙 Raw데이터를 받아 처리하는 Backborn에 ResNet* 을 활용한 Regnet** 을 사용.

*ResNet : RELU를 통한 출력과 입력을 더한 결과를 사용, 민첩하게 반응.(주행은 사고예방이 1순위)
**RegNet : 다양한 해상도별로 추출이 가능하며 해상도와 인식속도간 Trade Off 가 가능.

🔱 앞의 Backborn이 RegNet 그위의 BiFPN*이 Neck이 되며 이것을 각각의 Head로 전달하는 모델을 HydraNet이라고 구현함.
* RegNet을 활용하여 여러 해상도사진을 피라미드처럼 쌓고 특징을 빠르게 추출. (멀리 떨어진물체는 해상도가 낮으므로)

🧱 각 Head별 역할(차선인식, 물체인식, 신호등 인식)이 따로 있으며 이 Head는 서로 성능에 영향을 주지않게 구현하였음.
💽 Head로 올라오기전 Neck에서 보틀넥(병목현상)이 나오지 않게 캐시메모리로 학습한 일부를 저장하여 활용함.

🧠 그렇게 HydraNet의 Head별로 (차선인식, 차량인식, 신호등 인식)을 따로 인식하는데는 성공하였지만 FSD(자율주행)을 하기에는 부족하다고 판단하였다함.

[벡터 공간]

📷 8개의 카메라로 도로의 선을 인식하는데 이것만으로는 주행이 불가하여 벡터공간을 위한 occupancy tracker를 C++로 개발.
🤷‍♂️ 여기에는 수작업으로는 복잡하여 AI학습이 필요하고 실제공간은 아니기 때문에 현실과 매핑(일치)할수 있는 벡터공간이 필요하게 됨.

🤷‍♂️ occupancy tracker를 활용하여 벡터공간으로 변환하니 차선은 인식하였지만 depth(깊이)를 알수 없고 가려진 부분은 표현이 안됨.
📷 1대의 트럭이 8대의 카메라에 찍히지만 부위별로 다르기 때문에 다른차량으로 인식.
👨‍🎓 이를 해결하고자 벡터 공간을 설계하기 시작함.

🦜 차량의 카메라를 기반으로 마치 위에서 내려다본 것(bird eye view)처럼 벡터 공간을 구성.
📷 노란색부분의 위치가 차량의 위치 카메라마다 다르므로 input된 카메라 영상을 왜곡/변환/회전 하여 캘리브레이션(변형 및 정렬)해서 하나의 합성된 가상카메라로 변환.

🪛 하단의 도로 인식 부분 차이 가 큼. (캘리브레이션 후 벡터 공간으로 구현했을때의 도로 인식이 전과 대비하여 상당히 향상되었음)

[Multicam(멀티캠)]

🟧 오렌지색은 싱글캠, 🟦 파란색은 멀티캠(카메라가 여러개).
🔢 단일 객체는 싱글캠/멀티캠이 비슷하나, 물체가 가려지는 상황에서는 싱글캠이 튀는현상도 발생하며 상당한 차이가 발생함.
🚙 싱글캠은 차량의 일부만 보일때는 차량길이의 오차도 발생.

🧠 싱글캠은 또한 첫번째 사진처럼 차량이 주행중인지 주차중인지 알수 없음.
📹 차량의 움직임을 알려면 프레임적인 시간정보를 저장해야 하므로 뉴럴네트워크에 비디오 모듈을 추가하여 차량의 kinetic(운동 정보, 가속도, 속도, 방향 등)을 Feature queue에 저장.

🚥 Feature queue에 27ms(1초에 27번) 마다 push(넣음, 저장)하여 일시적으로 차량이 다른차량에 가려질때도 저장해넣은 기억을 갖고 판단함.
🛣 시간queue만 갖고 있으면 빨간불에서 다음행동을 잊어버리기 때문에 공간queue (도로 좌회전 표시)을 push하여 연속성을 유지.

🧠 이러한 비디오 모듈을 RNN 모델중 Spatial(공간) RNN을 사용.
🛣 시간queue를 갖고 시간대별로 여러 채널을 메모리에서 읽고 쓰면서 스스로 학습하면서 좋아지는 결과를 보여줌. (처음에는 차량들에 의해 가려진 부분을 차량이 사라지면 시공간queue를 저장하여 학습)

[결과]

🛣 Spatial RNN을 통한 벡타 공간 변환영상으로 도로는 빨간색, 교차로는 파란색 등으로 구분하여 예측하며 fleet(차량)들로 맵을 구성함.
📦 이렇게 구성한 공간은 뉴럴네트워크의 Feature map에 존재.

📹 앞 차량에 의해 뒷 차량이 가려지는 순간 싱글프레임은 유실되며 튀지만 비디오 프레임은 queue에 기억했다가 위치를 표시.
⚠️ 레이다가 측정한것은 초록색, 싱글프레임은 오렌지, 비디오 프레임은 파란색으로 비디오 프레임이 레이다가 측정한것과 똑같은 성능을 냄.

2️⃣ AI DAY 2부 : Planning and Control에 이어짐.

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling