2021년 9월 21일 화요일

NVIDIA Jetson Nano보드 기반 차량 ADAS(Advanced Driver Assistance System) 개발 사례 소개

 이 글은 NVIDIA Jetson보드 기반 ADAS(Advanced Driver Assistance System) 개발 사례를 간단히 소개한다.


머리말
Viet Anh Nguyen은 ADAS (Advanced Driver Assistance System)로 이달의 Jetson 프로젝트 상을 수상했다. NVIDIA Jetson Nano에서 실행되는 이 프로토타입은 충돌, 차선 이탈 및 과속 경고로 운전자를 돕는다. 이런 기능은 차량 구입시 우리가 ADAS로 알고 있는 것이다. 

ADAS 중 유명한 Intel Mobile Eye 또는 WebVision 시스템은 매우 뛰어난 수준까지 발전했다. 다만, 이런 시스템은 커스터마이징이 어렵고, 가격도 비싸다. 제품에 따라 몇몇 필요한 정보는 포함되지 않는다. Mobile Eye 630 시스템은  사용자 인터페이스가 부족하다. WebVision 장치는 ADAS 기능은 부분적으로만 지원된다. WebVision A69 AI에는 표지판 인식 기능이 없고 WebVision S8 제품에는 ADAS 시스템의 두 가지 중요한 기능인 충돌 경고 및 차선 이탈 경고가 없다. 이 제품은 카메라 대신 GPS와 함께 장치에 저장된 지도 데이터를 사용하여 수행된다. 이 경우 실제로 음영지역에서는 실행 가능하지 않을 수 있다. 
NVIDIA NANO 기반 ADAS 구성도

Viet Anh의 목표는 저가형 및 구형 자동차에게 이 기능을 제공하는 것이다. 그는 경제성을 고려해, Jetson Nano를 선택했다. 이 프로토타입에는 사용자가 상호 작용할 수 있는 LCD 화면과 경고 메시지를 전달하는 스피커가 있다. 

시스템 구조
핵심 AI 기능은 충돌 및 과속 경고를 위한 "객체 감지" 모듈과 차선 이탈 경고를 위한 "차선 감지"모듈로 구현된다. Berkeley의 DeepDrive Dataset을 통해 훈련된 객체 감지 모듈인 CenterNet이 사용되었다. Viet Anh은 Resnet-18 및 MobileNet 백본에서 모델을 평가했다. 이 모델은 프레임당 62ms 추론 성능을 보였으며, NVIDIA TensorRT로 최적화된 ResNet-18 백본 CenterNet 모델을 사용했다. 

객체 감지 모듈 구조도

과속 경고의 경우 물체 감지 모델 출력이 ResNet-18 네트워크에 전달되어 교통 표지판을 식별한다. '차선 감지' 모듈에서 처리된 U-Net 모델은 Mapillary Vista 데이터 세트를 사용하여 학습되었다. 

TensorRT를 사용하여 모델을 최적화 한 후 FP16(16비트 실수형) 정밀도로 384 x 384 이미지에 대해 14 FPS를 달성 할 수 있었다. 다음 데모에서 프로토 타입은 사전 녹화된 비디오와 CARLA 시뮬레이터에서 작동하는 것을 확인할 수 있다. 

이 결과로 다음과 같이 ADS에서 제공되는 전방충돌 감지 기능 등을 구현할 수 있었다.

사용된 알고리즘은 그리 복잡하지 않다. 예를 들어, 충돌감지 기술은 다음과 같이 전방 주행 시 위험 지역을 설정한 후 그 안에 객체가 있으면 감지하여 알려주는 방법을 사용했다.
충돌감지 알고리즘

오늘날 거의 자동차에는 전자 부품 간의 데이터 교환을 위한 주요 네트워크 중 하나로 CAN (Controller Area Network)통신이 장착되어 있어, 자동차 속도 또는 방향 지시등과 같은 자동차 센서를 읽는 표준 방법을 제공한다. 이 통신은 본 기술에도 통합되어 있다.

유저 인터페이스는 결과적으로 다음과 같이 구현되었다. 
개발된 ADAS 유저인터페이스

Jetson Nano의 ADAS 같은 프로토타입 솔루션을 통해 개발자는 ADAS 마켓에서 저렴한 솔루션을 구축 할 수 있다. Viet Anh은 다음 링크에 관련 문서와 코드를 깃허브에 공유하고 있다. 소스가 공개되어 있으므로, 유사한 프로젝트를 쉽게 개발할 수 있다.
  • Part 1 - Background and system design
  • Part 2 - Software design and 
  • Part 3 - Machine Learning (DNNs)
  • Source code (github)
기타 학습용 데이터셋은 다음 링크를 참고하라.

1. Object detection with CenterNet
Training code for BDD100k dataset: https://github.com/vietanhdev/centernet-bdd-data.

2. Lane line segmentation with U-Net
Training and conversion code to .uff: https://github.com/vietanhdev/unet-uff-tensorrt.

3. Traffic sign

4. Code for Jetson Nano
Code for Jetson Nano - contains all inference code for above models: https://github.com/vietanhdev/car-smart-cam

마무리
이 글은 겨우 10만원밖에 하지 않는 NVIDIA NANO 보드로 ADAS 개발 사례를 간단히 알아보았다. 딥러닝과 이런 저렴한 딥러닝 처리용 임베디드가 나오기전에는 이정도 가격과 노력으로 ADAS와 같은 전문적인 기술을 약간의 지식으로 개발한다는 것이 불가능했다. 지금은 오픈소스와 딥러닝, 그리고 NVIDIA에서 생산하는 저렴한 보드를 통해 이런 유사한 기술이 모두 구현 가능해졌다. 앞으로도 이런 기술이 적용되는 사례는 더욱 다양해 질 것이다.

레퍼런스

댓글 없음:

댓글 쓰기

2024년 하반기 스마트 건설과 생성AI 기술 동향

이 글은 2024년 하반기 스마트 건설과 생성AI 기술 동향에 대한 내용을 정리한다. 머리말 건설 분야에서도 제조업과 마찬가지로 생성 AI의 시대가 도래하고 있다. 2023년 글로벌 건설 시장 내 인공지능(AI) 규모는 9억 3,356만 달러에서 20...