This repository blurs human faces and license plates in images and videos using a state-of-the-art object detection model, YOLOv8 by Ultralytics, and is fine-tuned using images from the OpenImagesDatasetV7.
Clone this repo by
git clone https://github.com/varungupta31/dashcam_anonymizer.git
Activate any Python Environment of Your Preference (conda
recommended)
Preferably with Python3.10+
🐍
$ cd dashcam_anonymizer
$ chmod +x setup.sh
# Always be careful runnning .sh files, feel free to browse the contents of setup.sh before running
# The setup.sh file downloads relevant libraries and download the custom YOLO model as well (an alternate link if provided below as well)
$ ./setup.sh
[2024 🗞️] The model is now also hosted on a Google Drive, enabling the convenient gdown
downloads!
To blur all images in a directory,
Download the model from here and move it to model
dir.
Update the configs/img_blur.yaml
as required, and run the following command
python blur_images.py --config configs/img_blur.yaml
The resulting blur images will be stored in the directory specified in the YAML.
Note: annot_txt
folder will contain the YOLO detections in .txt
format, converted to the VOC
bounding-box format.
[2024 Updated]
Similar approach as above, now the command would be
python blur_videos.py --config configs/vid_blur.yaml
Note:
- If you run into mysterious
libgc
errors, what worked for me was to also install theopencv
viaConda
. PIP installation, leaves out somelibgc
libraries, which causes issues in the videowriter codecs. - The configuration files are slightly different for videos and images. Make sure to choose and edit the correct ones depending upon the modality.
- This is designed to process all the contents in a given directory at once. If the blurring is to be re-run, make sure to delete the
runs
directory, as it may lead to new file names within the runs, which will cause errors. The[Updates 2024, not anymore - name file as you wish]blur_videos.py
script currently expects the videos to be named numerically [1.mp4, 111.mp4]
- Will this do a 100% perfect job? --> Maybe not.
- Some specific angles pose a challenge in perfect detections - especially with faces!
- Is there scope for improvement in terms of optimization? --> There always is.
- Good to question it and call out, even better to help me improve it :)
- This project has aged somewhat, but I still feel it does a pretty decent job compared to what's out there.
- If you feel the implementation is outdated, you may still benefit from the model I trained :)
- If you end up improving the YOLO model, please raise an issue and I'll be glad to incorporate it with due credits.
If this repository helped you in a research project, please consider to cite and ⭐️ this Repository!
@software{dashcam_anonymizer,
author = {Varun Gupta},
month = {8},
title = {{Dashcam Anonymizer}},
url = {https://github.com/varungupta31/dashcam_anonymizer},
version = {1.0.0},
year = {2023}
}
and please consider,