Vision & AI

ℹ️
본 포트폴리오는 Computer Vision 및 자율주행 도메인 역량을 정리하기 위해 학부 연구 및 개인 프로젝트를 정리한 문서입니다. 직무 기술 포트폴리오는 (여기)를 참고해주세요.

Introduction

"시스템 안정성을 설계하는 3년 차 임베디드 개발자, 비전 인식을 더하며 성장하고 있습니다."


현재 V2X 보안 및 톨링 시스템 분야에서 실무를 수행하며 양산 수준의 C++ 소프트웨어 설계 역량을 쌓아왔습니다. 이와 동시에 자율주행의 핵심인 '인지(Perception)' 기술에 매료되어 학부 시절부터 현재까지 Visual SLAM, 객체 추적(Tracking), E2E 제어를 꾸준히 연구해 왔습니다.

본 문서는 저의 시스템 엔지니어링 역량이 비전 - AI 도메인에서 어떻게 구현되고 최적화될 수 있는지를 보여주는 프로젝트들을 담고 있습니다.

SESSION A. Perception, Tracking & Localization

"상태 추론(State Estimation) 및 객체 추적 알고리즘"


Visual SLAM + YOLOv8 + Kalman Filter 결합 주행 보조(ADAS) SW

0:00
/0:40

Kalman Filter & Ego-motion 보정 로직을 적용한 ADAS 앱

프로젝트 상세

[Project Overview]

  • 입력 영상으로부터 차량/카메라의 위치를 추정하고, 객체를 검출·추적하며, 결과를 시각화하는 C++ 기반 비전 파이프라인을 개발했습니다.
  • 이 프로젝트에서 저는 전체 파이프라인 중에서도 Kalman Filter 기반 Multi-Object Tracking 엔진 구현에 집중했으며, 단순 검출 결과 전달이 아니라 프레임 간 동일 객체의 상태를 연속적으로 추정하는 구조를 설계했습니다.

[Technical Detail]

  • 6D State Vector 설계: 객체의 중심 좌표 (cx,cy)(cx, cy)(cx,cy), 속도 (vx,vy)(vx, vy)(vx,vy), 크기 (w,h)(w, h)(w,h)를 포함한 6차원 상태 변수를 정의하고, 검출 결과는 (cx,cy,w,h)(cx, cy, w, h)(cx,cy,w,h) 형태의 측정값으로 변환해 Kalman Filter로 갱신하도록 구성했습니다. 이를 통해 일시적인 미검출 상황에서도 예측 기반으로 객체 위치와 상태를 안정적으로 유지할 수 있도록 했습니다.
  • Ego-motion Compensation: SLAM으로부터 획득한 ego pose를 활용해, 차량/카메라의 이동과 회전으로 인해 발생하는 track displacement를 보정하는 로직을 구현했습니다. 이를 통해 단순 이미지 좌표 추적보다 주행 상황에서 더 안정적인 상태 예측이 가능하도록 설계했습니다.
  • Lifecycle & Association: Hungarian 알고리즘 대신 Greedy IoU 기반 매칭을 적용해 연산 복잡도를 줄였고, 트랙을 NEW / TRACKED / LOST / REMOVED 상태로 관리해 임베디드 환경에서의 경량성과 추적 안정성을 함께 확보했습니다.

[Implementation Insight]

  • Kalman Filter 기반 추적 안정화: 검출기에서 객체를 일시적으로 놓치더라도 예측 단계만으로 일정 프레임 동안 객체 ID와 궤적을 유지할 수 있도록 구현했습니다. README 기준으로는 kMaxLostCount = 10 파라미터를 통해 최대 10프레임 수준까지 LOST 상태를 유지하도록 설계되어 있습니다.
  • C++ 중심 구현: C++ 기반 파이프라인 안에서 tracker를 독립 모듈로 구성해, 검출·위치추정·시각화와 분리된 형태로 유지보수와 확장이 가능하도록 설계했습니다.
  • 주요 기술: C++, Kalman Filter, Ego-motion Compensation, YOLOv8, Stella VSLAM / ORB-SLAM3 인터페이스, Multi-Object Tracking

SESSION B. Integrated Autonomous Systems

"인지부터 제어까지, 자율주행 파이프라인의 통합 설계"


