Skip to content

yejeeni/AI-Camera-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AI-Camera-Management-System

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. 실시간 관제

  1. 실시간 현황 관제

지도-클러스터

등록된 장비를 지도 상에서 마커를 통해 확인할 수 있습니다. 정상 상태의 장비는 하늘색, 복구되지 않은 장애가 있는 장비는 빨간색으로 표시됩니다. 장비 장애 관리는 스케줄링을 통해 구현하였습니다. 많은 양의 마커는 클러스터를 통해 간단하게 확인할 수 있도록 하였습니다.


지도-마커선택

지도 상 마커를 클릭하면 해당하는 장비의 실시간 스트리밍 영상과 장비 상세정보, 객체 인식 기록/장애 발생 기록을 최근 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를 확인할 수 있도록 개선할 예정입니다.

About

AI 카메라 관리 시스템. 객체 인식 카메라 장비의 객체 인식 기록을 확인하고, 장애 관리 스케줄링을 통해 장애 발생 및 복구 여부를 관리 가능.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors