All Projects → AsRaNi1 → live-cctv

AsRaNi1 / live-cctv

Licence: MIT License
To detect any reasonable change in a live cctv to avoid large storage of data. Once, we notice a change, our goal would be track that object or person causing it. We would be using Computer vision concepts. Our major focus will be on Deep Learning and will try to add as many features in the process.

Programming Languages

python
139335 projects - #7 most used programming language
Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to live-cctv

ffcnn
ffcnn is a cnn neural network inference framework, written in 600 lines C language.
Stars: ✭ 50 (+117.39%)
Mutual labels:  yolo, darknet, yolov3
lightDenseYOLO
A real-time object detection app based on lightDenseYOLO Our lightDenseYOLO is the combination of two components: lightDenseNet as the CNN feature extractor and YOLO v2 as the detection module
Stars: ✭ 20 (-13.04%)
Mutual labels:  yolo, darknet, yolov3
Yolo annotation tool
Annotation tool for YOLO in opencv
Stars: ✭ 17 (-26.09%)
Mutual labels:  yolo, darknet, yolov3
Bmw Yolov4 Training Automation
This repository allows you to get started with training a state-of-the-art Deep Learning model with little to no configuration needed! You provide your labeled dataset or label your dataset using our BMW-LabelTool-Lite and you can start the training right away and monitor it in many different ways like TensorBoard or a custom REST API and GUI. NoCode training with YOLOv4 and YOLOV3 has never been so easy.
Stars: ✭ 533 (+2217.39%)
Mutual labels:  yolo, darknet, yolov3
darknet
php ffi darknet
Stars: ✭ 21 (-8.7%)
Mutual labels:  yolo, darknet, yolov3
Mobilenet Yolo
A caffe implementation of MobileNet-YOLO detection network
Stars: ✭ 825 (+3486.96%)
Mutual labels:  yolo, darknet, yolov3
Mobilenet Yolo
MobileNetV2-YoloV3-Nano: 0.5BFlops 3MB HUAWEI P40: 6ms/img, YoloFace-500k:0.1Bflops 420KB🔥🔥🔥
Stars: ✭ 1,566 (+6708.7%)
Mutual labels:  yolo, darknet, yolov3
car-crash-accident
Car Crash Accident Project
Stars: ✭ 14 (-39.13%)
Mutual labels:  image-classification, darknet, yolov3
Deep-Learning-with-GoogleColab
Deep Learning Applications (Darknet - YOLOv3, YOLOv4 | DeOldify - Image Colorization, Video Colorization | Face-Recognition) with Google Colaboratory - on the free Tesla K80/Tesla T4/Tesla P100 GPU - using Keras, Tensorflow and PyTorch.
Stars: ✭ 63 (+173.91%)
Mutual labels:  image-classification, darknet, yolov3
Yolo person detect
person detect based on yolov3 with several Python scripts
Stars: ✭ 212 (+821.74%)
Mutual labels:  yolo, darknet, yolov3
Yolo3 4 Py
A Python wrapper on Darknet. Compatible with YOLO V3.
Stars: ✭ 504 (+2091.3%)
Mutual labels:  yolo, darknet, yolov3
go-darknet
Go bindings for Darknet (YOLO v4 / v3)
Stars: ✭ 56 (+143.48%)
Mutual labels:  yolo, darknet, yolov3
Alturos.yolo
C# Yolo Darknet Wrapper (real-time object detection)
Stars: ✭ 308 (+1239.13%)
Mutual labels:  yolo, image-classification, yolov3
JSON2YOLO
Convert JSON annotations into YOLO format.
Stars: ✭ 222 (+865.22%)
Mutual labels:  yolo, darknet, yolov3
Tensorflow 2.x Yolov3
YOLOv3 implementation in TensorFlow 2.3.1
Stars: ✭ 300 (+1204.35%)
Mutual labels:  yolo, darknet, yolov3
Imagenet
Trial on kaggle imagenet object localization by yolo v3 in google cloud
Stars: ✭ 56 (+143.48%)
Mutual labels:  yolo, image-classification, yolov3
Pine
🌲 Aimbot powered by real-time object detection with neural networks, GPU accelerated with Nvidia. Optimized for use with CS:GO.
Stars: ✭ 202 (+778.26%)
Mutual labels:  yolo, darknet, yolov3
Alturos.ImageAnnotation
A collaborative tool for labeling image data for yolo
Stars: ✭ 47 (+104.35%)
Mutual labels:  yolo, image-classification, yolov3
object-tracking
Multiple Object Tracking System in Keras + (Detection Network - YOLO)
Stars: ✭ 89 (+286.96%)
Mutual labels:  yolo, darknet, yolov3
vrpdr
Deep Learning Applied To Vehicle Registration Plate Detection and Recognition in PyTorch.
Stars: ✭ 36 (+56.52%)
Mutual labels:  yolo, yolov3

LIVE-CCTV

To detect any reasonable change in a live cctv to avoid large storage of data. Once, we notice a change, our goal would be track that object or person causing it. We would be using Computer vision concepts. Our major focus will be on Deep Learning and will try to add as many features in the process.

