정지용
프로젝트 목록
백엔드Python

FastAPI 기반 화재·연기 실시간 탐지 및 비식별화 API

YOLO 모델을 활용한 화재·연기 탐지와 동시에 사람·차량 번호판을 자동 비식별화하는 FastAPI 기반 추론 서버

firescout-3.0-detection-api최근 업데이트 2026년 7월 27일

개요

CCTV 영상에서 화재와 연기를 실시간으로 탐지하고, 탐지된 이미지 내 개인정보(사람 얼굴, 차량 번호판)를 자동으로 모자이크 처리하는 API 서버입니다. YOLOv8 기반 화재/연기 탐지 모델과 YOLOv3 계열 비식별화 모델을 조합하여 동기·비동기 추론 파이프라인을 제공하며, 어안 렌즈 왜곡 보정과 이미지 분할·회전 전처리를 지원합니다. 멀티워커 환경에서 Shared Memory 기반 메트릭 수집, 외부 클라우드 API 연동(서킷 브레이커 적용), Docker 멀티스테이지 빌드 및 소스 난독화를 통해 프로덕션 환경에 배포됩니다.

담당 역할

화재 탐지 AI 모델 서빙 API 전체 설계 및 구현. 비동기 추론 파이프라인, 멀티워커 메트릭 수집, 비식별화 로직, Docker 보안 강화를 담당했습니다.

아키텍처 다이어그램

레포지토리 분석 결과를 바탕으로 자동 생성된 구조도입니다.

아키텍처

전체 시스템 아키텍처

클라이언트 요청부터 화재 탐지, 비식별화, 클라우드 전송까지의 전체 데이터 흐름과 주요 컴포넌트 구성을 보여줍니다.

다이어그램을 그리는 중…
데이터 흐름

비동기 추론 파이프라인

모델 풀링과 비동기 처리를 통해 동시 요청을 병렬로 처리하는 최적화된 추론 흐름입니다.

다이어그램을 그리는 중…
아키텍처

멀티워커 메트릭 수집 구조

Shared Memory와 파일락을 사용한 멀티워커 환경의 메트릭 수집 및 주기적 집계 메커니즘입니다.

다이어그램을 그리는 중…

기술스택

각 기술을 이 프로젝트에서 어떤 용도로 썼는지 정리했습니다.

언어

  • Python전체 서비스 로직 및 추론 파이프라인 구현

프레임워크

  • FastAPIRESTful API 서버 프레임워크, 동기·비동기 엔드포인트 제공

백엔드

  • UvicornASGI 서버로 멀티워커 프로세스 실행
  • PyTorchYOLO 모델 추론 및 GPU 가속
  • ONNX Runtime크로스 플랫폼 모델 추론 최적화
  • OpenCV이미지 전처리, 어안 렌즈 왜곡 보정, 모자이크 처리
  • MultiprocessingShared Memory 기반 워커 간 메트릭 공유
  • Asyncio비동기 이미지 처리 및 외부 API 호출

인프라

  • Docker멀티스테이지 빌드, 보안 강화 컨테이너 배포

도구

  • PyArmorPython 소스 코드 난독화

핵심 포인트

  • YOLO 모델 풀링과 비동기 파이프라인으로 동시 요청 처리 성능 최적화 (배치 처리 시 요청당 평균 167ms)
  • Shared Memory와 fcntl 파일락을 활용한 멀티워커 환경 메트릭 수집 시스템 구현 (외부 Redis 의존성 제거)
  • 화재 탐지와 비식별화를 병렬 처리하여 전체 응답 시간 33% 단축 (600ms → 400ms)
  • 어안 렌즈 왜곡 보정(dewarp) 및 이미지 분할·회전 전처리 로직 구현
  • Docker 컨테이너 내 위험 명령어 제거, PyArmor 난독화 적용으로 배포 보안 강화
  • 외부 클라우드 API 연동 시 서킷 브레이커 패턴 적용으로 장애 전파 방지

문제와 해결

문제단일 YOLO 모델 인스턴스로 인한 동시 요청 블로킹 문제 (300ms 이상 대기)

해결모델 풀링(Model Pooling)과 ThreadPoolExecutor 기반 비동기 전처리로 병렬 처리 파이프라인 구축, 처리량 3배 향상

문제멀티워커 환경에서 메트릭 집계 시 Redis 같은 외부 의존성 추가 부담

해결multiprocessing.shared_memory와 fcntl 파일락을 활용해 프로세스 간 데이터 공유 및 동시성 제어 구현

문제화재 탐지와 비식별화를 순차 처리하여 총 응답 시간이 600ms 소요

해결asyncio.gather로 두 모델 추론을 병렬 실행하여 400ms로 단축, I/O 대기 시간 최소화

레포지토리 정보

생성
2026년 7월 27일
최근 커밋
2026년 7월 27일
크기
110 KB
라이선스
없음

언어 구성

  • Python97.6%
  • Shell1.5%
  • Dockerfile0.9%

이 문서는 2026년 7월 28일 에 자동 분석으로 생성되었습니다.