brunch

You can make anything
by writing

C.S.Lewis

by 티맵모빌리티 Oct 25. 2023

티맵은 유저 휴대폰 카메라를 이용해 신기능을 만든다?

23편 - Software ADAS로 운전의 편리함을 높이다

오늘 티맵테크노트는 휴대폰의 카메라를 통하여 주행 중인 상황을 실시간 분석하고 운전자의 안전운전을 돕는 기능을 개발하는 과정을 설명드리려고 합니다.


개요


운전자는 차량 운전 시 길 안내를 위해 아래의 이미지처럼 차량에 휴대폰을 거치하여 TMAP 을 이용하게 됩니다. 이때 휴대폰 카메라를 통해 주행 중인 방향의 영상을 얻어 여러 차량 및 보행자와 같은 object들을 인식하게 되면 주행 중 여러 상황에 따른 안내가 가능할 것으로 판단하여 프로젝트를 시작하게 되었습니다.  

모빌리티 산업의 꽃이라는 자율주행은 운전자의 조작 없이 스스로 판단하고 운행하는 시스템으로, 국내외 많은 업체에서 기술 개발을 통해 여러 제품을 출시하고 있습니다. 자율 주행은 차량의 여러 센서들을 통해 여러 정보들을 수집하고 통합하여 최적의 주행 경로로 운전을 하게 되는데, 이것의 기본이 되는 게 바로 차선 인식입니다. 도로에서 차선 인식이 되어야 차량의 위치를 정확히 유지할 수가 있으니까요.


TMAP에서도 휴대폰 카메라를 통해 얻은 영상에서 인식된 객체들의 정보로 운전자에게 유효한 정보를 제공하려면, 주행하는 방향의 도로와 주행 중인 차선이 포함되어 있어야 합니다. 그러나 TMAP 은 다른 자율주행 차량들과는 다르게 사용자 취향에 따라 여러 방향과 위치에 휴대폰을 거치하게 됩니다. 따라서 거치된 휴대폰 카메라의 방향이 도로를 향하고 있는지, 그리고 도로에서 차량의 주행방향과 맞는 차선이 포함되어 있는지 확인되어야 했고, 이런 정보가 확인된 후에야 인식된 객체들의 정보가 의미를 가질 수 있다고 확인하였습니다.  

(이미지 출처 : Microsoft PowerPoint stock images)


차선 검출 방안

주행 중에 주행 경로 방향으로 사진을 찍게 되면 위와 같은 사진이 나오게 됩니다. 주행 방향에서는 항상 소심점이 존재하고, 소실점을 기준으로 하단 영역을 도로 영역으로 확인할 수 있었습니다. 그리고 도로 영역을 확인하면 주행 중인 차선을 확인할 수 있습니다. 


Problem: 휴대폰 카메라를 통해 주행 중인 상황에 대해서 인지하려면, 휴대폰에서 카메라가 도로를 향해 있는지 확인이 필요

Solution: 카메라가 도로를 향할 경우, 소실점이 반드시 존재하며, 소실점은 기준으로 도로 영역을 확인하고, 도로영역으로부터 주행 차선에서 평균적인 차선을 알아낼 수 있다. 


이와 같은 결론으로 TMAP 에서는 운전자에게 안전한 운전정보를 제공하고자, 휴대폰 카메라 영상을 통해 소실점을 검출하여 도로 영역을 확인하고, 도로영역에서 차선을 확인하여 주행 중인 위치를 확인하여, 그에 따른 상황에 대한 안내가 가능하도록 기능개발을 하게 되었습니다.

(이미지 출처 : 특허 문서 이미지 첨부)

전체 동작 시나리오


전체적인 동작 시나리오는 아래와 같습니다.   

TMAP 에서 경로 주행을 하게 되면 많은 정보들을 확인할 수 있습니다. 

주행 정보 : 현재 주행 중인 방황과 위치 그리고 주행 속도를 알 수 있습니다. 

경로 정보 : 주행하고자 하는 목적지와 목적지까지의 많은 안내점 들을 알 수 있습니다.

CITS 정보 : 주행 중 위치에서 CITS 정보를 확인하여 실시간 신호등 정보를 얻을 수 있습니다.  


이와 같은 정보를 기반으로 경로 주행을 하게 되면, 도로 영역을 잘 확인할 수 있는 직진구간에서 차선 검출을 수행하게 됩니다. 차선 검출 과정을 아래 3단계를 거쳐서 수행하게 됩니다. 

소실점 검출 → 도로 영역 검출 → 차선 검출


위에도 언급했듯이 주행 중인 방향을 바라보면 도로의 끝에는 항상 소실점이 존재합니다. 도로가 좌/우로 굴곡이 있어서 위치만 다를 뿐 항상 소실점은 존재합니다. 그리고 소실점을 기준으로 이어진 직선은 도로영역으로 확인할 수 있습니다. 이렇게 얻어진 도로영역에서 차선을 검출할 수 있습니다. 


이런 검출과정은 OpenCV 이미지 처리를 기반으로 이뤄지게 되는데, 기본적인 이미지 처리 과정은 아래와 같습니다.  


Image 선 처리 과정 

캡처된 이미지에서 차선에 해당하는 Line을 추출하는 과정을 간략히 나타냈습니다. 


1. 영상 캡처를 하게 되면, 영상에서 차량 관련 object들을 추출합니다. 

2. 추출된 object들을 이미지에서 masking 처리하여 불필요한 Line 검출에서 제외시킵니다. 

3. 이미지 전체 색상을 gray color로 변환합니다. 

4.Line 추출을 용이하게 하기 위해 canny edge로 윤곽선을 확인합니다. 

5. 그 이미지에서 hougLine을 통해 Line을 추출합니다.  


기본 이미지 처리를 위 차선 검출 3단계에서 각각 처리를 하게 됩니다. 그러면 각 단계마다 아래와 같은 결과물을 얻게 됩니다. 차선 검출을 정상적으로 성공하게 되면 그 이후는 Yolo model을 이용한 Object detection을 통해 경로 주행의 각 상황에 따른 안내를 운전자에게 제공할 수 있게 됩니다. 


단계별 이미지 처리 결과 sample 


차선 검출 세부 동작


차선 검출 방법은 Deep learning 방식으로 데이터를 학습시키는 방식, OpenCV를 통해 실시간 Image 처리를 하여 line을 검출하는 방식 등 여러 가지가 있는데요. TMAP 에서는 소실점을 통한 도로 영역의 검출검출된 차선 정보의 신뢰도에 대한 필요성이 있어, 일정 시간 buffer에 Line 데이터를 쌓아 Clustering을 통해 신뢰도 높은 데이터를 추출하여 보다 정확한 차선을 검출하는 과정을 추가하였습니다. 관련한 사항은 현재 특허로 출원 완료하였고 세부 내용은 아래 기술하였습니다. 


차선 검출 Flow

소실점 검출에서 차선 검출까지의 3단계의 세부 동작은 아래 그림에서와 같은 순서도를 가지고 동작하고 있습니다. 실시간으로 검출한 line 이 유효하지 않은 경우가 있어서 일정 buffer를 두어서 유효한 Data를 받아올 수 있게, 데이터의 군집화를 하여 확률 높은 데이터를 뽑아 사용하였습니다.    

특허: 도로 영상 분석장치 및 도로 영상 분석장치의 동작 방법 / 출원 10-2023-0050742

 

Clustering을 위한 Line data 변환처리

Image 처리를 하여 추출한 Line은 2개의 점 x, y 좌표로 결과를 받게 되는데, 이 Line의 좌표로는 clustering을 하여 유효한 결과물을 얻기가 어렵습니다. 그러나 차선에서의 Line 은 비슷한 angle과 시작점을 가지고 있으므로 추출한 2 point line을 angle과 시작점을 가지는 linear로 변환하여 buffer로 저장하였습니다.  

2 point line
angle과 start point

angle과 start point로 변환된 Data를 buffer에 일정시간 저장하여 Kmeans clustering을 하게 되면 아래 3차원 도표처럼 Data 군집을 이루게 되고 확률 높은 데이터가 차선에 가까운 line으로 판단하여 처리하게 되면 캡처된 이미지처럼 주행 중인 차량의 주행 차선을 확인할 수 있게 됩니다.    

위 검출된 차선을 기반으로 Yolo model 이용하여 차량이나 사람 object를 인식하게 되면 경로 주행에서 운전자에게 의미 있는 정보를 제공할 수 있습니다. 


상황 별 안내

아래 캡처 이미지처럼 경로 주행 중 주변 Object을 인식하게 되면 여러 상황별 안내가 가능합니다.    


우회전 보행자 인식

우회전시 주행 차선에 사람이 감지되는 경우 알림 


CITS 연동 안내

신호등 연동에 따른 우회전시 서행 및 정지 주행안내 


정차 중 신호 변경 안내

신호등을 감지하여 녹색 신호 변경 시 주행 속도 참고하여 출발 알림


고속 주행 끼어들기 알림

주행 중 근거리에서 차량의 진입 시 알림 


앞차 급정거 알림

고속 주행 중 앞차의 거리가 빠르게 가까워질 때 알림 


YOLO Model license / size


여러 실험을 통하여 검증이 된 model을 실제 상용 서비스에 적용하기 위해선, 기능적인 측면 이외에 고려되어야 할 사항들이 존재합니다. 대표적으로 Model의 License실제 운영을 위한 Model size를 살펴보아야 합니다.


Model License

YOLO Model은 오랜 기간 동안 많은 사람들의 검토와 연구를 통하여 지속적으로 발전해 왔습니다. 여러 발전단계에서 파생된 모델들의 종류도 다양합니다. 모델들이 opensource로 운영되어 실제 모델의 구성이나 학습을 직접 수행해 볼 수 있는 환경이 Model의 발전에 큰 기여를 했다고 해도 과언이 아닙니다.


하지만 Model을 발표하는 저자에 따라 적용받는 opensource license는 여러 가지입니다. 특히나 상용 서비스의 경우 적용받는 opensource license에 따라 상용서비스에 사용하기 어려운 상황도 발생합니다. YOLO model을 이용하는 경우엔 license를 잘 확인하여 목적에 맞는 버전을 선택하고 활용해야 합니다. 


Model Size

Mobile device에서 모델을 운영하기 위해서 또 한 가지 고려해야 할 사항은 model의 size입니다. Model은 Mobile app에 포함되어 배포되거나, runtime에 network을 통하여 device에 download를 수행하는 방식으로 사용이 가능한데, 두 가지의 경우 모두 사용자에게 Network resource를 부담하게 됩니다. 또한 size가 크다는 의미는 그만큼 연산이 많다는 의미도 포함하고 있으므로 너무 큰 모델은 운영이 힘들게 됩니다.


YOLO이 경우는 default / tiny 등 동작 상황에 맞게 성능과 효율의 balance를 조정하여 배포를 하고 있고, Android / iOS Device에서는 ML을 위하여 tflite 또는 mlmodel형태로 변환을 하게 되는데, model의 변환 시 몇 가지의 압축방법 등을 제공하고 있습니다.


Model의 종류와 압축방법을 적절히 조합하여 목표하는 기능에 부합하는 model의 size를 확인하는 작업이 필요합니다. 


다른 기술들의 검토


TMAP에서는 영상처리를 통하여 추가적으로 안전운전에 도움이 될 수 있도록 여러 가지 기술들을 검토하고 실험을 진행하고 있습니다.


BEV (Birds Eye View)

BEV의 구성은 IPM (Inverse Perspective View)를 이용하여 카메라를 통해 촬영된 이미지를 3차원에서 내려다보는 이미지의 형태로 구성하는 것을 의미합니다(마치 하늘에서 내려다보는 형태의 이미지로 만드는 과정입니다.) BEV를 구성하게 되면 현재 주행 중인 ego (자동차)의 진행방향의 벡터를 평면상에 구성할 수 있고, 주변의 object (사람 등)를 BEV상에 나타내고 이 object들의 이동 vector를 계산해 낼 수 있습니다. 두 vector의 연산을 통하여 보다 충돌가능성 감지 등의 보다 풍부한 정보를 계산하여 안내할 수 있으리라는 기대를 갖고 검토를 진행하고 있습니다.


보통 IPM을 수행하기 위해선 camera의 설치 위치정보를 이용하여 calibration의 과정을 거쳐야 하는데, Mobile Device의 차량 거치방법이 사용자별로 상이하기 때문에 입력영상을 분석하여 calilbration값을 자동으로 계산하려는 노력도 계속하고 있습니다. 

이미지 출처: 아래 링크

https://drek4537l1klr.cloudfront.net/bihlmaier/v-4/Figures/CH04_F04_bihlmaier-right_hand_rule.png

https://dsportmag.com/wp-content/uploads/2017/05/ProjectMX-5-000-RollYaw-1024x768.jpg 


향후


현재 관련 기능은 TMAP iOS 버전에서 우회전 보행자 알림이라는 이름으로 실험실 기능으로 추가되어 있습니다. 본문에서 설명드린 몇 가지 기능은 추후 보완/개발되어 추가 예정입니다. 


그리고 차선 인식 기술을 좀 더 개선하게 되면, 도로에서 주행 중인 차선을 확인하고 이를 통해 주행 시 안내점에 대한 보다 정확한 길안내가 가능할 것으로 보입니다. 그리고 Object 인식도 정확해지면 보다 많은 안내와 정보를 운전자에게 제공할 것으로 보입니다.


긴 글 읽어주셔서 감사합니다. 안전한 운전을 위해 항상 정확하고 신뢰도 높은 정보를 제공하는 티맵, 많은 관심과 사랑 부탁드립니다!


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