Skip to content

pxibvaw/OSS_9

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FireRiskMap : 화재 위험 통합 관리 시스템

도시 내 화재 위험요소를 수집·탐지하고, 이를 기반으로 시각화 및 통계 제공까지 가능한 스마트 통합 솔루션

목차

프로젝트 소개

FireRiskMap은 서울시 행정구역 단위의 화재 위험요소를 통합적으로 수집, 분석, 시각화하여 실시간 화재 위험지수를 제공하는 통합 관리 시스템이다. 기존 서울시 지역안전지수는 과거 행정 통계에만 의존해 실시간 위험 요소를 반영하지 못하는 한계가 있었고, 사회적 약자에 대한 고려도 부족했다. 이에 본 시스템은 YOLO 기반 객체 탐지, 기상 정보, 재난약자 등 취약 지표를 종합해 보다 정확하고 공정한 화재 대응 판단 근거를 제공하도록 설계되었다. 본 시스템은 객체 탐지 기술, 기상 정보 처리, 행정 통계 기반 분석을 결합하여, 각 지역별 화재 대응 필요도를 정량화하고 시각적으로 표현하는 것을 목표로 개발되었다.

주요 구성은 다음과 같다.

  • CCTV 객체 탐지 기반 위험요소 수집 :쓰레기, 담배꽁초, 전선, 연기 등 인화성 위험요소를 YOLOv10s 기반 딥러닝 모델로 탐지하고, 탐지 비율을 실시간으로 반영하여 위험지수를 계산한다.
  • 정적 통계 및 기상 정보 기반 지표 계산 :행정 통계 데이터를 바탕으로 위해지표·취약지표·경감지표를 구축하고, 기상청 API로 수집한 실시간 기상 정보를 이용해 계절별 산불위험지수를 계산한다.
  • 사회적 약자 정보 반영 : 취약지표 구성에는 재난약자 수 등 사회적 약자와 관련된 위험 요소가 포함되어 있으며, 이를 통해 기존 지표에서 배제되던 취약 계층에 대한 고려를 강화하고 보다 공정한 위험 분석이 가능하도록 설계하였다.
  • 화재 위험지수 통합 산정 및 시각화 : 세 지표에 가중치를 적용하여 종합 위험지수를 산출하고, 시군구 단위 Heatmap으로 시각화함으로써 직관적인 고위험 지역 식별이 가능하다.
  • 행정 대응 및 정책 활용 가능성 : 위험도가 높은 지역을 사전에 파악함으로써 예산·인력 등 행정 자원의 우선 배분이 가능하고, 향후 취약계층 보호시설과의 연계를 통해 정책적 개입의 정당성과 실효성을 높일 수 있다.

본 프로젝트는 객체 탐지 기반 AI 기술과 공공 데이터를 융합하여 실질적 화재 예방 및 대응을 지원하며, 실시간성, 확장성, 정책 활용성 측면에서 높은 공공 기여 가치를 지닌 솔루션으로 설계되었다. 다만, 개인정보 보호 이슈로 인해 실제 CCTV 영상을 직접 수집할 수 없었기 때문에, 사전에 확보한 이미지 폴더에서 10초 간격으로 파일을 불러와 객체 탐지를 수행하는 방식으로 구현하였다. 향후 실제 환경 적용을 고려하여, CCTV용 동영상을 처리할 수 있는 예시 코드도 service 폴더 내에 함께 제공하였다.

개발 기간

2025.05.13 ~ 2025.06.22

개발 기간 및 세부 일정

세부 개발 내용 5월 2주차 5월 3주차 5월 4주차 6월 1주차 6월 2주차
공공데이터셋 수집 및 자체 데이터셋 라벨링
위험지수, 기상지수 체계 구축 및 UI 개발
데이터 전처리 및 인공지능 개발
통계 데이터 수집 및 백엔드 연결

프로젝트 설명

주요 기능

위험도 계산 공식

각 지표는 항목별 값을 Min-Max 정규화한 후, 설정된 가중치를 곱해 가중합 방식으로 최종 화재위험지수를 산출하였다. 이 방식은 지표 간 단위 차이를 제거하고, 상대적 위험 수준을 반영하도록 설계되었다.

화재 위험 지수 계산 알고리즘 (Fire Risk Index)

본 시스템에서 제공하는 **화재위험지수(Fire Risk Index)**는 지역별 화재에 대한 위험 수준을 정량적으로 평가하기 위해 아래의 세 가지 주요 지표를 종합하여 산출한다.

