바로가기 메뉴
메인 메뉴로 바로가기
본문으로 바로가기

2020.12.30 Tech

딥러닝을 이용한 도로 HD맵의 변화 탐지 기술

우리가 지도를 통해 내 위치를 파악하고 목적지를 찾아가는 것처럼, 도로 위 머신들이 움직이기 위해 가장 우선적으로 필요한 데이터가 있습니다. 바로 공간의 고정밀 데이터, HD맵입니다. 자율주행 머신이 내 위치를 파악하고(Localization), 현재 상황을 인지하고(Perception) 목적지까지의 경로 설정(Decision making & Planning)을 가능하게 하는 가장 중요한 데이터입니다.

HD맵 또한 결국 '지도'이기 때문에 지도가 가지는 숙명적인 문제에서 자유로울 수 없습니다. 끊임없이 최신의 상태로 유지되고 갱신되어야 합니다. 게다가 자율주행 머신의 경우에는 사람 수준의 인지/행동 능력을 갖고 있지 않기 때문에 보다 정확한 정보를 필요로 합니다.

HD맵의 최신성을 유지하는 기술

네이버 지도는 어떻게 최신의 상태를 유지하고 있을까요? 지도를 주기적으로 제작하기에는 시간과 장비 모두 한정적이기 때문에 대부분의 제작자들은 지도 사용자 다수의 참여를 통해 변화 지역을 탐지하고 갱신하고 있습니다. 실제로 지도를 이용하는 사용자가 지도의 변경점을 지도 제작자에게 제보하여 최신성 유지를 돕는 방식이죠.

HD맵도 마찬가지로 최신성 유지를 위해 항공 사진과 고정밀 센서들을 탑재한 MMS 차량을 끊임없이 보내는 것은 현실적으로 어려운데요, 따라서 우리는 실제 HD맵의 사용자라고 할 수 있는 차량들로부터 변화 지역에 대한 정보를 얻고자 했습니다. 저비용 센서들을 탑재한 다수의 차량으로부터 변화를 탐지하여 업데이트하는 ACROSS 프로젝트입니다.

관련 글 : ACROSS 프로젝트, 도로자율주행용 HD맵을 최신으로 유지하는 기술

카메라, IMU, GPS 등의 센서들을 이용해 대략적인 내 위치를 측위하고(Localization) 현재 내 위치의 HD맵이 변했는지 판단(Change detection)을 수행하고, 이를 업데이트(Map update)합니다. 상대적으로 저비용 센서를 이용하기 때문에 측위 정확도에 의한 오차가 생길 순 있지만 다수의 차량에서의 결과를 취합하고 딥러닝 학습을 통해 이를 극복하고자 하는 것이죠. 이번 스토리에서는 이 중 변화 판단 부분에 대한 딥러닝 기술 내용을 소개하겠습니다.

Approach : 실내 변화 탐지 연구로부터의 확장

네이버랩스는 앞서 실내 지도에서의 매장 변화 탐지 알고리즘인 셀프업데이팅 맵에 대해 소개한 바 있습니다. Deep metric learning 기법을 적용해서 데이터 쌍들의 관계로부터 모델 스스로 변화에 대한 기준을 정의하고, 시간 간격을 두고 같은 장소에서 촬영된 두 이미지 쌍으로부터 변화를 탐지하는 기술입니다.

관련 글 : 셀프 업데이팅 맵, AI와 로봇이 바뀐 상호를 찾아주는 기술

POI change detection 설명 도식

셀프 업데이팅 맵 연구를 통해 우리는 deep metric learning을 이용한 변화 탐지가 (1)중요하지 않은 변화들은 잘 무시해내고(보행자, 매장 인테리어 등) (2)다소간의 시점 변화에 강인하다는 것을 확인했습니다. 아래의 왼쪽 예시을 보면 변화를 탐지하는 영역으로 중요한 정보인 간판을 잘 인식하고 있고, 오른쪽 예시에서는 다른 각도와 위치에서 찍힌 영상임에도 딥러닝을 통해서 같은 공간임을 인지하는 것을 확인할 수 있습니다.

