A deep learning computer vision project built with OpenCV using YOLO (COCO dataset) object detector.
Social distancing is a method used to control the spread of contagious diseases. It implies that people physically distance themselves from one another, reducing close contact, and thereby reducing the spread of a contagious disease (such as the COVID-19 Disease). Social distancing is not a new concept, dating back to the fifth century, and has even been referenced in religious text such as the Bible.
• Social distancing plays crucial role in prevention of spread of Covid-19 virus.
- Object detection using the YOLO COCO model to detect only people in a video stream.
- Computes the pairwise distances between all detected people.
- Based on the computed distances, we determine whether social distancing rule is being violated or not.
- Clone the repo
$ git clone https://github.com/Hemant-Mulchandani/DOORI-Social-Distancing-Monitoring-Model.git
- Install dependencies
$ pip install -r requirements.txt
- Run the main social distancing detector file. (set display to 1 if you want to see output video as processing occurs)
$ python social_distancing_detector.py --input pedestrians.mp4 --output output.avi --display 0
-
Caution 💣
For most accurate results, you should calibrate your camera through intrinsic/extrinsic parameters so that you can map pixels to measurable units. An easier alternative(but less accurate) method would be to apply triangle similarity calibaration. Both of these methods can be used to map pixels to measurable units.
If you do not want/cannot apply camera calibration, you can still utilize the social distancing detector but you'll have to rely strictly on the pixel distances, which won't necessarily be accurate. For the sake of simplicity, this OpenCV Social Distancing detector implementation will rely on pixel distances. You can extend the implementation as you see fit though 😉. -
YOLO COCO weights
Github usually doesn't support files larger than 25 Mb.You can find the yolo weights in My Google Drive or can be downloaded from here. Download weight file and add file to the yolo-coco folder. -
GPU
Provided you already have OpenCV installed with NVIDIA GPU support, all you need to do is setUSE_GPU=True
in yourconfig.py
file.
- Open your terminal
- Change directory to where you have downloaded this code
- Install python3 if you have not, if installed already then it's ok!
- Run
python3 -m venv venv
to create a virtual environment named venv. - Run
source venv/bin/activate
to activate your environment! - Write
pip install -r requirements.txt
to install the python dependencies related to this project like opencv,numpy,scipy etc. - Run the command
time python social_distance_detector.py --input pedestrians.mp4 --output output.avi --display 1
to run your social distance detection project
You can find my google colab file here Social Distancing Detector Colab
• Raw Video as an input
After you run the last line of code or command, a window will pop up and after execution of the file a output.avi
file will be showing up in your directory like this:
• Processed Video as the output
If you are interested in helping or have something to suggest or just want to chat with me, you can reach me through the following media .
- 📧 Email - mesg4hemant@gmail.com
- 📌 Let's connect on LinkedIn.
- Inspiration from Adrian Rosebrock's OpenCV Social Distancing Detector
- Social Distancing
- Automatic social distance measurement
- Rohit Kumar Srivastava’s social distancing implementation
- Venkatagiri Ramesh’s social distancing project
- Utilize proper camera calibration.
- Apply top-down transformation of view angle.
- Improve the poeple detection process.
GNU Lesser General Public License v2.1 ©