DroneGuard Edge는 연구시설, 지자체, 공공기관, 대학 캠퍼스처럼 보안 감시가 필요한 공간에서 불법 촬영 드론을 빠르게 찾아내기 위한 엣지 AI 관제 서비스입니다. 고가의 레이더나 RF 장비를 새로 구축하기보다, EO/IR 영상과 NPU 기반 온디바이스 추론을 활용해 기존 CCTV 중심의 감시 체계를 보완하는 데 초점을 맞췄습니다.
서비스 흐름은 단순합니다. 엣지 장치가 EO/IR 영상을 받아 드론을 탐지하고, DeepX NPU에서 추론한 결과를 WebSocket으로 백엔드에 보냅니다. 백엔드는 탐지 프레임과 결과를 브라우저로 중계하고, 관제 화면은 영상, Bounding Box, 위험도, 알림을 실시간으로 보여줍니다.
이 저장소는 두 개의 프로젝트로 나뉩니다.
| 프로젝트 | 역할 |
|---|---|
Drone-Guard-NPU |
EO/IR 영상 기반 드론 탐지, 환경 적응형 센서 융합, DeepX NPU 추론, DPX1 WebSocket 패킷 전송 |
Drone-Guard-frontend |
FastAPI 중계 서버, React 관제 대시보드, 위험도 평가, 탐지 결과 시각화 |
드론 보급이 늘면서 연구시설과 공공기관 주변에서도 불법 촬영, 시설 정찰, 보안 침해 가능성이 커지고 있습니다. 대형 기관은 레이더나 RF 기반 안티드론 장비를 도입할 수 있지만, 중소 규모 기관이나 지자체 시설에는 비용 부담이 큽니다.
기존 방식에도 한계가 분명합니다.
- 레이더/RF 장비는 구축비와 유지비가 높아 도입 장벽이 큽니다.
- CCTV 관제는 사람이 계속 화면을 확인해야 합니다.
- 단일 광학 센서는 야간, 저조도, 악천후 상황에서 탐지 성능이 떨어집니다.
- 중앙 서버 중심 구조는 네트워크 지연과 운영 비용이 생깁니다.
DroneGuard Edge는 이런 제약을 줄이기 위해 엣지 장치에서 직접 추론합니다. 기존 CCTV 인프라와 연결할 수 있고, 별도의 고성능 중앙 서버 없이도 현장에서 탐지 결과를 빠르게 확인하는 구조를 목표로 합니다.
가시광 영상(EO)과 열화상 영상(IR)을 각각 YOLO26nano 모델로 분석합니다. EO는 일반적인 주간 환경에서 유리하고, IR은 야간이나 저조도 상황을 보완합니다. 두 센서를 함께 사용해 단일 센서 감시의 약점을 줄입니다.
EO 프레임에서 contrast, brightness, entropy, temporal delta를 추출합니다. Fusion MLP는 이 값을 보고 현재 환경에서 EO와 IR 중 어느 쪽에 더 무게를 둘지 계산합니다. 이후 Weighted Box Fusion이 두 모델의 탐지 박스를 합쳐 최종 결과를 만듭니다.
모델은 DeepX NPU용으로 컴파일된 .dxnn 파일을 사용합니다.
yolo26n_eo.dxnnyolo26n_ir.dxnnfusion.dxnn
추론을 엣지 장치에서 처리하므로 원본 영상을 매번 중앙 서버로 보내지 않아도 됩니다. 그만큼 지연과 서버 의존도를 줄일 수 있습니다.
NPU 장치는 탐지 결과와 JPEG 프레임을 DPX1 바이너리 패킷으로 백엔드에 전송합니다. FastAPI 서버는 /ws/ingest에서 이 데이터를 받고, /ws/live로 브라우저에 중계합니다. React 대시보드는 수신한 영상을 렌더링하고 탐지 박스, 위험도, 탐지 목록, 알림을 함께 표시합니다.
EO/IR Camera
-> DeepX NPU Edge Device
-> YOLO26nano EO/IR Detection
-> Feature Extraction + Fusion MLP
-> Weighted Box Fusion
-> DPX1 WebSocket Packet
-> FastAPI Backend
-> React Monitoring Dashboard
Drone-Guard-NPU는 세 개의 DeepX 컴파일 모델로 구성됩니다.
| 모델 | 설명 |
|---|---|
weights/dxcom/yolo26n_eo.dxnn |
EO 영상 전용 YOLO26nano 드론 탐지 모델 |
weights/dxcom/yolo26n_ir.dxnn |
IR 영상 전용 YOLO26nano 드론 탐지 모델 |
weights/dxcom/fusion.dxnn |
환경 특성 기반 EO/IR 가중치 산출 MLP |
탐지는 다음 순서로 진행됩니다.
- EO/IR 프레임을 640x640 크기로 전처리합니다.
- EO 모델과 IR 모델이 각각 드론 후보 박스를 추론합니다.
- EO 프레임에서 contrast, entropy, brightness, temporal delta를 뽑습니다.
- Fusion MLP가 EO 가중치
w를 계산하고, IR 가중치는1 - w로 둡니다. - Weighted Box Fusion이 두 모델의 탐지 결과를 가중 결합합니다.
- 최종 탐지 결과를 JPEG 프레임과 함께 WebSocket으로 전송합니다.
React 대시보드에서는 현재 상황을 한 화면에서 확인할 수 있습니다.
- NPU 연결 및 통신 상태
- 현재 위험도와 탐지 개수
- 실시간 영상과 Bounding Box
- 탐지 객체별 클래스, 신뢰도, 위험 수준
- 위험 이벤트 알림
위험도는 탐지 신뢰도와 탐지 개수를 함께 봅니다.
| 위험도 | 기준 |
|---|---|
HIGH |
confidence >= 0.9 또는 동시 탐지 3개 이상 |
MEDIUM |
confidence >= 0.7 또는 동시 탐지 2개 |
LOW |
confidence >= 0.5 또는 동시 탐지 1개 |
SAFE |
탐지 없음 |
cd Drone-Guard-frontend
pip install -r server/requirements.txt
python server/server.py기본 포트는 8765입니다. server/cert.pem, server/key.pem이 있으면 HTTPS/WSS 모드로 실행됩니다.
cd Drone-Guard-frontend
npm install
npm start배포 빌드는 아래 명령으로 생성합니다.
npm run buildcd Drone-Guard-NPU
pip install opencv-python numpy websockets python-dotenv
python project/ai-client.py \
--eo_video data/video/visible.mp4 \
--ir_video data/video/infrared.mp4 \
--ws_url ws://localhost:8765/ws/ingest \
--fps 30 \
--loopDeepX M1 NPU 환경에서는 DeepX SDK와 dx_engine이 별도로 필요합니다.
서버 연결 없이 파일 출력만 확인하려면 다음처럼 실행합니다.
python project/ai-client.py \
--eo_video data/video/visible.mp4 \
--ir_video data/video/infrared.mp4 \
--output_dir output/demo_video- 정부출연연구기관 및 연구시설
- 지자체 및 공공기관 보안 담당자
- 대학 캠퍼스 및 공공시설 운영 관리자
- 고가 안티드론 장비 도입이 어려운 기관의 보안 공백 완화
- 실시간 탐지와 관제로 불법 촬영 드론 대응 시간 단축
- 기존 CCTV 인프라와 연계 가능한 저비용 드론 탐지 체계 확보
- 고성능 중앙 서버 의존도를 낮춘 엣지 기반 운영 구조 마련