그렇다면, 이렇게 문제 상황에 강인한 실내 변화 탐지 알고리즘을 실외인 도로 HD맵으로 그대로 확장해서 적용할 수 있을까요? 도로 HD맵역시 차량에 탑재된 카메라로부터 이미지를 취득하기 때문에 실내 변화 탐지 연구와 동일하게 (1)보행자, 도로 위의 차들과 같은 중요하지 않은 변화들이 존재할 수 있고, (2)저비용 센서를 이용하기 때문에 약간의 측위 오차에 의한 시점 변화가 발생할 수 있습니다. 하지만 deep metric learning 기법을 HD맵 변화 탐지에 적용하기 위해서는 먼저 해결해야할 몇 가지 문제가 있습니다.

Challenge 1. 적대적 훈련 기법(Adversarial learning) 적용

변화 탐지를 위한 Metric learning 훈련을 위해 대개는 '기준 이미지, 관련 이미지, 비관련 이미지'의 데이터 triplet을 이용합니다. 기준 이미지와 관련 이미지는 유사해지도록, 기준 이미지와 비관련 이미지는 달라지도록 목적 함수를 학습시키면서 변화에 대한 metric을 학습하는 것입니다. 그러나 먼저 맞닥뜨린 문제는 우리가 비교해야할 실외 환경의 데이터 쌍이 굉장히 다르다는 점이었습니다.

아래 그림을 보면, Data triplet 예시 중 왼쪽은 이전 실내지도 연구에서 우리가 이용하였던 데이터 쌍이고, 기준 이미지와 관련 이미지 비 관련 이미지가 모두 카메라로부터 취득된 이미지의 형태입니다. 이런 데이터 triplet을 이용해서 학습을 진행하게 되면 훈련된 딥러닝 모델은 매장의 변화를 탐지하기 위해서 매장의 상호가 적힌 간판을 위주로 판단하는 것을 확인할 수 있었습니다. (바람직하죠?)

그러나 오른쪽의 실외, HD맵 변화 탐지를 위한 data triplet 예시를 보면 같게 만들어야 할 기준 이미지와 관련 이미지가 굉장히 달라보이고, 오히려 다르게 만들어야 할 관련 이미지와 비 관련 이미지가 굉장히 같아보입니다. HD맵은 벡터 형태의 데이터이기 때문에 이미지 평면으로 투영하면 도로 노면에 있는 road layout 정보를 제외한 나머지 부분의 값은 존재하지 않게 비어보이기 때문이죠. 반면에 차량의 카메라로 취득된 기준 이미지의 경우 도로 노면에 있는 표지 외에도 자동차, 빌딩 등이 존재하는 일반적인 이미지로 보입니다.

이렇게 비교해야하는 두 데이터의 특성이 현저히 다르거나 데이터를 취득하는 방식이 다른 경우, 데이터의 도메인(Domain)이 다르다고 하는데요, 도메인이 다른 데이터를 이용해서 훈련을하게 되면 우리가 목표로 하는 대상(도로 표지나 차선 등)이 아닌 엉뚱하게 다른 정보들을 조합해서 모델이 판단하게 됩니다. 마치 '좌회전 도로 표지가 있는 곳에는 항상 어떤 나무가 있었어!'와 같은 부정확한 정보이죠.

이렇게 데이터 도메인이 다른 두 쌍의 이미지를 비교하기 위해서, 우리는 적대적 훈련(Adversarial learning) 기법을 적용했습니다. 적대적 훈련이란 서로 다른 두 데이터의 도메인을 구분하는 식별기(Discriminator)와 데이터를 임의의 특징 공간으로 부호화하는 생성기(Generator)를 교대로 훈련하면서 두 도메인 사이의 차이를 줄이는 훈련 기법입니다. 식별기는 서로 다른 domain의 두 data가 어떤 domain으로부터 왔는지를 판단하는 방법을 학습하고 생성기는 식별기가 맞출 수 없도록 두 data를 점점 더 비슷하게 만드는 방법을 학습합니다.

훈련이 계속 진행되면 생성기에서의 출력이 두 data가 어떤 domain에서 왔는지 식별할 수 없을 정도로 비슷해지게 됩니다. 이로써 도로 HD맵에서도 적대적 훈련 기법을 통해 도메인이 다른 데이터 쌍을 이용하더라도 metric learning을 이용해 변화를 제대로 탐지할 수 있게 되는 것이죠.

Challenge 2. 가림과 측위 오차 (Occlusions & Localization noise)의 극복

도로 HD맵 변화 탐지를 위해 풀어야 할 또 다른 문제로는, 물체에 의한 가림(Occlusion)과 측위 오차(Localization error)로 인한 투영 오류가 있습니다.

