kookeej / Animal-Detecting-and-Tracking-Smart-CCTV

CAPSTONE DESIGN πŸ₯ˆSilverπŸ₯ˆ λ†μž‘λ¬Ό ν”Όν•΄ 예방 야생동물 탐지 SMART CCTV

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[CAPSTONE DESIGN]λ†μž‘λ¬Ό ν”Όν•΄ 예방 야생동물 탐지 SMART CCTV μ‹œμŠ€ν…œ

πŸ“’ CAPSTONE DESIGNμ—μ„œ 은상πŸ₯ˆμ„ μˆ˜μƒν•œ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€.

μΉ΄λ©”λΌλ‘œ 객체λ₯Ό 좔적 및 νƒμ§€ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ μ‹€μ‹œκ°„μœΌλ‘œ μ•Œλ¦Όμ„ μ£ΌλŠ” SMART CCTV μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
λΌμ¦ˆλ² λ¦¬νŒŒμ΄λ‘œλΆ€ν„° μ„œλ²„λ‘œ μ˜μƒμ„ μ‹€μ‹œκ°„μœΌλ‘œ 받아와 객체 좔적 및 탐지 λͺ¨λΈμ„ μ μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.


1. Technology

  • 객체 좔적 및 탐지
    • SORT/YOLO: 객체 좔적 μ•Œκ³ λ¦¬μ¦˜μ€ SORT와 yolov4-tinyλ₯Ό μ‚¬μš©
  • λ°μ΄ν„°λ² μ΄μŠ€
    • Sqlite
  • 비동기 처리λ₯Ό ν†΅ν•œ μ‹€μ‹œκ°„ 탐지값 μ €μž₯
    • Ajax, JQuery
  • ν‘Έμ‹œ μ•Œλ¦Ό
    • FCM token

image


2. 싀행방법

라즈베리 νŒŒμ΄μ—μ„œ λ™μ˜μƒμ„ μ΄¬μ˜ν•˜κ³ , 이λ₯Ό μ„œλ²„μ—μ„œ λ°›μ•„ Object Detection을 ν•˜λŠ” ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.

  • imagezmqλ₯Ό μ‚¬μš©ν•˜μ—¬ 파이 μΉ΄λ©”λΌλ‘œ 촬영된 μ˜μƒμ„ PC μ„œλ²„λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€.
  • pi-server: λΌμ¦ˆλ² λ¦¬νŒŒμ΄μ— λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€. 파이 μΉ΄λ©”λΌλ‘œλΆ€ν„° 촬영된 μ˜μƒμ„ 직접 가져와 PCμ„œλ²„λ‘œ μ „μ†‘ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€.
  • stream-server: PC에 λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€. λΌμ¦ˆλ² λ¦¬νŒŒμ΄λ‘œλΆ€ν„° 받은 μ˜μƒμ„ μ›Ήμ—μ„œ μŠ€νŠΈλ¦¬λ°ν•˜μ—¬ λ³Ό 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

2.1. Gettting started

ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•˜μ—¬ μ•„λž˜μ˜ μ½”λ“œλ₯Ό 터미널에 μž…λ ₯ν•˜μ—¬ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ μ„€μΉ˜ν•©λ‹ˆλ‹€.

$ pip install -r requirements.txt

2.2. How to use

⚠ μ£Όμ˜μ‚¬ν•­

  • server.pyλ₯Ό μš°μ„ μ μœΌλ‘œ PC, 개인 λ…ΈνŠΈλΆ, μ„œλ²„μ—μ„œ μ‹€ν–‰ν•©λ‹ˆλ‹€.
  • κ·Έ 이후 라즈베리 νŒŒμ΄μ—μ„œ cam.pyλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  • μ„œλ²„μ™€ 라즈베리 νŒŒμ΄λŠ” λ™μΌν•œ λ„€νŠΈμ›Œν¬ ν™˜κ²½(곡유기 λ“±)에 μ‘΄μž¬ν•΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ“Œ Server

optional arguments
$ python server.py -h
usage: server.py [-h] [--input INPUT] [--weights WEIGHTS]
                 [--configure CONFIGURE] [--label LABEL]
                 [--confidence CONFIDENCE] [--threshold THRESHOLD]
                 [--frame FRAME]

Server gets Raspberry pi's capture through zmq

optional arguments:
  -h, --help            show this help message and exit
  --input INPUT         input video
  --weights WEIGHTS     yolo weights
  --configure CONFIGURE
                        yolo configure
  --label LABEL         coco class label
  --confidence CONFIDENCE
                        minimum confidence
  --threshold THRESHOLD
                        minimum threshold
  --frame FRAME         threshold of frame count
$ python server.py --input {input}

e.g. python server.py              # ν˜„μž¬ pc에 μ—°κ²°λœ μ›ΉμΊ μœΌλ‘œ μ†‘μΆœ
    python server.py --input pi   # piλ‘œλΆ€ν„° λ™μ˜μƒ λ°›μ•„ μ†‘μΆœ
    python server.py --input data/car_on_road.mp4 # λ™μ˜μƒ μ†‘μΆœ

πŸ“Œ Raspberry Pi

optional arguments
python cam.py -h
usage: cam.py [-h] --ip IP

Raspberry pi passes its video capture to server

optional arguments:
  -h, --help  show this help message and exit
  --ip IP     server IP that we want to pass
python cam.py --ip {server_ip}

e.g. python cam.py --ip 192.168.0.19
#### πŸ“Œ μ‹€μ œ μ‹€ν–‰
python server.py --weights data/yolov4_tiny_class4.weights --configure data/yolov4_tiny_class4.cfg --label data/yolo_class4.names --input pi

3. Service Architecture

image

  • 사전에 μƒμ„±ν•œ λͺ¨λΈμ„ μ„œλ²„μ— μ €μž₯ν•˜κ³ , μ‹€μ‹œκ°„μœΌλ‘œ μΉ΄λ©”λΌλ‘œλΆ€ν„° μˆ˜μ‹ λ˜λŠ” μ˜μƒμ„ 톡해 객체 탐지 및 좔적 μ§„ν–‰ν•©λ‹ˆλ‹€.
  • 객체가 νƒμ§€λ˜λ©΄ μ„œλ²„λŠ” FCM호좜, μ˜μƒ 캑쳐, 데이터 처리λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.
  • 이λ₯Ό 톡해 μ‚¬μš©μžλŠ” 총 닀섯가지 μ„œλΉ„μŠ€λ₯Ό μ œκ³΅λ°›κ²Œ λ©λ‹ˆλ‹€.
    • ν‘Έμ‹œ μ•Œλ¦Ό
    • μ‹€μ‹œκ°„ 슀트리밍
    • CCTVμ œμ–΄
    • 데이터 μ‹œκ°ν™”
    • 탐지값 확인

3.1 μ‹€μ‹œκ°„ 슀트리밍

  • μ‚¬μš©μžλŠ” μ›Ήμ‚¬μ΄νŠΈμ™€ 앱을 톡해 μ‹€μ‹œκ°„μœΌλ‘œ CCTV 화면을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 앱은 μΈμ•±λΈŒλΌμš°μ €λ₯Ό 톡해 μ›ΉνŽ˜μ΄μ§€μ— 접속할 수 μžˆμŠ΅λ‹ˆλ‹€.
    streaming_cctv_web

3.2. 데이터 μ‹œκ°ν™”

  • 야생동물 μΆœν˜„ νŒ¨ν„΄μ„ μ‹œκ°ν™”ν•˜μ—¬ μ‚¬μš©μžκ°€ μ μ ˆν•œ 쑰치λ₯Ό μ·¨ν•  수 μžˆλ„λ‘ λ³΄μ‘°ν•©λ‹ˆλ‹€.
    web_datachart

3.3. 탐지값 확인

  • μ‹€μ‹œκ°„μœΌλ‘œ 탐지값을 μ €μž₯ν•©λ‹ˆλ‹€.
  • 탐지 객체 사진, λ‚ μ§œ 및 μ‹œκ°„, 이름을 μ €μž₯ν•©λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ 탐지값을 확인할 수 μžˆλ„λ‘ ν•˜μ—¬ μ„œλΉ„μŠ€μ— λŒ€ν•œ 신뒰도λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
    web_storage

3.4. μ‹€μ‹œκ°„ ν‘Έμ‹œμ•Œλ¦Ό 및 3단계 μ•Œλ¦Ό 강도 쑰절

  • μ‚¬μš©μžλŠ” μ–Έμ œλ“ μ§€ ν‘Έμ‹œμ•Œλ¦Όμ„ μ‹€μ‹œκ°„μœΌλ‘œ μˆ˜μ‹ ν•  수 있고 앱을 톡해 μ•Œλ¦Ό 내역을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 3단계 μ•Œλ¦Όκ°•λ„ 쑰절이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • 0단계: OFF
    • 1단계: 같은 객체에 λŒ€ν•΄ ν•œ 번만 μ•Œλ¦Ό
    • 2단계: ν”„λ ˆμž„ 내에 객체가 νƒμ§€λ˜λŠ” ν•œ 계속 μ•Œλ¦Ό


4. Reference

About

CAPSTONE DESIGN πŸ₯ˆSilverπŸ₯ˆ λ†μž‘λ¬Ό ν”Όν•΄ 예방 야생동물 탐지 SMART CCTV


Languages

Language:Python 60.2%Language:HTML 33.7%Language:JavaScript 4.2%Language:CSS 1.9%