소속: 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
기술 스택 & 시스템 구성
| 분류 | 기술 |
|---|---|
| Language | Python |
| ML Framework | PyTorch, MMDetection3D |
| Inference | ONNX, TensorRT |
| Web / Serving | FastAPI, Streamlit |
| Deployment | Docker, Jetson Xavier (Edge) |
| Dataset | KITTI, 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을 명확히 나누는 법을 실무적으로 익힘.