고속도로 CCTV 영상을 활용하여 차량(자동차, 트럭, 버스)을 정확히 인식하는 YOLOv8 기반 객체 탐지 모델을 개발합니다.
- YOLOv8 모델 사용: 객체 탐지 분야의 최신 기술 활용.
- 맞춤형 데이터셋: 실제 고속도로 데이터를 기반으로 전처리 및 분석 진행.
- 실제 적용 검토: 야간 및 다양한 환경에서의 테스트를 통해 실제 활용 가능성 확인.
- AI Hub의 "고속도로 CCTV 교통 영상" 데이터셋.
- 학습 데이터: CH01 ~ CH04 지점의 차량 데이터.
- 추가 데이터: 특정 지점(CH08, CH10)의 버스와 트럭 데이터를 보강하여 클래스 불균형 완화.
- XML 형식의 바운딩 박스를 YOLO 텍스트 형식으로 변환.
- 클래스 필터링을 통해 'bus'와 'truck' 데이터를 추가적으로 강화.
- 모델 버전: YOLOv8n, YOLOv8m, YOLOv8l.
- 학습 파라미터:
- Epoch: 25~100
- 이미지 크기: 800~1024
- 배치 크기: 8~16
모델 | 추가 데이터 | Epoch | 이미지 크기 | mAP50-95(B) | 특이 사항 |
---|---|---|---|---|---|
YOLOv8n | 없음 | 25 | 800 | 0.78014 | 가장 빠른 예측 시간. |
YOLOv8m | 없음 | 75 | 800 | 0.82405 | 성능 개선. |
YOLOv8m | 추가 데이터 | 100 | 800 | 0.8268 | 버스/트럭 검출 성능 향상. |
YOLOv8l | 추가 데이터 | 100 | 1024 | 0.83603 | 야간 테스트 성능 우수. |
- XML to YOLO 변환: XML 형식의 바운딩 박스를 YOLO 텍스트 형식으로 변환.
- EDA 도구: 차량 클래스별 데이터 분포 및 시간대/날씨별 데이터 분석.
- 클래스 불균형: 'car' 클래스 비중이 높으며, 'bus'와 'truck' 비중이 낮음.
- 시간 및 날씨 분포: 다양한 시간대와 날씨 조건에서의 데이터 분포 확인.
- YOLOv8 기반으로 mAP50-95 0.83603 달성.
- 추가 데이터 활용으로 특정 클래스(버스, 트럭) 검출 성능 향상.
- 다양한 모델 크기 비교를 통해 성능 최적화.
- 프로젝트의 최종 결과는 함께 진행했던 여러 팀들 중에서 1위를 기록하며 가장 높은 성능과 우수한 평가를 받았습니다.
- 클래스 불균형으로 인한 초기 성능 저하.
- 야간 및 저화질 영상에서의 성능 저하.
- 모델 크기 증가에 따른 검출 속도 감소.
- 실시간 교통 모니터링: 고속도로의 차량 흐름 분석 및 교통 관리.
- 다양한 환경 확장: 도심, 국도 등 다른 환경에서의 모델 학습 및 테스트.
- 경량화 모델 개발: 실시간 검출 성능을 최적화하기 위해 YOLOv8n과 같은 경량 모델 활용.
pip install -r requirements.txt
- 데이터셋을 다운로드 후
/datasets
디렉토리에 저장.
yolo task=detect mode=train model=yolov8m.pt data=data.yaml epochs=75 imgsz=800 batch=16
yolo task=detect mode=val model=best.pt data=data.yaml
yolo task=detect mode=predict model=best.pt source=your_test_images/ save=True
shin_yolo_repo/
├── datasets/
├── models/
├── scripts/
│ ├── preprocess.py
│ ├── train.py
│ ├── evaluate.py
├── results/
├── README.md