CCTV와 드론 영상은 화재를 가장 먼저 목격하는 눈입니다. 이 안내서는 영상 스트림에서 화염과 연기를 실시간으로 탐지해 조기 경보로 연결하는 전 과정을, 현장 적용 관점에서 단계별로 정리합니다.
이 안내서를 끝내면 라벨링된 화재 데이터셋으로 탐지 모델을 학습하고, 영상에 실시간 추론을 붙이고, 오탐을 줄이는 실무 기법까지 적용할 수 있습니다.
무엇을 탐지할 것인가
화재 탐지는 두 개의 클래스로 나눠 접근합니다. fire(화염)와 smoke(연기)입니다. 연기는 화염보다 먼저, 더 넓게 나타나므로 조기 경보에서 특히 중요합니다.
현장 규칙: 연기 탐지는 민감하게, 경보 발령은 보수적으로. 두 단계를 분리하면 오탐을 크게 줄일 수 있습니다.
데이터 준비와 라벨링
공개 화재 데이터셋에 더해, 관할 구역의 실제 CCTV 프레임을 일부 섞으면 성능이 눈에 띄게 좋아집니다. 실제 설치 각도·조명을 모델이 학습하기 때문입니다.
- 박스 라벨은 화염/연기의 윤곽 전체를 넉넉히 감싸도록
- 혼동 객체(노을, 붉은 조명, 수증기)는 배경으로 명확히 분리
- 학습:검증:테스트 = 7:2:1 비율 권장
모델 학습
경량 YOLO 계열은 엣지 장비에서도 실시간 추론이 가능해 현장 배치에 적합합니다.
PYTHON
from ultralytics import YOLO # 경량 사전학습 모델에서 시작 model = YOLO("yolo-n.pt") # 화재 데이터셋으로 미세조정 model.train(data="fire_smoke.yaml", epochs=100, imgsz=640, patience=20)
성능을 어떻게 평가하나
조기 경보에서는 두 오류의 비용이 다릅니다. 단일 정확도가 아니라 둘을 나눠 봐야 합니다.
- 미탐(놓침): 실제 화재를 못 잡음 — 치명적. Recall로 관리
- 오탐(허위): 화재가 아닌데 경보 — 신뢰·피로 비용. Precision으로 관리
객체탐지는 보통 mAP(클래스별 평균 정밀도)로 종합 비교합니다. 연기 클래스는 Recall을 우선합니다(먼저·넓게 잡아야 하므로). 신뢰도(confidence) 임계값을 낮추면 Recall은 오르고 오탐도 늘어나므로, 운영 단계에서 조절합니다.
오탐 줄이기
현장 배치에서 가장 중요한 단계입니다. 단일 프레임의 탐지만으로 경보를 울리면 노을·반사광에 쉽게 속습니다.
- 시간 누적: N개 연속 프레임에서 탐지될 때만 경보
- 영역 마스킹: 하늘·창문 등 상시 오탐 구역 제외
- 2단계 검증: 연기 탐지 → 화염 동반 여부 재확인
현장 배치에서 챙길 것
- 지연: 경보는 속도가 생명입니다. 클라우드 왕복보다 엣지 장비 실시간 추론(경량 모델)이 유리합니다.
- 관제 연동: 탐지 → 관제 알림·지도 표시 → 사람 확인 → 발령. 자동 발령은 신중하게 단계화합니다.
- 재학습: 계절 변화·신규 CCTV로 영상 분포가 바뀌므로(드리프트), 새 프레임을 주기적으로 추가해 재학습합니다.
▸ 소방 활용 포인트
이 파이프라인은 관할 CCTV 관제 시스템에 조기경보 PoC로 바로 얹을 수 있습니다. 오경보 비용이 미탐 비용보다 작다는 점을 고려해 임계값을 보수적으로 시작하길 권합니다.