Visual SLAM + End-to-End Driving 자율주행 SW

실외 560m 구간 자율주행 영상

  • 분류: 졸업 연구
  • 기간: 2022.03 - 2023.03 (12개월)
  • 주요 역할: 카메라 기반 V-SLAM 시스템 설계, E2E 학습 데이터 구축 및 TensorRT 임베디드 최적화
  • 핵심 성과:
    • 실외 560m 구간 주행 성공률 98% 달성
    • 교내 캡스톤 경진대회 최우수상 수상

프로젝트 상세

프로젝트 문서: https://dev.gibeom.xyz/e2e-vslam/

[Project Overview]

카메라 센서만을 활용하여 주변 환경 인식, 위치 추정, 주행 판단을 동시에 수행하는 통합 자율주행 시스템을 연구했습니다. 전통적인 기하학적 비전(Visual SLAM)과 딥러닝 기반 제어(End-to-End Driving)를 결합하여 시스템의 안정성을 극대화하는 것을 목표로 했습니다.

[Technical Highlights]

  • Visual SLAM 기반 위치 추정: 다중 카메라 입력을 처리하는 V-SLAM 시스템을 설계하여 실시간으로 차량의 고정밀 위치(Ego-localization)를 파악했습니다.
  • End-to-End Control: 카메라 영상으로부터 조향각과 속도를 직접 출력하는 신경망 모델을 구축하여 인지-판단-제어 파이프라인을 단순화했습니다.
  • Embedded Optimization: 학습된 모델을 TensorRT로 최적화하여 연산 자원이 제한된 임베디드 보드에서도 실시간성(Real-time)을 확보하며 동작하도록 구현했습니다.

[Challenges & Solutions]

  • Issue: 학습 데이터 부족 및 모델의 일반화 성능 한계
    • 실제 주행 환경에서의 데이터 수집 제약으로 인해 특정 경로에서 이탈하거나 오판단하는 'Overfitting' 문제가 발생했습니다.
  • Solution: Recovery Sequence 데이터 확보 및 전처리
    • 단순 정상 주행 데이터뿐만 아니라, 의도적으로 차선을 이탈한 후 다시 중심으로 복귀하는 '회복 시퀀스(Recovery Sequence)' 데이터를 추가로 수집하여 학습 데이터의 다양성을 확보했습니다.
  • Result: 주행 안정성 대폭 개선
    • 학습 데이터 확장을 통해 초기 80% 수준이었던 주행 성공률을 98%까지 끌어올렸으며, 실외 약 560m 구간의 완전 무인 주행에 성공했습니다.


PilotNet 기반 카메라 자율주차 소프트웨어 개발

실제 주차장 환경에서 데이터 수집 및 학습
  • 분류: 산학 협력 연구 (W/ Vadas)
  • 기간: 2021.03 - 2021.12 (10개월)
  • 주요 역할: 데이터셋 구축, 모델 아키텍처 설계 및 하이퍼파라미터 최적화, 시뮬레이션 검증
  • 핵심 성과:
    • 테스트 데이터 셋에서 실제 조향값 대비 예측 오차 2% 미만 달성
    • 시뮬레이션 기반 주차 시나리오 검증 성공

프로젝트 상세

프로젝트 문서: https://dev.gibeom.xyz/autonomous-parking/

[Project Overview]

NVIDIA의 PilotNet 아키텍처를 기반으로 단일 카메라 입력을 통해 빈 주차 공간을 탐지하고 조향 제어값을 출력하는 End-to-End 자율주차 모델을 연구했습니다. 제한된 데이터 환경 내에서 모델의 일반화 성능을 극대화하는 데 집중하였습니다.

[Technical Highlights]

  • End-to-End Steering Prediction: 신경망이 이미지의 특징을 직접 추출하여 조향값(Steering Angle)을 도출하는 PilotNet 기반의 제어 파이프라인을 구축했습니다.
  • Precision Tuning: 하이퍼파라미터 최적화를 통해 실제 운전자의 조향 데이터와 모델의 예측 데이터 간의 오차율을 2% 미만으로 억제하며 높은 예측 정밀도를 확보했습니다.
  • Simulation Validation: 학습된 모델을 가상 주행 환경에 이식하여 다양한 주차 시나리오에서의 안정성을 반복 검증했습니다.

