Skip to content

이 저장소는 AI와 YOLOv8, TSN 등을 활용해 교통사고 영상을 분석, 사전 정의된 434가지 사고 상황 중 유사한 상황을 예측하여 과실 비율을 측정하는 프로그램입니다.

Notifications You must be signed in to change notification settings

grayson1999/AccidentFaultAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI-based Traffic Accident Negligence Measurement Program

Cosine Similarity Accuracy Top-5 Accuracy Status Python Django FastAPI PyTorch mmaction YOLOv8 MySQL Docker

AI-based Traffic Accident Negligence Measurement Program

주어진 비디오를 입력으로 받아 객체 감지 및 분석을 통해 사전에 정의된 434가지 상황 데이터 중 가장 유사한 상황을 예측하여 과실 비율을 측정하는 프로그램입니다.


프로젝트 소개

이 프로젝트는 교통사고 영상을 입력 받아 사전에 정의된 434가지 사고 상황 중 가장 유사한 상황을 예측하고, 과실 비율을 측정하는 AI 기반 분석 프로그램입니다. 사용자는 비디오를 업로드하면 객체 감지 및 상황 인식을 통해 교통사고 과실 분석 결과를 받아볼 수 있습니다.

이 프로그램은 YOLOv8 객체 탐지와 Temporal Segment Networks(TSN)를 사용해 실시간으로 교통사고 데이터를 분석하여 높은 정확도의 사고 상황 예측을 가능하게 합니다. YOLOv8는 고속 객체 탐지에 최적화되어 사고 영상에서 표지판, 횡단보도 등을 빠르게 감지하는 데 적합하며, TSN은 교통사고와 같은 연속적인 이벤트를 시간에 따라 분석하는 데 강력한 성능을 발휘합니다. 이러한 기술의 조합을 통해 상황 인식 및 과실 비율 예측의 정확도를 높일 수 있었습니다.

프로젝트 진행 중 직면했던 주요 문제는 다양한 사고 상황에서 객체 인식의 일관성을 유지하는 것시간에 따른 사고 맥락을 정확하게 해석하는 것이었습니다.

TSN (Temporal Segment Networks) 학습 가이드

graph LR
nID1[video];
nID2[YOLOv8\ndetection];
nID3[Temporal Segment Networks\nrecognizor];
nID4[text\nnegligence rate];
nID1--mp4-->nID2--dict-->nID3--set-->nID4
Loading

목차

  1. 프로젝트 소개
  2. 주요 기술 스택
  3. 목차
  4. 요구 사항
  5. 데이터 설명
  6. 설치 및 실행
  7. API 주소
  8. 주요 기능
  9. 아키텍처 (디렉토리 구조 등)
  10. 모델 정확도
  11. 테스트
  12. Version Control
  13. 참고자료

요구 사항

  • Docker 및 Python
  • NVIDIA 그래픽카드 (VRAM 6GB 이상)
  • 필요 패키지 목록은 requirements.txt에 명시

데이터 설명

설치 및 실행

환경설정

  • docker 빌드
    # 버전 수정
    ARG PYTORCH="1.6.0"
    ARG CUDA="10.1"
    ARG CUDNN="7"
    # build an image with PyTorch 1.6.0, CUDA 10.1, CUDNN 7.
    docker build -f ./docker/Dockerfile --rm -t accidentfaultai .
    
    # docker run --gpus all --shm-size=8g -it accidentfaultai
    docker run --gpus all --shm-size=8g -it -v G:/:/AccidentFaultAI/datasets/data accidentfaultai
    
    #additional comments
    pip install mmcv==2.1.0
    pip install -r requirements/build.txt
    python setup.py develop
    pip install pandas
    ##for yolo
    pip install --upgrade pip
    pip install numpy --upgrade
    pip install ultralytics
    pip install opencv-contrib-python==4.5.5.62
    ##for fast api
    pip install fastapi
    pip install "uvicorn[standard]"
    pip install python-multipart
    pip install jinja2

Single_TSN_model

  • 경로 수정
    ## ./recognizer/single_tsn_recognizer.py
    config = '/AccidentFaultAI/model/TSN/best_model_0527/tsn_imagenet-pretrained-r50_8xb32-1x1x3-100e_kinetics400-rgb.py'
    checkpoint = '/AccidentFaultAI/model/TSN/best_model_0527/best_model_0527.pth'
    video = '/AccidentFaultAI/recognizer/demo_video/cc_5.mp4'
  • run
    python ./recognizer/single_tsn_recognizer.py

Yolo_TSN_model

  • 경로 수정
    ## ./recognizer/yolo_tsn_recognizer.py
    config = '/AccidentFaultAI/model/TSN/best_model_0527/tsn_imagenet-pretrained-r50_8xb32-1x1x3-100e_kinetics400-rgb.py'
    checkpoint = '/AccidentFaultAI/model/TSN/best_model_0527/best_model_0527.pth'
    video = '/AccidentFaultAI/recognizer/demo_video/cc_5.mp4'
  • run
    python ./recognizer/yolo_tsn_recognizer.py

FastAPI

  • run
    python ./fastapi/videoRecognizerAPI.py

API 주소

  • API 엔드포인트:

    • localhost:8000/: 메인 페이지로, 간단한 비디오 업로드 기능 구현
    • localhost:8000/predict: 비디오 입력에 대한 과실 예측 결과를 반환하는 엔드포인트
    curl -X POST "<http://127.0.0.1:8000/predict>" -F "video=@C:/Users/Downloads/demo.mp4"
    
    • 응답 형식: JSON