도로 위에는 많은 차량들이 존재하고 변화를 탐지해야하는 도로 노면을 가리고 있습니다. 차량에 의한 가림은 딥러닝 모델이 존재하던 도로 표지가 사라졌거나 없던 새로운 표지가 생겨났다고 오판할 수 있게 만듭니다. 기계의 눈으로 보면, 이 부분에 좌회전 표지라던지 직진 표지 등이 있어야 하는데 차가 가리고 있으니 없어졌다고 판단하게 되겠죠. 또한 측위 오차가 발생한다면 이미지 평면으로 투영된 HD맵이 이미지와 잘 정렬되지 않아서 딥러닝 모델이 오판할 수 있게 됩니다. 우리는 이러한 문제들을 학습을 통해 추가적인 후처리 없이 모델이 알아서 판단할 수 있도록 훈련시키고자 했습니다.

먼저, 장애물에 의한 가림이 발생하면 해당 부분은 무시할 수 있도록 모델을 훈련하였습니다. Semantic segmentation을 이용해서 보행자나 차량과 같은 장애물들을 구별하고, 해당 위치에서 변화가 발생한 데이터를 훈련 데이터에서 제외합니다. 이렇게 훈련 데이터를 선택해서 훈련하면 딥러닝 모델은 차량과 보행자가 가린 부분들을 변화가 발생한 것으로 인식하지 않습니다. 또한 측위 오류 역시 훈련 과정 중에 랜덤한 측위 오차를 넣어줌으로써 딥러닝 모델이 측위오차를 극복할 수 있도록 훈련하였습니다.

적용 결과

이전 실내지도의 변화 탐지 연구로부터 실외, 특히 차량용 지도인 HD map을 위한 변화 탐지를 위해 여러가지 아이디어를 추가해보았습니다. 결과는 어떨까요?

윗 줄은 이미지와 HD map을 겹쳐서 도식화한 그림이고 아래는 딥러닝 모델이 판단한 변화가 발생한 부분입니다. 도로의 표지들이 없어지거나 나타나거나 혹은 다른 모양으로 바뀜에도 잘 판단하는 것을 확인할 수 있었습니다. 흥미롭게도, 차로 중심에 그려진 유도선이나 가설된 횡단보도의 경우 등 훈련 데이터에 포함되지 않은 변화 상황에서도 잘 동작합니다.

측위 오차에 의한 투영 오류에도 강인함을 확인할 수 있습니다. 그림 위쪽의 그래프는 '이미지와 HD맵 사이의 유사도'입니다. 낮을 수록 변화가 발생했다고 모델이 판단하는 것입니다. 임의의 측위 오차를 주면서 딥러닝 모델이 어떤 판단을 하는지 확인해보았는데요, 다른 부분에도 약간씩의 오류가 발생하긴 하지만 실제로 변화가 발생한 '직 좌회전 도로 표지' 위치에 항상 변화가 발생했다고 판단하는 것을 확인할 수 있습니다.

또한 차량과 같은 장애물에 의한 가림이 발생했을 때도 우리의 목표대로 딥러닝 모델이 변화 탐지를 수행하지 않는 것을 확인할 수 있었습니다. 도로 표지가 사라진 위치를 변화로 잘 인식하다가 차량이 가리게 되면, 그 순간에는 변화로 판단하지 않는 것을 확인할 수 있습니다.

마지막으로 변화가 많이 발생한 구간에서의 변화 탐지 결과 동영상입니다. 약간의 오차는 존재하지만 큰 문제없이 여러 변화 영역에 대해 잘 탐지하는 것을 확인할 수 있었습니다.

맺음말

지금까지 딥러닝을 이용해 도로 HD맵의 변화를 탐지하는 방법을 소개했습니다. 현재까지의 연구는 이전의 실내에서의 변화 탐지 연구로부터 실외, 차량을 위한 지도로 확장이었는데요. HD맵이 최신성을 유지하며 자율주행 머신들을 위한 주요한 데이터로 기능하기 위해, 더 새롭고 다양한 방법론을 연구하고자 합니다. 네이버랩스에서 함께 새로운 문제를 정의하고 풀어보고 같이 성장해 나가실 분들을 언제든 환영합니다.

DEVIEW 2020 '여기.. 예전이랑 다른데? (딥러닝을 이용한 HD map 변화 탐지 기술 개발기)' 세션 발표 보러가기 >

Related Articles