[Challenges & Solutions]

  • Issue: 데이터 불균형 및 오버피팅으로 인한 특정 상황 성능 저하
    • 수집된 데이터가 특정 주행 패턴에 편중되어 있어, 학습하지 않은 새로운 환경이나 반대 방향 주차 시 모델의 성능이 급격히 떨어지는 문제가 발생했습니다.
  • Solution: 데이터 증강(Augmentation)을 통한 일반화 성능 강화
    • 기존 학습 영상 데이터를 수평 반전(Horizontal Flipping)함과 동시에 대응되는 조향값(Steering Value)에 -1을 곱하여 반전시키는 기법을 도입했습니다.
    • 효과: 단일 데이터셋만으로도 2배의 학습 데이터 확보 효과를 거두었으며, 좌/우측 주행 패턴에 대한 균형 있는 학습을 통해 모델의 일반화 성능을 대폭 향상시켰습니다.

[Results]

  • 120 Epoch 학습을 통해 안정적인 손실 함수 수렴을 확인했습니다.
  • 테스트 데이터셋 검증 결과, 복잡한 주차 경로에서도 일관되게 낮은 오차율을 유지하며 실제 자율주차 시스템으로의 적용 가능성을 입증했습니다.

SESSION C. Embedded Vision & Application

"유연한 아키텍처 설계를 통한 환경 맞춤형 임베디드 비전 시스템"


YOLOv8 기반 지능형 보안 IP 카메라 시스템

0:00
/0:23

실시간 사람 탐지 및 저장 테스트 (샘플 비디오)

  • 분류: 자체 연구 (Personal Research)
  • 주요 기술: Raspberry Pi, OpenCV, YOLOv8, RTSP, C++
  • 핵심 키워드: Hexagonal Architecture, Dependency Injection, Runtime Configuration, Event Recording

프로젝트 상세

[Technical Detail: Software Architecture]

  • Hexagonal Architecture 적용: 탐지(Detection) 로직을 비즈니스 레이어에서 분리하여 하드웨어 사양에 따라 OpenCV(경량) 또는 YOLOv8(고정밀) 백엔드를 자유롭게 선택할 수 있도록 구현했습니다.
  • DI 기반 런타임 구성: Dependency Injection을 통해 컴파일 타임이 아닌 런타임 컨피그에 따라 장치의 역할을 유연하게 결정하도록 설계했습니다.
    • Standalone Mode: 단일 장치 내에서 영상 획득부터 탐지까지 수행
    • RTSP Server: 클라이언트로부터 스트리밍 영상을 수신하여 원격 탐지 수행
  • 유연한 백엔드 설계: 저사양 환경에서는 OpenCV의 알고리즘 기반 탐지 방식을, 고성능이 필요한 경우 YOLOv8을 플러그인처럼 교체 가능하게 설계하여 시스템의 확장성을 확보했습니다.

[Implementation & Features]

  • 실시간 객체 탐지 및 알림: 실제 현관 앞 택배 보관함 환경에 설치하여 '사람'이 탐지될 경우 카카오톡 API를 통해 사용자에게 실시간 푸시 알림을 전송하도록 구현했습니다.
  • 이벤트 기반 영상 저장: 탐지 시점 전후 약 5초간의 영상을 버퍼링하여 자동으로 저장하는 Pre/Post-event Recording 로직을 구현하여 중요한 순간을 놓치지 않도록 설계했습니다.
  • 장기 구동 안정성 확보: 실제 현장에 설치되는 기기의 특성을 고려하여 24시간 이상의 Aging 테스트를 수행했습니다.
  • 리소스 관리: 장기간 연속 구동 시에도 메모리 누수(Memory Leak)나 CPU 점유율 급증 등의 성능 저하 현상 없이 안정적으로 동작함을 확인하였습니다.

단순한 기능 구현을 넘어, 변경에 유연하고 테스트가 용이한 구조를 만드는 데 집중했습니다. 헥사고날 아키텍처를 통해 비전 알고리즘의 발전 속도에 맞춰 언제든 백엔드를 교체할 수 있는 구조를 구축한 것이 본 프로젝트의 핵심입니다.