소속: Naver Connect · Boostcamp AI Tech 4기 역할: ML Engineer (Core Contributor) 기간: 2022.12 – 2023.02 산업 도메인: 자율주행 / ADAS (Advanced Driver Assistance System)


Situation

초보 운전자들이 겪는 가장 큰 어려움인 ‘좁은 시야’와 ‘차간 거리 판단 미숙’을 해결하기 위한 주행 보조 시스템 기획.

  • 비즈니스 상황: 설문 결과 초보 운전자의 60%가 급정거 및 끼어들기 대응에 어려움을 느끼며, 85%가 안전 시스템 이용 의향을 보임.
  • 제약 조건: 고가의 Lidar 센서 대신 보급형 블랙박스 환경에서도 동작 가능한 Monocular(단안) 카메라 기반 시스템이 요구됨. 실시간 추론 성능(0.2s 이내) 확보가 필수적임.

Task

  • 팀 구성: ML Engineer 5명 (본인은 데이터 분석, 좌표계 변환, 인퍼런스 엔진 및 웹 데모 개발 담당)
  • 담당 영역:
    • 자율주행 데이터 분석 및 KITTI 포맷으로의 변환 (Lidar to Camera)
    • 3D-2D Projection 및 Bird’s Eye View(BEV) 시각화 모듈 개발
    • ONNX, TensorRT를 지원하는 추상화된 Inference Engine 개발
    • Streamlit & FastAPI 기반의 실시간 비디오 인퍼런스 웹 데모 구축
  • 목표: 단안 카메라 이미지로부터 주변 차량의 거리와 방향을 예측하고, 룰 기반 위험도를 산출하여 경고 제공.

Action

기술 스택 & 시스템 구성

분류기술
LanguagePython
ML FrameworkPyTorch, MMDetection3D
InferenceONNX, TensorRT
Web / ServingFastAPI, Streamlit
DeploymentDocker, Jetson Xavier (Edge)
DatasetKITTI, AI-Hub 자율주행 데이터

핵심 구현 사례

1. 3D-2D 좌표계 변환 및 시각화 엔진 개발

문제: 3D Object Detection 결과는 3차원 공간(Camera Coordinate) 좌표로 나오기 때문에, 이를 이미지에 투영하거나 탑뷰(BEV)로 시각화하지 않으면 모델의 성능을 직관적으로 파악하기 어려웠음.

구현:

  • 로보틱스의 Forward Kinematics와 영상처리의 Homography 개념을 적용하여 Lidar to Camera, Camera to Image 좌표계 변환 모듈을 구현함.
  • 3D BBox를 2D 이미지 평면에 투영하는 기능과 차량의 위치를 상공에서 내려다보는 듯한 Bird’s Eye View 시각화를 구현하여 팀 내 실험 효율을 극대화함.

2. 추상화된 인퍼런스 엔진 및 Model Factory 설계

문제: 다양한 환경(MMDet3D, ONNX, TensorRT)에서 모델을 테스트해야 했으나, 각 라이브러리마다 사용 방식이 달라 코드 유지보수가 어려웠음.

구현:

  • Model Factory 디자인 패턴을 도입하여 추론 라이브러리에 상관없이 동일한 인터페이스로 모델을 로드하고 사용할 수 있도록 추상화함.
  • 이를 통해 개발 환경(A100)과 타겟 환경(Jetson Xavier) 간의 코드 일관성을 유지하고 교체 실험 비용을 낮춤.

3. 실시간 비디오 인퍼런스 웹 데모 구축

문제: Streamlit은 기본적으로 실시간 비디오 스트리밍 인퍼런스에 부적합한 구조(상태 변경 시 전체 재실행)를 가지고 있었음.

구현:

  • FastAPI를 백엔드로 사용하여 모델 추론 로직을 분리하고, Streamlit에서는 결과 이미지를 갱신하는 비동기 구조를 설계함.
  • 영상 프레임별로 3D Detection → 좌표 변환 → 룰 기반 위험도 판정 → 렌더링 파이프라인을 구축하여 실시간성에 근접한 데모를 구현함.

Result

기술 성과

  • 오픈소스 기여: MMdetection3D 라이브러리의 local_visualizer.py 버그를 수정하여 PR Merge 달성 (Link).
  • 추론 최적화: SMOKE 모델 기준, A100 대비 리소스가 부족한 Jetson Xavier에서도 실시간 구동 가능성 확인 (속도 차이 대비 경량화 잠재력 검증).
  • 데이터 정제: 36만 장의 AI-Hub 데이터를 KITTI 포맷으로 정밀 변환하여 모델 성능(Finetuning) 향상 기여.

비즈니스 임팩트

  • Metric 정의: 거리와 각도를 결합한 DDS(Danger Detection Score)를 정의하여 기술의 실용적 활용 가치 증명.
  • Edge Device 검증: 실제 블랙박스 환경(Jetson)에서의 동작을 시연함으로써 서비스 실현 가능성 입증.

회고

잘한 점

  • 좌표계 변환 등 수치해석적 접근이 필요한 부분에서 탄탄한 기초 지식을 바탕으로 정확한 구현을 해냄.
  • 추상화된 엔진 설계를 통해 팀원들이 각자의 작업물을 병합하고 테스트하는 과정을 용이하게 만듦.
  • 단순 모델 학습에 그치지 않고 오픈소스 버그 수정까지 이어진 기술적 깊이.

아쉬운 점 / 다시 한다면

  • Monocular 모델 자체의 거리 추정 오차를 줄이기 위해 센서 퓨전이나 뎁스 추정 모델 결합을 더 깊게 고민해보고 싶음.
  • MLOps 파이프라인을 구축하여 데이터 변환부터 학습까지 자동화하지 못한 점이 아쉬움.

배운 점

  • 3D Vision 분야의 높은 진입장벽을 넘기 위해서는 시각화 도구가 무엇보다 중요하다는 것을 깨달음.
  • 객체지향적 설계를 통해 복잡한 시스템의 R&R을 명확히 나누는 법을 실무적으로 익힘.

참고 자료