image

TABLE OF CONTENTS

About The Project

Aim: The project aims at storing only relevant data in a CCTV camera (in this case a traffic camera) to prevent storage loss and also detects the object that is causing the change in a frame and classifies them.

Description: The project uses Yolov3 pre-trained weights and config file. It calculates the distance between 2 consecutive frames of a video and then records if the change found is relevant. It further uses the OpenCV library's DNN module to load the Yolov3 weights and then classifies the object in front of the camera, also encloses the object detected with a bounding box

Tech Stack

The project uses:

File Structure

MAIN BRANCH
📦Notes                                    -Contains the notes for reference 
 ┣ 📜CNN (Eklavya).pdf                         -Notes on Convolutional Neural Networks
 ┣ 📜Eklavya (Linear Algebra).pdf              -Notes on Linear Algebra
 ┣ 📜Eklavya (Neural Networks).pdf             -Notes on Basics of Neural Networks
 ┗ 📜Handwritten_Notes.pdf                     -Handwritten notes on all topics
 
📦Live_CCTV_Cosine
 ┣📜Bounding_Boxes.py                           -Python file, contains function for Object Classification, Labeling them and further bounding them
 ┣📜Cos_sim.py                                  -Python file, Containing the function to calculate Cosine Similarity between 2 consecutive frames of a video
 ┣📜Main.py                                     -The Main Python file that exexutes the code
 ┣📜labels.txt                                  -Contains the labels for the objects that it detects
 ┣📜yolov3-tiny.weights                         -Pre-trained Yolov3 weights
 ┗📜yolov3.cfg                                  -Pre-trained Yolov3 Configuration file
 
 
 📦assets
 ┣ 📜LiveCCTV_Report.pdf                       -Report on the project
 ┣ 📜Output.mp4                                -Output video from test.mp4
 ┗ 📜result.png                                -Result on an image
 
 
┣📜Bounding_Boxes.py                           -Python file, contains function for Object Classification, Labeling them and further bounding them
┣📜Euclidean_dist.py                           -Python file, Containing the function to calculate Euclidean Distance between 2 consecutive frames of a video
┣📜Main.py                                     -The Main Python file that exexutes the code
┣📜Read.me.txt                                 -Contains the instructions
┣📜coco.txt                                    -Contains the labels for the objects that it detects
┣📜test.mp4                                    -Testing video
┣📜yolov3-tiny.weights                         -Pre-trained Yolov3 weights
┗📜yolov3.cfg                                  -Pre-trained Yolov3 Configuration file

Approach

The approach of this project is to basically record relevant changes in a video. By checking the similarity between 2 consecutive frames of a video we can decide wether a change is relevant or no based on the magnitude of similarity.

Theory

Neural Networks

A neural network is a network or circuit of neurons, or in a modern sense, an artificial neural network, composed of artificial neurons or nodes.

There are different types of Neural Networks:

  • Standard Neural Networks
  • Convolutional Neural Networks

Euclidean distance

It is a method to calcuate the distance between 2 vectors in a given space. In the project Euclidean distance is used to calculate distance between image vectors of 2 consecutive frames of the video. image

Yolo

The Yolo algorithm or You Only Look Once algorithm, is an object classification algorithm that divides the image into small rids and applies object classification to each of them. The algorithm then assigns bounding boxes to the objects which further uses NMS(Non-Max Supression).

Flowchart for code execution

Flowchart

Getting Started

Prerequisites

Install these on the conda prompt:

  • Python 3 (conda already consists of Python)
  • OpenCV: In conda prompt type
    conda install -c conda-forge opencv
    
  • numpy
    conda install -c anaconda numpy
    

Installation

Clone the repo

git clone https://github.com/AsRaNi1/live-cctv.git

Usage

After cloning the repo, open the file and run the Main file in each of the folders in the Command line Example:

$ Python Main.py

After running the main file, it will ask for the paths, so enter the paths as asked.

Input video file path:
Output path:

Results and Demo

The project clearly identifies an object in the video frame and assigns a bounding box to it along with labels i.e classifying the object, it also records the relevant motion taking place in the video. The video is saved in the Path folder.

Output.mp4

result

Future Work

The motion tracking algorithm the current project uses is derived from Eucidean diatnce, but this can further be bettered by the use of feature vectors i.e adding a Conv-net and then linear regression to the Euclidean distance found between 2 consecutive frames of a video. Further, the project can be enhanced by making it a Realtime car tracker which will not only be able to identify defaulters while driving but will also be able to save their numberplate and then we will be able to track their vehicle using out program in various CCTV's:

Troubleshooting

  • Common errors while configuring the project:
    • OpenCV not installed in conda
    • numpy not installed in conda
    • Using an older Python version
    • One can change the threshold vale for movement detection, so choose a suitable one.
    • When giving the output path in command line be sure to add .avi, Recording.avi

Mentors

A very special thanks to the mentors!!

Contributors

Acknowledgements and Resources

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].