μΉ΄λ©λΌλ‘ κ°μ²΄λ₯Ό μΆμ λ° νμ§νμ¬ μ¬μ©μμκ² μ€μκ°μΌλ‘ μλ¦Όμ μ£Όλ SMART CCTV μμ€ν
μ
λλ€.
λΌμ¦λ² 리νμ΄λ‘λΆν° μλ²λ‘ μμμ μ€μκ°μΌλ‘ λ°μμ κ°μ²΄ μΆμ λ° νμ§ λͺ¨λΈμ μ μ©νμμ΅λλ€.
- κ°μ²΄ μΆμ λ° νμ§
SORT/YOLO
: κ°μ²΄ μΆμ μκ³ λ¦¬μ¦μ SORTμyolov4-tiny
λ₯Ό μ¬μ©
- λ°μ΄ν°λ² μ΄μ€
Sqlite
- λΉλκΈ° μ²λ¦¬λ₯Ό ν΅ν μ€μκ° νμ§κ° μ μ₯
Ajax
,JQuery
- νΈμ μλ¦Ό
FCM token
λΌμ¦λ² 리 νμ΄μμ λμμμ 촬μνκ³ , μ΄λ₯Ό μλ²μμ λ°μ Object Detectionμ νλ νλ‘κ·Έλ¨μ λλ€.
- imagezmqλ₯Ό μ¬μ©νμ¬ νμ΄ μΉ΄λ©λΌλ‘ 촬μλ μμμ PC μλ²λ‘ κ°μ Έμ΅λλ€.
pi-server
: λΌμ¦λ² 리νμ΄μ λ€μ΄λ‘λν©λλ€. νμ΄ μΉ΄λ©λΌλ‘λΆν° 촬μλ μμμ μ§μ κ°μ Έμ PCμλ²λ‘ μ μ‘νλ μ½λμ λλ€.stream-server
: PCμ λ€μ΄λ‘λν©λλ€. λΌμ¦λ² 리νμ΄λ‘λΆν° λ°μ μμμ μΉμμ μ€νΈλ¦¬λ°νμ¬ λ³Ό μ μλλ‘ ν©λλ€.
νλ‘κ·Έλ¨μ μ€νμν€κΈ° μνμ¬ μλμ μ½λλ₯Ό ν°λ―Έλμ μ λ ₯νμ¬ λΌμ΄λΈλ¬λ¦¬λ€μ μ€μΉν©λλ€.
$ pip install -r requirements.txt
- server.pyλ₯Ό μ°μ μ μΌλ‘ PC, κ°μΈ λ ΈνΈλΆ, μλ²μμ μ€νν©λλ€.
- κ·Έ μ΄ν λΌμ¦λ² 리 νμ΄μμ cam.pyλ₯Ό μ€νν©λλ€.
- μλ²μ λΌμ¦λ² 리 νμ΄λ λμΌν λ€νΈμν¬ νκ²½(곡μ κΈ° λ±)μ μ‘΄μ¬ν΄μΌ ν©λλ€.
$ 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 # λμμ μ‘μΆ
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
- μ¬μ μ μμ±ν λͺ¨λΈμ μλ²μ μ μ₯νκ³ , μ€μκ°μΌλ‘ μΉ΄λ©λΌλ‘λΆν° μμ λλ μμμ ν΅ν΄ κ°μ²΄ νμ§ λ° μΆμ μ§νν©λλ€.
- κ°μ²΄κ° νμ§λλ©΄ μλ²λ FCMνΈμΆ, μμ μΊ‘μ³, λ°μ΄ν° μ²λ¦¬λ₯Ό μ§νν©λλ€.
- μ΄λ₯Ό ν΅ν΄ μ¬μ©μλ μ΄ λ€μ―κ°μ§ μλΉμ€λ₯Ό μ 곡λ°κ² λ©λλ€.
- νΈμ μλ¦Ό
- μ€μκ° μ€νΈλ¦¬λ°
- CCTVμ μ΄
- λ°μ΄ν° μκ°ν
- νμ§κ° νμΈ
- μ¬μ©μλ μΉμ¬μ΄νΈμ μ±μ ν΅ν΄ μ€μκ°μΌλ‘ CCTV νλ©΄μ νμΈν μ μμ΅λλ€.
- μ±μ μΈμ±λΈλΌμ°μ λ₯Ό ν΅ν΄ μΉνμ΄μ§μ μ μν μ μμ΅λλ€.
- μΌμλλ¬Ό μΆν ν¨ν΄μ μκ°ννμ¬ μ¬μ©μκ° μ μ ν μ‘°μΉλ₯Ό μ·¨ν μ μλλ‘ λ³΄μ‘°ν©λλ€.
- μ€μκ°μΌλ‘ νμ§κ°μ μ μ₯ν©λλ€.
- νμ§ κ°μ²΄ μ¬μ§, λ μ§ λ° μκ°, μ΄λ¦μ μ μ₯ν©λλ€.
- μ¬μ©μκ° νμ§κ°μ νμΈν μ μλλ‘ νμ¬ μλΉμ€μ λν μ λ’°λλ₯Ό μ 곡ν©λλ€.
- μ¬μ©μλ μΈμ λ μ§ νΈμμλ¦Όμ μ€μκ°μΌλ‘ μμ ν μ μκ³ μ±μ ν΅ν΄ μλ¦Ό λ΄μμ νμΈν μ μμ΅λλ€.
- 3λ¨κ³ μλ¦Όκ°λ μ‘°μ μ΄ κ°λ₯ν©λλ€.
- 0λ¨κ³: OFF
- 1λ¨κ³: κ°μ κ°μ²΄μ λν΄ ν λ²λ§ μλ¦Ό
- 2λ¨κ³: νλ μ λ΄μ κ°μ²΄κ° νμ§λλ ν κ³μ μλ¦Ό