지표 구분 가중치 구성 요소
위해 지표 (Hazard Index) 45% - 사망자 수 × 44.6
- 화재 발생 건수 × 0.36 (단, 교통사고 및 비화재성 사고는 제외함)
취약 지표 (Vulnerability Index) 30% - 재난약자 수 × 6
- 식품위생업 등 종사자 수 × 2
- 창고 및 운송 관련 서비스업체 수 × 1.5
- 인구 1만 명당 노후 건축물 수 × 3.5
- 인화성 위험 요소 발견 비율 × 17
경감 지표 (Mitigation Index) 25% - 병상수 x 2.8
- 재정자주도 x 2.2
- 도시지역면적 x 20

지표 해설

위해 지표: 실제 화재로 인한 피해 수준(사망자 수, 발생 빈도 등)을 기반으로 치명도와 발생률을 정량화 취약 지표: 피해 가능성이 높은 환경적·사회적 요인(약자 인구, 노후 건축물 등)을 중심으로 지역의 위험 민감도를 측정

  • 특히, 인화성 요소 탐지 비율은 취약 지표 내 고정지표 대비 1.25배를 차지하며, 실시간 감지 데이터를 기반으로 산정
인화성 위험 요소별 가중치
인화성 위험 요소 가중치
담배꽁초 (Cigarette) 9.0
쓰레기 (Garbage) 5.0
연기 (Smoke) 1.5
전선 (Wires) 1.5
경감 지표는 각 지자체의 화재 대응 및 예방을 위한 정책을 수치화하여, 구조적 대응 역량 평가

기상정보 기반 산불위험지수 계산 알고리즘

국립산림과학원 산불위험지수 산정 방식에 따르면, 아래와 같은 기상 요인을 바탕으로 매시간 위험 지수를 산출한다.

  • 사용 기상요소:
    • 기온 (Tmean)
    • 상대습도 (Rh)
    • 실효습도 (Eh)
    • 풍속 (Wmean)

