Feedback-Guided Autonomous Driving
자율주행관련 대학원 수업을 들으며 세미나 준비를 했던 논문으로 당시 발표자료를 참고하여 리뷰해보려 한다.
(내용이 많이 생략되어 있을 수도 있으니 논문을 참고해주세요)
1. Introduction
behavior cloning 즉 행동복제는 최근 자율주행에서 성공적인 패러다임으로 자리잡고 있다. 하지만 novel한 시나리오에서는 fail한 경우가 많다.
반면에 사람은 학습할 때 언어적으로 피드백을 받는다. 어느 부분이 잘못됐는지, 최적화되지 않았는지, 이유도 함께 알 수 있다.
행동을 모방하는 것보다 위의 사진과 같이 언어적으로 피드백을 받는 것이 더 이해가 잘 된다.
이러한 관점에서 저자들은 MLLM(Multimodal Large Lanugage Model)을 이용하여 피드백을 받는 FeD(Feedback-guided end-to-end sensorimotor Driving agent)모델을 제안한다.
해당 논문의 contribution은 다음 3가지 정도로 정리할 수 있다.
1. 자동 생성된 Lanugage feedback 데이터로 학습한다. 따라서 추가적인 데이터셋이 필요하지 않다. (보통은 novel한 상황에 대해서 추가적인 데이터셋을 학습시킴으로써 해결하지만 FeD는 language feedback을 받음으로써 novel한 상황에 대처가 되기 때문에 추가적인 데이터셋이 필요하지 않다.)
2. BEV(Bird's Eye View)를 가진 privileged agent(Teacher 역할)로부터 distillation(증류)을 받아 학습한다. 따라서 Sensorimotor Agent(Student 역할)가 RGB데이터만 사용했을 때도 robust하다.
3. 기존 LLM based 모델의 단점이었던 느린 속도를 개선하기 위해 masked token fashion 방식을 도입하였다. (그 외에도 다른 방법들을 채택하여 기존 0.1FPS였던 속도를 2.7FPS로 20배이상의 속도개선을 해냈다. 하지만 이것이 실제 자율주행에서도 적용가능한 속도인지는 알아볼 필요가 있을 것 같다.)
3. Method
3.1 Problem Setting
privileged agent로부터 knowledge distillation을 받아 sensorimotor agent가 학습하게끔 한다. privileged agent는 환경정보(E)인 BEV(Bird's Eye View)에 접근할 수 있으며, 여기에는 중앙선, 물체 위치(자동차, 보행자 등), 신호등 위치 등의 데이터가 포함된다. 이를 통해 sensorimotor agent는 K개의 waypoints를 예측하고 학습한다.
그 외에 공통으로 주어지는 정보에는 I(카메라 이미지, RGB데이터), v(주행 속도), c(카테고리화 되어있는 명령 ex. turn left, forward, lane chaning 등), g(수행하고자 하는 목표)가 있다.
3.2 An End-to-End LLM-based Driver
MLLM의 구조로 GPT보다는 open한 LLaVA를 사용했으며, 연산효율이 높고 waypoints를 한번에 예측할 수 있도록 MLP로 구성된 waypoint prediction head가 추가된 구조이다.
간략하게 구조를 살펴보면, RGB 이미지가 Vision Encoder로 들어가 token화되고 그 외의 현재 자동차상태, prompt 등이 들어가게 된다. 이 때 privileged는 BEV를 통한 환경정보를 추가적으로 입력받아 sensorimotor agent에 해당 정보들을 distillation한다. 이로 예측된 waypoints은 feedback을 통해 fine tuning한다.
Token Prediction Mechanism
현재 LLM 기반의 자율주행모델은 현재까지 생성된 모든 토큰을 바탕으로 다음 토큰을 예측하는 방식이다. 이 방법은 inference 시간이 길어지고 불안정하여 실시간 자율주행 또는 closed loop evaluation에 치명적이다. 하지만 저자들이 제시한 방법은 masked token prediction으로 미리 정의된 위치에 있는 일부 토큰만을 예측하여 효율적이고 빠른 추론을 가능하게 한다.
Encoder
RGB 이미지 (I)를 CLIP ViT encoder를 통해 처리하여 이미지의 특정 정보들을 추출한다.
그 후 lauguage encoder를 통해 단순 prompt들에 vision encoder에서 추출한 token들이 합쳐져 prompt를 생성한다.
Prompt Design for Sensorimotor Agent
Sensorimotor Agent에는 v(자율주행자동차 속도), g(단기 목표), c(카테고리화된 command)가 입력된다. Figure 3과 같이 K개의 waypoint tokens을 추가하여 모델이 예측해야 할 waypoints를 명확히 지시한다. 이 waypoint tokens이 LLM의 마지막 은닉층에서 나온 특성으로 변환되며 최종 waypoints에 사용된다. image patch tokens 512개는 placeholder(임시 대체물)로 추가하고 이 token들은 나중에 vision encoder에서 추출한 임베딩 U로 대체된다. 이 대체된 임베딩은 LLM에 입력되어 시각정보와 언어정보를 함게 처리할 수 있다.
Prompt Design for Privileged Agent
privileged agent는 BEV를 이용한 환경정보가 추가적으로 입력된다. 환경정보에는 주변 object(vehicle, pedstrians within 30 meters range)의 위치, 신호등정보(위치, 상태 red, yellow, green)으로 표현된다. 또한 계획된 경로는 도로 중심선을 따라 균등하게 샘플링된 지점들의 loc토큰으로 표현되며, prompt를 보면 delimiter를 사용하여 각 토큰을 구별한다. 이러한 고해상도의 정보를 학습하여 distillation을 통해 sensorimotor로 정보를 전달한다.
Sensorimotor Agent Loss
sensorimotor agent는 초기학습을 위해 2가지 loss을 활용한다. 1번째는 sensorimotor가 예측한 waypoints와 전문가의 시연 데이터간의 차이를 L1 loss로 계산한다. 그 다음 sensorimoter agent와 privileged agent간의 feature 차이를 계산한다. 이는 privileged agent가 가진 더 많은 환경정보를 sensorimotor에 전이함으로써 sensorimotor의 성능을 향상시킨다. 이로써 sensorimotor는 waypoints를 정확하게 예측하고 privileged agent의 특징을 학습한다.
3.3 Feedback-Guided Fine-tuning
Figure 3과 같이 feedback fine-tuning을 통해 waypoint 예측 오류에 대한 구체적인 텍스트 피드백을 활용하여 sensorimotor agent가 경험을 통해 학습할 수 있도록 한다. 이 때 실패경험을 포함하여 학습하며, 실패경험은 높은 정보가치를 가진 supervision이 될 수 있다. FeD에서는 waypoint 예측을 language prompt를 통해 조정한다. 이를 위해 주변 객체의 상태, 초기 waypoint 예측을 바탕으로 5가지 failure case에 대해 정의하고 이를 feedback한다.
Collision with Vehicles
주변 객체의 동적 장면과 미래 상태에 대한 추론 능력을 향상시키기 위해 현재와 미래의 충돌 가능성에 중점을 둔 피드백을 한다. 이를 위해 kinematic bicycle 모델 T를 사용하여 위치, 방향, 속도를 예측한다. 예측한 미래 자동차 위치를 바탕으로 충돌가능성을 계산한다. 충돌여부는 자차의 예측된 waypoint 위치에 있는 바운딩 박스와 주변 객체의 바운딩 박스간의 교차 비율이 충돌 임계치를 초과하는지에 따라 결정된다. IoU는 두 바운딩 박스의 겹치는 영역을 측정해 충돌 발생여부를 판단하고, 잠재적인 충돌을 예측하여 이를 피할 수 있도록 학습한다.
Collision with Pedestrians
자동차와 동일하게 보행자의 미래 위치를 예측하기 위해 kinematic bicycle 모델을 사용하며 현재위치, 속도를 바탕으로 보행자가 일정한 속도로 이동한다고 가정하고 다음 시간의 위치를 예측한다. 보행자와의 충돌 가능성을 확인하기 위해 자차와 보행자 바운딩 박스의 IoU를 계산하며, 차량 충돌방지와 유사한 방법이다. 차량과 보행자를 분리한 이유는 안전을 우선하여 차량이 감속하지 않으면 보행자가 무단횡단을 시도할 것이라는 가정같이 가능성이 낮은 시나리오도 고려하는데 목적이 있는 것으로 보인다.
Traffic Light Violations
신호등 bounding box 범위 안에 자동차가 들어갔을 때, 신호등이 빨간불이나 주황불이면 자동차의 예측 경로를 계산하여 신호위반을 확인한다. 자차의 예측된 경로 상에서 이동 거리를 누적하여 그 값이 설정된 임계값을 초과하면 신호위반이 발생한 것으로 간주한다.
Deviation from Expert Demonstration
차량이 예측한 경로가 전문가의 주행경로와 얼마나 일치하는지 측정한다. 실제 전문가처럼 주행을 잘 따라가고 있는지 혹은 예측이 잘못되었을 때 얼마나 큰 편차가 발생하는지 모니터링할 때 사용한다.
Deviation from Planned Route
예상한 경로와 실제 예측된 waypoint 간의 차이를 계산하여 차량이 얼마나 계획된 경로를 잘 따르고 있는지 평가하는 방법이다.
(Planned Route와 Expert Deomonstration의 차이를 모르겠다.)
Model Fine-tuning with Feedback
agent가 잘못 예측한 waypoint들을 수정하고 feedback을 제공할 수 있도록 fine-tuning한다. 이 때 fine tuning도 2가지 loss를 사용한다. cross entropy loss는 language모델의 출력을 기반으로 계산되는데 예측된 피드백과 실제 피드백의 차이를 계산한다. 이는 failure feedback을 언어로 생성하는 능력을 향상시키고 failure를 교정하는데 필요한 피드백을 제공할 수 있도록 한다. Lwpts는 예측된 waypoint와 실제 전문가 waypoint 간의 차이를 계산한다. 최종적으로 fine-tuning은 waypoint 예측 손실과 언어적 피드백의 손실을 결합하여 이루어진다.
3.4 Training Procedure
우선 vision encoder와 language encoder는 사전 훈련된 LLaVA-7B 모델을 사용하여 초기화한다. 첫 번째 단계에서는 privileged agent에서 학습된 특성을 feature distillation 방식으로 sensorimotor agent에 전달하여 학습을 시작한다.
두 번째 단계에서는 feedback reasoning을 적용하여 모델을 fine-tune합니다. 이 단계에서는 목적 함수에 따라 waypoint 예측과 언어 기반 피드백을 결합하여 모델을 개선한다. 두 단계의 학습 절차는 속도와 메모리 효율성을 고려하여 설계되었다. 피드백 reasoning을 사용하면 언어 프롬프트의 길이가 길어져 메모리 사용량과 학습 시간이 증가하기 때문에, 피드백 없이 더 큰 배치 사이즈로 초기 학습을 진행하고, 이후 작은 배치 사이즈로 피드백을 적용해 fine-tuning을 한다.
4. Experiments
4.1 Comparison With State-Of-The-Art
Closed-Loop Results in CARLA simulator
FeD는 최신 성능을 달성하였으며, 더 가볍게 설계된 TinyFeD는 원본 모델의 1/7크기임에도 불구하고 TransFuser보다 좋은 성능을 보였다.
Open-Loop Results on nuScenes dataset
최신 성능을 달성하였으며, 특히 GPT driver와 비교하여 FeD는 end-to-end방식으로 채택하기 때문에 효율적이라고 저자들은 말한다.
4.3 Qualitative Results
Figure 4와 같이 처음에 피드백 하기전 주황 포인트는 도로를 벗어날 가능성을 보였지만 피드백 받은 후에 올바른 주행을 하는 모습을 볼 수 있다.
https://www.youtube.com/watch?v=0f6NQ7sn6hA 에 실제 simulator 비교영상이 있으니 참고하면 좋습니다!
5. Conclusion
FeD는 느리고 계산비용이 많이 드는 기존의 LLM 기반 방법들과 비교하여 효율적인 폐쇄 루프 평가를 가능하게 한다. 또한 privileged agent로부터 BEV(Top-Down View) 장면 정보와 함께 distillation(증류)를 통해 학습한다. 이를 통해 주변 환경의 정보를 보다 효율적으로 활용할 수 있습니다. FeD은 자신의 실수를 바탕으로 더 잘 학습할 수 있도록, 세부적인 수정 피드백을 사용하여 원인을 알려준다. closed loop 시뮬레이션과 open loop 실제 환경 평가에서 모두 최신 성능을 달성했다.