AI 카메라 관리 시스템
객체 인식 AI 카메라 장비를 관리하는 시스템입니다. 카메라의 객체 인식 기록을 확인하고, 장애 관리 스케줄링을 통해 장비의 장애 발생 및 복구 여부를 관리할 수 있는 시스템입니다.
등록된 장비는 지도 상에서 마커를 통해 위치, 상태, 정보를 손쉽게 확인할 수 있으며, 실시간 스트리밍 영상을 확인할 수 있습니다.
장비가 수집한 기록은 분석 스케줄링을 통해 통계분석으로 수치와 그래프를 제공합니다.
- 전체: 2024.01.03 ~ 2024.02.16
- 요구사항 분석 및 설계: 2024.01.03 ~ 2023.01.11.
- 개발: 2024.01.12 ~ 2024.02.08.
- 테스트: 2024.02.13 ~ 2024.02.16.
- 이세현: 프로젝트 관리 및 Python 개발
- 김예진: DB 설계, 스케줄링, Python - Node.js 통신, 통계분석, 실시간 관제
- 김재민: 기능 정의서 작성, 사용자 관리 모듈, 암호화 및 복호화
- 황대찬: 화면 정의서 작성, 장비 모듈, 장애 모듈, KakaoMap API 지도
- Front-end: HTML, CSS, JS, Vue.js, KakaoMap API
- Back-end: Spring legacy, PostgreSQL, Node.js, JDK15
- 버전 및 이슈 관리: Yona
- 협업 툴: Trello
- 디자인: Figma
10초마다 진행하는 장비 상태 정보 관리를 DB가 아닌 메모리상에서 진행하도록 하여 DB 접근을 최소화하였습니다.
1. 로그인
아이디, 비밀번호를 입력하여 로그인할 수 있습니다. 로그인하지 않은 상태로 링크를 통해 다른 페이지에 접근할 경우 로그인창이 나타나게 됩니다.
2. 메인
-
오늘 누적 인식 수
오늘 하루 동안 모든 장비가 인식한 보행자, 자전거, 승용차, 오토바이, 버스, 트럭의 수를 누적하여 수치와 막대 그래프로 보여줍니다. -
실시간 관제 / 통계분석
클릭 시 해당 페이지로 이동합니다. -
장애 발생 내역 / 상황 발생 내역
모든 장비에서 발생한 장애 정보, 인식한 상황에 대한 기록을 최근 5건까지 노출합니다. 클릭 시 각각의 조회 페이지로 이동합니다.
3. 실시간 관제
- 실시간 현황 관제
등록된 장비를 지도 상에서 마커를 통해 확인할 수 있습니다. 정상 상태의 장비는 하늘색, 복구되지 않은 장애가 있는 장비는 빨간색으로 표시됩니다. 장비 장애 관리는 스케줄링을 통해 구현하였습니다.
많은 양의 마커는 클러스터를 통해 간단하게 확인할 수 있도록 하였습니다.
지도 상 마커를 클릭하면 해당하는 장비의 실시간 스트리밍 영상과 장비 상세정보, 객체 인식 기록/장애 발생 기록을 최근 5건까지 확인할 수 있습니다.
장비 정보를 수정하거나 삭제하고 싶은 경우 수정, 삭제 버튼을 통해 수행할 수 있으며, 마커 역시 수정 사항이 즉시 반영됩니다.
객체 인식 기록을 클릭 시 당시 상황의 상세정보를 확인할 수 있습니다. 상세정보로는 인식한 상황의 이미지, 장비 ID, 장비명, 일자, 위도 경도, 인식한 객체 수입니다.
현재 시각으로부터 10분 이내에 발생한 최신 정보는 붉은색 글씨로 표시됩니다.
-
상황 정보
오늘 하루 동안 모든 장비가 인식한 보행자, 자전거, 승용차, 오토바이, 버스, 트럭의 수를 누적하여 도넛 그래프로 보여줍니다. 하단에는 최근 발생한 상황 5건이 노출되며, 클릭 시 지도 중심이 해당 상황을 인식한 장비 마커로 이동하며 이에 대한 상세정보를 열람할 수 있습니다. -
장애 정보
오늘 하루 동안 모든 장비에서 발생한 연결 장애, CPU 사용량 기준치 초과, 메모리 사용량 기준치 초과 수를 누적하여 도넛 그래프로 보여줍니다. 하단에는 최근 발생한 장애 5건이 노출되며, 클릭 시 지도 중심이 장애가 발생한 장비 마커로 이동합니다. 장애 복구 여부는 Y, N으로 표시됩니다.
- 장비 등록
장비명, 카메라 IP, 카메라명, 엣지 ID와 PW, 위도와 경도를 입력하여 장비를 등록할 수 있습니다. 위도 경도는 지도 선택 버튼을 클릭한 후 지도 상에서 원하는 위치를 클릭하면 해당 위치의 위도 경도가 자동으로 입력됩니다. 카메라 IP, 위도 경도 입력값이 유효성 검사를 통과하면 장비가 등록되고 해당 위치에 마커가 생성됩니다.
- 장비 검색
장비 ID, 장비명, 카메라명을 통해 장비를 검색하고 조회할 수 있습니다. 장비를 클릭하면 마커를 선택했을 때와 동일하게 해당 장비의 실시간 스트리밍 영상과 상세정보, 객체 인식 기록, 장비 장애 기록을 확인할 수 있습니다.
2. 객체 인식 조회/장비 장애 조회
객체 인식 기록을 검색하고 조회할 수 있습니다.
검색 조건은 인식 객체, 일자, 장비 ID, 장비명입니다. 인식 객체를 선택하면 해당 객체만 인식된 기록을 조회하고, 시작 일자는 끝 일자보다 느리거나 끝 일자는 시작 일자보다 빠를 수 없습니다.
원하는 기록을 클릭 시 당시 인식한 상황의 이미지, 장비 ID, 장비명, 일자, 위도 경도, 인식한 객체 수를 확인할 수 있습니다.
장비 장애 기록 역시 동일하게 검색하고 조회할 수 있습니다.
검색 조건은 장애 코드, 복구 여부, 일자, 장비 ID, 장비명입니다. 장애 코드와 복구 여부는 반드시 각각 하나 이상 체크되어있어야 합니다.
3. 장비 관리
장비를 등록, 수정, 삭제할 수 있습니다.
지도 상에서 등록할 때와 동일하게 입력하여 등록할 수 있습니다.
4. 통계 분석
객체 인식을 통해 어떤 객체가 얼마나 인식되었는지, 장비에서 어떤 장애가 얼마나 발생했는지를 수치와 그래프를 통해 확인할 수 있습니다.
시간별, 주간별, 월간별로 선택하여 확인할 수 있으며, 좌측의 장비 목록에서 원하는 장비를 선택할 경우 해당 장비의 데이터로만 이루어진 통계 분석 정보를 확인할 수 있습니다.
5. 사용자 관리

Admin 등급 이상인 관리자에게만 노출되는 페이지로, 사용자 정보를 등록, 수정, 삭제할 수 있으며, 접속 기록을 확인할 수 있습니다.
단 수정 시 ID, 비밀번호는 임의로 수정할 수 없으며 비밀번호 초기화 기능을 통해 ID와 동일한 비밀번호로 수정하여 사용자가 비밀번호 분실 시 접근할 수 있도록 할 수 있습니다.
사용자 접속 기록을 통해 사이트에 접속한 사용자의 접속 일자와 접속 환경, IP, ID를 확인할 수 있습니다.
- Node.js 서버
원래 Python에서 전처리 및 후처리를 모두 하려고 했으나, 시간 관계상 중앙 서버에서 이를 하게 되었습니다. HTML5에서 RTSP 통신을 지원하지 않는 문제로 인해 현재는 중앙 서버에서 Node.js를 통해 FFmpeg 라이브러리를 사용하여 전처리 및 후처리를 하고 있으나, 추후에는 엣지 서버마다 Node.js를 실행하고자 합니다. 이를 통해 카메라의 실시간 스트리밍 영상에서도 B-Box를 확인할 수 있도록 개선할 예정입니다.