주요 기능

  • 객체 탐지: YOLOv8 모델을 사용하여 교통사고 영상에서 차량, 표지판, 횡단보도 등 주요 객체를 빠르게 탐지하고 분류합니다.
  • 상황 인식: TSN(Temporal Segment Networks)을 사용하여 연속적인 비디오 프레임의 맥락을 이해하고, 사전에 정의된 435가지 사고 상황 중 가장 유사한 상황을 예측합니다.
  • 과실 비율 측정: 예측된 사고 상황을 바탕으로 과실 비율을 자동으로 계산하여 사용자에게 제공합니다.
  • API를 통한 결과 제공: FastAPI를 통해 RESTful API 형태로 분석 결과를 제공하며, 비디오를 업로드하고 과실 비율 예측 결과를 JSON 형태로 받을 수 있습니다.
  • 데이터 시각화 및 성능 평가: 주요 분석 결과에 대한 시각 자료 및 성능 지표를 제공하여, 모델의 정확도와 예측 신뢰도를 쉽게 확인할 수 있습니다.

아키텍처 (디렉토리 구조 등)

  • recognizer/: TSN 및 YOLO 기반 인식 모듈
  • model/: 학습된 모델 파일 및 구성
  • docker/: Docker 설정 파일

모델 정확도

모듈 모델 설명 top_1 정확도 top_5 정확도 rate 정확도 ±10% error rate 정확도 평균 코사인 유사도
single_tsn_model TSN(best_model_0522) 20.6 · 29.9 · ·
single_tsn_model TSN(best_model_0527) 23.0 46.8 32.0 · ·
yolo_tsn_model TSN(best_model_0527)+yolov8n 22.1 47.2 31.8 · ·
single_tsn_model TSN(best_model_0529) 24.67 48.90 33.50 46.83 81.54
yolo_tsn_model TSN(best_model_0529)+yolov8n 23.50 49.48 33.43 47.3 81.58
single_tsn_model TSN(best_model_0531) 21.50 45.36 30.63 44.92 ·

테스트

  • 모델 성능 평가

    모듈 모델 설명 top_1 정확도 top_5 정확도 rate 정확도 ±10% error rate 정확도 평균 코사인 유사도
    single_tsn_model TSN(best_model_0522) 20.6 · 29.9 · ·
    single_tsn_model TSN(best_model_0527) 23.0 46.8 32.0 · ·
    yolo_tsn_model TSN(best_model_0527)+yolov8n 22.1 47.2 31.8 · ·
    single_tsn_model TSN(best_model_0529) 24.67 48.90 33.50 46.83 81.54
    yolo_tsn_model TSN(best_model_0529)+yolov8n 23.50 49.48 33.43 47.3 81.58
    single_tsn_model TSN(best_model_0531) 21.50 45.36 30.63 44.92 ·
  • 테스트 코드 실행

# single_tsn_tester 실행 및 로그 파일 생성
python ./tester/single_tsn_tester.py > single_tsn_tester_log.txt

# yolo_tsn_tester 실행 및 로그 파일 생성
python ./tester/yolo_tsn_tester.py > yolo_tsn_log.txt

Version Control

버전 날짜 변경 내용
0.1 24.05.22 초기 repository 설정 및 초기 video-swin-transformer 버전 업로드
0.2 24.05.22 main, video-swin-transformer의 readme.md 작성
0.3 24.05.22 사고 유형을 통해 과실 비율 등 검색 모듈 추가(accidentSerch)
0.3.1 24.05.24 main docker file 및 model 업로드
0.3.2 24.05.24 main docker file 수정, single_tsn_teater 제작, main readme 환경 설정 섹션 추가
0.3.3 24.05.25 video-swin-transformer를 main 폴더로 정리
0.3.4 24.05.27 video-swin-transformer를 TSNAccidentAnalysis으로 분리, docker file 수정
0.4 24.05.27 docker 환경 구축, single_tsn_model 테스트
0.4.1 24.05.27 top_5 acc 추가, 모델(best_model_0527) 추가
0.5 24.05.27 recognizer 제작
0.5.1 24.05.27 incident_Type 컬럼 명 영어로 변경 및 모듈 대응
0.5.2 24.05.27 yolo readme 추가
0.5.3 24.05.28 yolo_tsn_model 테스트, detection filter 제작
0.6 24.05.28 yolo_tsn_recognizer 제작 및 class화
0.6.1 24.05.28 single_tsn_recognizer class화 및 패키지화
0.7 24.05.28 fast api로 api 서버 제작
0.7.1 24.05.30 best_model_0529 테스트, ±10% error rate 정확도 테스터 제작
0.7.2 24.05.30 TSN(best_model_0529)+yolov8n 정확도 테스트
0.7.3 24.06.01 TSN(best_model_0531) 정확도 테스트
0.8.0 24.06.02 코사인 유사도 test 모듈 제작

참고자료

Object Detection 관련 자료

About

이 저장소는 AI와 YOLOv8, TSN 등을 활용해 교통사고 영상을 분석, 사전 정의된 434가지 사고 상황 중 유사한 상황을 예측하여 과실 비율을 측정하는 프로그램입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published