Git Product home page Git Product logo

web_guardian_guardian's Introduction

GUARDIAN - CCTV감지체계

Logo

Logo

프로젝트 소개 ✨

'가디언'은 군 CCTV를 자동으로 감시하는 영상 감시 웹 어플리케이션입니다.

  • 개발 배경

    • 최근 몇몇 부대에서 위병소 경계 실패가 일어나면서 경계 근무 강조
      "작전에 실패한 장수는 용서할 수 있어도 경계에 실패한 장수는 용서할 수 없다."
      이러한 대사가 있는 만큼 경계 근무는 군 부대에서 중요한 일입니다.
      하지만 어디어디 위병소 뚫려서 민간인이 들어왔지만 뒤늦게 식별됐다는 경계 근무 실패 사례를 접하게 되었고
      이러한 사례들을 바탕으로 경계 근무가 강조되고 있습니다.

    • 감시병이 다수의 CCTV 동시 감시
      한 감시병이 10대 이상의 CCTV를 동시 감시해 한 스크린을 집중하면 다른 스크린은 감시하기 벅차 사고 발생의 우려가 있습니다.

    • 사소한 움직임 감지에 무분별한 경보음
      움직임 감지 기능이 존재하는 CCTV는 나뭇잎의 흔들림, 갑작스런 빛의 변화 등에 취약하여 끝도 없이 비프음을 울립니다. 이러한 이유로 감시병들은 움직임이 있든 말든 비프음을 신경쓰지않게 되었습니다.

  • 개발 목표

    • CCTV 내 사람과 차량 식별, 움직임 동선 파악 자동화
      설정된 영역 안에서 사람 또는 차량 식별 시 상황일지가 작성되며 발견된 객체가 움직임이 없어질 경우 이동 경로를 추적해줍니다.

    • 식별된 과거 상황 데이터베이스 조회
      식별된 데이터와 자동 녹화 영상은 언제든지 조회 가능하여 사고 추적에 도움을 줍니다.

    • 사용자가 인지할 수 있는 TTS 경보음
      움직임 감지가 일어나면 울리는 비프음이 아닌 정확히 사람과 차량만 탐지하였을 때 TTS로 사람 또는 차량 감지를 알립니다.

PPT 자료 📘

PPT 파일
PDF 파일

프로젝트 동영상 🎬

발표 영상 시연영상
Youtube Youtube
Google Drive Google Drive

기능 설계 🕹

Oven

커뮤니티 👨‍👩‍👦‍👦

2020 국방오픈소스아카데미 해커톤 - GUARDIAN 개발 후기

핵심 기능 소개 📌

RTSP 스트리밍 및 상황일지 작성

RTSP 스트리밍 및 상황일지 작성
네트워크 카메라 또는 DVR에서 지원하는 RTSP 스트림 데이터를 웹에서 보여줍니다.
사람 및 차량 감지
YOLO기반 Object Detection으로 사람 및 자동차를 식별합니다.
감지 후 이동 거리 추적 시각화 및 자동 녹화
해당 객체가 움직임이 없어지면 경로를 추적하여 사용자에게 보여줍니다.
확실한 감지를 했을 때
(감지~움직임 감지 끝) 분기를 녹화하여 사용자에게 보여줍니다.
자동 녹화 된 영상 프리뷰
Alt Text
위 예제에서 탐지된 자동 녹화 영상입니다.
일별 시계열 통계
일별로 데이터를 기록하여 0~24시까지 감지된 정보를 알려줍니다.
과거 식별 데이터 스트리밍
통계에서 해당 시간을 선택할 시 그 시간대에 감지됐던 식별 동영상을 볼 수 있습니다.

컴퓨터 구성 / 필수 조건 안내 (Prerequisites) 🛠

  • ECMAScript 6 지원 브라우저 사용
  • 권장: Google Chrome 버젼 77 이상
  • Golang 설치
  • IP Camera 또는 RTSP 스트리밍을 지원하는 DVR

기술 스택 (Technique Used) 💻

  • 주요 기술 선정 이유

    • Golang : 영상 감시 프로젝트는 사이즈가 큰 실시간 데이터를 처리하기 때문에 퍼포먼스, 동시성, HTTP를 모두 갖춘 Go언어를 선택했습니다.

    • OpenCV : 컴퓨터비전 작업이 많은 프로젝트인 만큼 오픈소스인 'OpenCV' 라이브러리를 선택했습니다.

    • Darknet Yolov4-tiny: YOLO 모델 자체는 실시간 물체 감지를 위해 태어났습니다.

      개발 환경이 VM에서 제한됐기 때문에 적은 CPU 코어에서도 운용할 수 있는 Tiny 모델을 선택했습니다.

    • React : 웹 어플리케이션 개발에 용이한 프론트엔드 프레임워크입니다.

  • Backend

golang Echo OpenCV mongoDB
  • FrontEnd
TypeScript React.js Antd UI Framework Socket.io Video.js
  • Infra
Docker
  • Machine Learning
Darknet YOLOv4

설치 안내 (Installation Process) 🔍

GoCV 사용을 위한 OpenCV 라이브러리 설치

> go get -u -d gocv.io/x/gocv
> cd $GOPATH/src/gocv.io/x/gocv
> make install

프론트엔드 모듈 설치

> git clone https://github.com/osamhack2020/WEB_GUARDIAN_GUARDIAN.git
> cd frontend
> yarn install

프로젝트 사용법 (Getting Started) 📕

가상 CCTV 환경 구축

> git clone https://github.com/gron1gh1/docker-rtsp-video-streaming.git
> cd docker-rtsp-video-streaming
> vi .env
# Modify .env file
> HOST_PORT={Port to be actually serviced}
> VIDEO_FILE ={Video File to be actually streamed}
> docker-compose up -d

데이터베이스 실행

> cd infra/mongo
# 데이터베이스 패스워드 설정
> echo MONGO_PW={set_password} > .env
> docker-compose up -d

프론트엔드 실행

> cd frontend
> yarn start

백엔드 실행

> cd backend
# 데이터베이스 패스워드 설정
> echo {set_password} > MONGO_PW
> go run cv_core.go cv_motion_liner.go cv_util.go http.go cv_motion.go cv_yolo.go mongo.go :8081

백엔드 실행 (Docker)

# OpenCV 라이브러리를 설치하지 않았을 때 쓰는 방법입니다.
# 데이터베이스 패스워드 설정
> cd WEB_GUARDIAN_GUARDIAN
> docker -v $PWD/backend:/ gocv/opencv 'go run cv_core.go cv_motion_liner.go cv_util.go http.go cv_motion.go cv_yolo.go mongo.go :8081'
> echo {set_password} > MONGO_PW
> go run cv_core.go cv_motion_liner.go cv_util.go http.go cv_motion.go cv_yolo.go mongo.go :8081

인터넷 브라우저 접속 http://localhost:8080

팀 정보 (Team Information) 👩‍👦‍👦

저작권 및 사용권 정보 (Copyleft / End User License) 👈

web_guardian_guardian's People

Contributors

gronxb avatar jamesoh3928 avatar jangseongho99 avatar me9min avatar seungy0 avatar skck0226 avatar skckzz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

web_guardian_guardian's Issues

YOLO 감지 계속 진행 시 튕김

움직임 감지하고 1초 간격으로 YoloDetect 고루틴에서 인식 시도하지만 YoloDetect 자체 함수가 2~3초가 걸리기 때문에 YoloChannel이 큐처럼 계속 쌓임. 그러면 실시간 로그 반응이 점점 느려지며 고루틴을 너무 많이 생성하게 되어 튕기는 것 같음.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.