각 계절(봄철, 가을철)에 따라 가중치가 다르게 적용

  1. 봄철 산불위험지수 산출 알고라즘(1월~ 6월) [1+exp{-(2.706+(0.088Tmean)-(0.055Rh)-(0.023Eh)-(0.014Wmean))}-1]-1

  2. 가을철 산불위험지수 계산식( [1+exp{-(1.099+(0.117Tmean)-(0.069Rh)-(0.182*Wmean))}-1]-1

계절 주요 특성 모델 유사성 판단
여름 고온, 강수 잦음, 국제적 가뭄 → 기온/건조 중심 봄 모델과 유사 (Eh 포함, 풍속 영향 약함)
겨울 저온, 연료 적음, 강한 바람, 낮은 습도 가을 모델 유사 (풍속 계수 큼, 실효습도 없음)

위험도 시각화

• 서울시 행정 구역 단위로 위험 점수를 계산해 Heatmap 형태로 시각화
• 시군구별 위험지수와 기상 기반 위험지수를 구분하여 직관적인 UI로 제공
• 탐지된 위험 요소와 현재 기상 정보를 함께 시각화하여 실시간 상황 파악 지원
• 각 위험 지수에 대한 계산 알고리즘도 함께 제공해 시스템 신뢰도 강화

객체 탐지 기능

YOLOv5 모델을 활용해 CCTV 영상에서 위험 객체(전선, 쓰레기, 담배꽁초 등)를 자동 탐지 • 탐지된 객체는 정규화를 거쳐 점수화 • 사전 정의된 위험 가중치를 적용해 최종 위험 점수를 계산

실행 예제 및 시연 영상

  1. 원하는 위험지수 (시군구별 위험지수 vs 기상기반 위험지수 ) 클릭
  2. 해당 자치구 더블클릭
9.mp4

기술 스택

구분 사용 기술
프론트엔드 HTML, CSS, JavaScript
백엔드 FastAPI
인공지능 YOLOv10s (Ultralytics)
데이터베이스 SQLite3
배포/운영 Python 3.11, Uvicron, requirements.txt, Virtualenv
기타 도구 Roboflow, GitHub, VS Code, Colab

설치 및 실행방법

(python 3.11 권장)

  1. 저장소 클론 git clone https://github.com/pxibvaw/OSS_9.git cd OSS_9

  2. 가상환경 설정 python -m venv env source env/bin/activate /# Windows: .\env\Scripts\activate

  3. 패키지 설치 realheatmap 디렉토리 내부 존재하는 requirements.txt 사용

해당버전은 윈도우 버전 ; pip install -r requirements.txt

맥 버전 ; requirements_mac.txt 로 설치

  1. 이미지 폴더 구성 CCTV 영상은 개인정보 보호법으로 인해 직접 수집할 수 없기 때문에, 사전 수집된 이미지를 realheatmap/images 경로에 넣고 10초 간격으로 불러오는 방식으로 객체 탐지를 수행함. 구글 드라이브에서 제공된 images 폴더를 다운로드한 뒤, 해당 경로에 위치시켜야 함.

  2. 실행 uvicorn realheatmap.app.main:app --reload

  3. 터미널/프롬프트에 뜨는 링크 접속 http://127.0.0.1:8000

  4. 해당하는 자치구 더블클릭

라이선스

라이선스

본 프로젝트는 **GNU Affero General Public License v3.0 (AGPL-3.0)**을 따른다. 자세한 내용은 LICENSE 파일을 참고.

데이터 및 AI 모델 출처

고정 통계 데이터

OSIS 국가통계포털, 소방청 국가화재정보센터, 국토안전관리원, 서울열린데이터광장, 교통안전공단 교통안전정보관리시스템 등에서 제공하는 공공 CSV 데이터를 수집하여 사용. 각 지역의 구조적 화재 위험 요소와 발생 빈도를 반영하는 데 활용됨.

기상 정보

기상청 OpenAPI를 통해 실시간 기상 데이터를 수집. 기온, 습도, 풍속 등 요소는 산불위험지수 산정 알고리즘에 적용됨.

객체 탐지 학습 데이터

Roboflow에서 수집한 이미지와 자체 수집 데이터를 통합하여 학습에 활용. 관련 라이선스는 LICENSE2 파일에 명시.

AI 모델

YOLOv10s 구조 기반 모델을 사용. 클래스 수와 라벨 불균형을 고려한 커스텀 학습 전략을 적용하였으며, 학습 파라미터와 augment 설정은 모델 디렉토리에 기록되어 있음. 학습된 가중치는 추론용으로 제공 가능. LICENSE는 사용한 AI모델 YOLOv10s 라이선스에 대한 내용임.

(사용한 지표들의 관한 정보는 다음 노션에 잘 정리되어 있으니 참고 요망)

https://www.notion.so/217c620638bf8079bae8c273caceec1c

기여 하는 방법

본 프로젝트는 누구나 개선에 참여할 수 있습니다. 아래 안내에 따라 자유롭게 기여해 주세요.

이슈 등록 • 버그 발생, 기능 제안, 문서 오류 등 모든 피드백은 GitHub의 Issues 탭에 작성

• 이슈 등록 시 포함해야할 정보:

  -	발생 환경 (OS, Python 버전 등)

  -	실행 방법 및 에러 메시지

  -	재현 방법이 있을 경우 함께 기재

기여 절차

1. 본 저장소를 Fork 후 로컬에 클론

2. 기능 추가 또는 버그 수정 작업을 진행

3. 변경 사항을 커밋한 뒤 Pull Request(PR)를 생성

4. 리뷰 및 병합 과정을 거쳐 프로젝트에 반영

기여 전에는 반드시 최신 브랜치를 기준으로 작업해 주세요.

현재 기여 정도

팀원 역할 분담

이름 역할 주요 기여 내용
최윤서 (팀장) AI/기획/통합 YOLOv10 학습, 학습데이터(공공 & 자체) 구축 및 라벨링 , 위험지수 알고리즘 설계, 전반적인 행정데이터 수집 및 통합, 보고서 및 README, 라이선스 작성, GitHub 통합, 프로젝트 총괄
권도연 백엔드 데이터베이스 모델링 및 ERD 설계, 기상 API 파싱 및 DB 저장 로직 개발, 화재 위험도 계산 알고리즘 연결, 인공지능 객체탐지용 데이터셋 구축, 동적 API 및 자동화 스크립트 개발
이연우 프론트엔드 위험도 계산 로직 구현, 프론트엔드 UI 설계 및 구현, 백엔드 연동 및 디버깅, 데이터 수집 및 전처리, 자체 데이터셋 생성 및 라벨링

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •