본 프로젝트는 CCTV를 통해 차량 추돌 사고 및 화재를 판단하여 서버로 정보를 전송하는 Python 기반의 사고 감지 시스템입니다.
차량 객체 감지 및 사고 판단은 YOLOv8n 모델을 활용하며, 화재 감지는 별도의 추가 로직을 포함합니다.
📁 project-root/
├── 📁 data/ # 데이터 관련 파일 저장 디렉터리
├── 📁 models/ # YOLOv8n 모델 파일 저장 디렉터리
├── 📁 utils/ # 유틸리티 함수 모음
├── .gitignore # Git 관리에서 제외할 파일 설정
├── accidentEnum.py # 사고 분류 Enum 정의
├── accidentHandler.py # 사고 데이터 전송 로직
├── crashDetection.py # 차량 추돌 사고 감지 로직
├── fireDetection.py # 화재 감지 로직
├── getFrame.py # CCTV 영상 프레임 처리
├── main.py # 시스템 실행 및 주요 로직
├── export.py # YOLOv8n 모델 형식 변환
├── yolov8n.pt # YOLOv8n 모델
├── requirements.txt # 필요한 라이브러리 목록
└── README.md # 프로젝트 설명 파일
- 'main.py'를 통해 특정 위경도에 대한 CCTV 정보를 요청합니다.
- 국토교통부 개인 API Key를 사용하여 CCTV 데이터를 수집합니다.
- YOLOv8n 모델을 사용하여 CCTV 비디오에서 차량 객체를 감지합니다.
- 'crashDetection.py'를 통해 차량의 좌표 추출을 수행합니다.
- 특정 차량 객체가 일정 프레임 이상 정지 상태라면 추돌 사고로 판단합니다.
- 'fireDetection.py'를 통해 화재 감지 작업을 수행합니다.
- 화재 전용 YOLOv8n 모델을 사용하며, 신뢰도 기반 2차 판단 로직이 포함되어 있습니다.
- 차량 헤드라이트를 화재로 오인하는 문제를 방지하기 위해
- 화재 좌표와 차량 객체 간의 IoU 계산을 수행합니다.
- 차량 내부에 위치한 화재 좌표는 화재 사고 정보에서 제거합니다.
- 추돌 사고 및 화재가 판단되면 해당 사고 정보를 서버로 전송합니다.
pip install -r requirements.txt- 'main.py' 파일 내부에 본인의 CCTV API Key를 변경합니다.
python main.py