LidarDetection 시스템 아키텍처

시스템 개요: 통합 모니터링 및 객체 탐지 시스템으로, 카메라와 LiDAR 센서를 활용한 실시간 데이터 처리 및 시각화를 제공합니다.

전체 시스템 구성도

graph TB subgraph "실행 스크립트" RUN_ALL[통합 실행 스크립트
run_all.sh] end subgraph "서비스 1: 웹 대시보드" DJANGO[웹 대시보드 서버
Django 기반] DJANGO --> MONITOR[모니터링 페이지] DJANGO --> NOTIFY[알림 페이지] DJANGO --> REPORTS[보고서 페이지] DJANGO --> SCHEDULE[작업 스케줄 관리] DJANGO --> AUTH[인증 시스템] subgraph "데이터 모델" DB_MODEL[데이터베이스 모델] DB_MODEL --> CAM_MODEL[카메라 정보] DB_MODEL --> WORK_MODEL[작업 스케줄] DB_MODEL --> EVENT_MODEL[이벤트 기록] DB_MODEL --> ALERT_MODEL[모니터링 알림] end DJANGO --> DB_MODEL subgraph "자동화 작업" CRON[로그 수집 작업] CRON_CLEAN[데이터 정리 작업] CRON --> INGEST[로그 파일 수집
및 이벤트 생성] CRON_CLEAN --> CLEANUP[오래된 데이터 정리] end INGEST --> EVENT_MODEL INGEST --> ALERT_MODEL end subgraph "서비스 2: 카메라 객체 탐지" FLASK[객체 탐지 서버
Flask 기반] FLASK --> RTSP_IN[카메라 스트림 입력] FLASK --> YOLO[YOLO8 모델
객체 탐지 및 추적] FLASK --> MJPEG_CAM[실시간 영상 스트리밍] FLASK --> API[통계 API] subgraph "탐지 기능" DETECT[객체 탐지
바운딩 박스, 세그멘테이션, 추적] LOG_FILE[로그 파일 생성
JSONL 형식] STATS_API[실시간 통계 제공] end YOLO --> DETECT DETECT --> LOG_FILE DETECT --> MJPEG_CAM DETECT --> STATS_API end subgraph "서비스 3: LiDAR 객체 탐지" LIDAR[LiDAR 처리 시스템
MMDetection3D 기반] LIDAR --> OUSTER[LiDAR 센서 연결] LIDAR --> MMDET3D[MMDetection3D
3D 객체 탐지] LIDAR --> OPEN3D[Open3D
3D 시각화] LIDAR --> MJPEG_LIDAR[실시간 스트리밍] subgraph "LiDAR 기능" PC_CAPTURE[포인트 클라우드 수집] DETECT_3D[3D 객체 탐지
보행자, 차량 등] VIS_3D[실시간 3D 시각화] SCREEN_CAP[화면 캡처 및 스트리밍] end OUSTER --> PC_CAPTURE PC_CAPTURE --> MMDET3D MMDET3D --> DETECT_3D DETECT_3D --> OPEN3D OPEN3D --> VIS_3D VIS_3D --> SCREEN_CAP SCREEN_CAP --> MJPEG_LIDAR end LOG_FILE -.->|로그 파일| INGEST INGEST -.->|이벤트 생성| EVENT_MODEL INGEST -.->|알림 생성| ALERT_MODEL EVENT_MODEL -.->|조회| REPORTS ALERT_MODEL -.->|조회| NOTIFY subgraph "외부 장비" CAMERA_DEVICE[카메라 장치] LIDAR_DEVICE[Ouster LiDAR 센서] NETWORK[네트워크 인프라] end RUN_ALL --> DJANGO RUN_ALL --> FLASK RUN_ALL --> LIDAR RTSP_IN --> CAMERA_DEVICE OUSTER --> LIDAR_DEVICE CAMERA_DEVICE --> NETWORK LIDAR_DEVICE --> NETWORK DJANGO --> NETWORK FLASK --> NETWORK LIDAR --> NETWORK MONITOR --> MJPEG_CAM MONITOR --> MJPEG_LIDAR style RUN_ALL fill:#ff6b6b style DJANGO fill:#4ecdc4 style FLASK fill:#95e1d3 style LIDAR fill:#f38181 style NETWORK fill:#aaa style CAMERA_DEVICE fill:#ffe66d style LIDAR_DEVICE fill:#ffe66d

서비스별 상세 구성

1. 웹 대시보드 (Django)

주요 기능:
  • 모니터링 페이지: 카메라 및 LiDAR 스트림 통합 실시간 표시
  • 알림 시스템: 방문 요청, 모니터링 알림, 장치 상태 알림 관리
  • 보고서 페이지: 일일/월간 리포트 생성 및 통계 분석
  • 작업 스케줄: 작업 스케줄 관리 및 캘린더 뷰
  • 인증 시스템: 사용자 로그인 및 권한 관리
기술 스택: Django Python PostgreSQL/SQLite Django Cron

2. 카메라 객체 탐지 시스템 (Flask)

기술 스택: Flask YOLO8 OpenCV MJPEG 주요 기능:
  • 실시간 영상 스트리밍: 원본, 바운딩 박스, 세그멘테이션, 추적 모드
  • 객체 탐지 및 추적: YOLO8 모델 기반 실시간 객체 탐지
  • 통계 API: 실시간 탐지 통계 및 세그멘테이션 데이터 제공
  • 로그 기록: JSONL 형식의 탐지 로그 자동 생성
데이터 처리 흐름:
  1. 카메라 RTSP 스트림 수신
  2. YOLO8 모델로 객체 탐지 및 추적
  3. 프레임별 통계 계산 및 분석
  4. JSONL 로그 파일 자동 생성
  5. MJPEG 스트림으로 실시간 영상 제공

3. LiDAR 객체 탐지 시스템 (MMDetection3D)

기술 스택: MMDetection3D Open3D Ouster SDK Python 주요 기능:
  • 3D 포인트 클라우드 수집: LiDAR 센서로부터 실시간 데이터 수집
  • 3D 객체 탐지: 보행자, 차량 등 3D 객체 탐지 및 분류
  • 실시간 3D 시각화: Open3D를 활용한 3D 포인트 클라우드 렌더링
  • 스트리밍 제공: MJPEG 형식으로 실시간 스트림 전송
데이터 처리 파이프라인:
  1. 포인트 클라우드 수집: LiDAR 센서에서 실시간 데이터 수집
  2. 전처리: 복셀 다운샘플링 및 필터링
  3. 3D 객체 탐지: MMDetection3D 모델 추론 (보행자, 차량 등)
  4. 시각화: Open3D로 3D 포인트 클라우드 렌더링
  5. 스트리밍: 화면 캡처 → JPEG 인코딩 → MJPEG 스트림 전송

데이터 흐름 상세

실시간 모니터링 데이터 수집 흐름

sequenceDiagram participant Camera as 카메라 장치 participant YOLO as 카메라 탐지 시스템
(Flask) participant LogFile as 로그 파일
(JSONL) participant Cron as 자동화 작업
(매분 실행) participant Django as 웹 대시보드
(Django) participant DB as 데이터베이스 Camera->>YOLO: RTSP 스트림 YOLO->>YOLO: YOLO8 객체 탐지 YOLO->>YOLO: 통계 계산 YOLO->>LogFile: JSONL 로그 기록 YOLO->>Django: MJPEG 스트림 Cron->>LogFile: 새 데이터 읽기 Cron->>Cron: 이벤트 타입 결정
(임계값 기반) Cron->>DB: 이벤트 기록 생성 Cron->>DB: 일일 집계 업데이트 Cron->>DB: 모니터링 알림 생성 Django->>DB: 이벤트 조회 Django->>Django: 보고서 페이지 렌더링 Django->>DB: 알림 조회 Django->>Django: 알림 페이지 렌더링

LiDAR 데이터 처리 흐름

sequenceDiagram participant LiDAR as LiDAR 센서 participant MMDet3D as MMDetection3D
시스템 participant Open3D as Open3D 시각화 participant Stream as MJPEG 스트림 participant Django as 웹 대시보드
(Django) LiDAR->>MMDet3D: 포인트 클라우드 데이터 MMDet3D->>MMDet3D: 전처리
(복셀, 필터링) MMDet3D->>MMDet3D: MMDetection3D 추론
(3D 객체 탐지) MMDet3D->>Open3D: 탐지 결과 전달 Open3D->>Open3D: 3D 렌더링
(포인트 클라우드 + 바운딩 박스) Open3D->>Stream: 화면 캡처
→ JPEG 인코딩 Stream->>Django: MJPEG 스트림 Django->>Django: 모니터링 페이지 렌더링

네트워크 구성

네트워크 구조:
  • 모든 장치와 서버는 동일한 네트워크 인프라에 연결됩니다
  • 카메라 장치는 RTSP 프로토콜을 통해 스트리밍합니다
  • LiDAR 센서는 전용 프로토콜을 통해 데이터를 전송합니다
  • 각 서비스는 독립적인 포트를 사용하여 통신합니다
  • 웹 대시보드는 HTTP 프로토콜을 통해 모든 서비스에 접근합니다
[네트워크 인프라] | +-------+-------+-------+ | | | | [서버] [카메라] [LiDAR] | | | | | | +-------+-------+ | [웹 대시보드 통합]

시스템 아키텍처 특징

아키텍처 설계 원칙:
  • 모듈화: 각 서비스는 독립적으로 실행되고 관리됩니다
  • 확장성: 새로운 센서나 기능을 쉽게 추가할 수 있습니다
  • 실시간 처리: 모든 데이터는 실시간으로 처리되고 표시됩니다
  • 자동화: 로그 수집 및 데이터 정리 작업이 자동화되어 있습니다
  • 통합 관리: 단일 웹 대시보드에서 모든 서비스를 모니터링할 수 있습니다
데이터 보존 정책:
  • 기본적으로 일정 기간 이상의 데이터는 자동으로 정리됩니다
  • 중요한 이벤트와 통계는 별도로 보관됩니다
  • 로그 파일은 주기적으로 백업됩니다

시스템 실행 및 관리

실행 순서:
  1. 통합 실행 스크립트를 통해 모든 서비스가 순차적으로 시작됩니다
  2. 각 서비스는 초기화 작업을 완료한 후 정상 동작을 시작합니다
  3. 실시간 데이터 처리가 시작되며 웹 대시보드에서 확인할 수 있습니다
주요 기능:
  • 단일 명령어로 전체 시스템 시작/중지
  • 실시간 로그 확인 및 모니터링
  • 자동 오류 복구 및 재시작 메커니즘
  • 리소스 사용량 모니터링