Back to Projects
Computer Vision2022.10 ~ 2022.12

Vehicle Features

OpenCV와 YOLO를 활용한 차량 주행 보조 기능 구현 프로젝트입니다. 차선 이탈 감지, 전방 차량 출발 감지, 보행자 및 차량 근접 감지 기능을 제공합니다.

차량 주행 영상에서 차선 이탈, 전방 차량 출발, 근접 객체를 감지하는 ADAS 기능을 구현했습니다.

Source
Vehicle Features preview
DomainComputer Vision
Timeline2022.10 ~ 2022.12
Core Stack
OpenCVYOLOC++

Problem

라이다·레이더 같은 거리 센서 없이 단안 카메라 주행 영상만으로 차선 이탈, 앞차 출발, 보행자 접근을 실시간 판별해야 했습니다. 저비용 센서 구성에서 어디까지 주행 보조 경고가 가능한지가 검증 대상이었습니다.

Contribution

OpenCV와 YOLO를 활용한 객체 검출, 차선 검출, 실시간 경고 로직 구현을 담당했습니다.

  1. 컴퓨터 비전 엔지니어

    OpenCV와 YOLO를 활용한 객체 검출 및 추적 알고리즘 구현, 실시간 영상 처리 파이프라인 구축

Approach

  1. 차선 이탈 감지

    Hough Transform을 이용한 차선 검출, 좌우 차선 각도 분석 (30-60도, 120-150도), 차선 이탈 지속성 판단 (5프레임 이상)

  2. 전방 차량 출발 감지

    YOLO를 이용한 차량 객체 검출, 차량 크기 변화 모니터링, 정지 상태에서의 차량 이동 감지

  3. 보행자/차량 근접 감지

    YOLO를 이용한 객체 검출, 객체 크기 기반 근접도 판단, 차량: 너비 130px 또는 높이 110px 이상, 보행자: 높이 120px 이상

  4. 차선 이탈 감지 및 경고

    Hough Transform을 이용한 차선 검출, 좌우 차선 각도 분석, 차선 이탈 지속성 판단을 통한 안전한 주행 지원

  5. 전방 차량 출발 감지 및 알림

    YOLO를 이용한 차량 객체 검출, 차량 크기 변화 모니터링, 정지 상태에서의 차량 이동 감지로 교통 흐름 개선

  6. 보행자 및 차량 근접 감지 및 경고

    YOLO를 이용한 객체 검출, 객체 크기 기반 근접도 판단, 차량과 보행자에 대한 차별화된 경고 제공

Results

차선 이탈 감지

차선 이탈 시 'Lane departure!' 경고 메시지 표시

차선 이탈 감지 1

전방 차량 출발 감지

전방 차량 출발 시 'Start Moving!' 알림 메시지 표시

전방 차량 출발 감지 1

보행자/차량 근접 감지

보행자/차량 근접 시 'Human/Car detected nearby!' 경고 메시지 표시

보행자/차량 근접 감지 1보행자/차량 근접 감지 2

Architecture

Computer Vision

  • OpenCV
  • YOLO

Programming Language

  • C++

프로젝트 구조

모듈화된 구조로 각 기능의 독립적인 개발과 테스트가 가능


VehicleFeatures/
├── main.cpp          # 메인 소스 코드
├── YOLO/             # YOLO 모델 파일
│   ├── yolov4-tiny.cfg
│   ├── yolov4-tiny.weights
│   └── coco.names
└── src/              # 테스트 사진 및 기타 리소스
    ├── lanedeparture.png
    ├── startmoving.png
    ├── humandetect.png
    └── cardetect.png

Setup

설치 및 실행 방법

Requirements

  • OpenCV 4.x
  • YOLO v4-tiny
  • C++ 컴파일러

Steps

sudo apt update && sudo apt install -y libopencv-dev
wget https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov4-tiny.cfg -O YOLO/yolov4-tiny.cfg
wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights -O YOLO/yolov4-tiny.weights
g++ main.cpp -o main `pkg-config --cflags --libs opencv4`
./main

Notes

  • OpenCV 4.x가 필요합니다
  • YOLO v4-tiny 모델 파일이 필요합니다