varungupta31 / dashcam_anonymizer

Code to Blur Human Faces and Vehicle License Plates in Video and Images using a SoTA Object Detection model YOLOv8
MIT License
29 stars 4 forks source link
ai anonymization autonomous-driving blur blur-image dataset-creation driving-data ethics-in-ai face-detection hide indian-driving-dataset license-plate-recognition privacy privacy-protection python robotics self-driving-car yolov8

Dashcam Anonymizer 🕵🏻‍♂️

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.

Setup 🔩

Clone this repo by

git clone https://github.com/varungupta31/dashcam_anonymizer.git

A Convenient Script Has Been Provided To Setup the Repository 👨🏽‍💻

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!

Blurring Images in a Directory 📷

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]

Blurring Videos in a Directory 📹

Similar approach as above, now the command would be

python blur_videos.py --config configs/vid_blur.yaml

Note:

  1. If you run into mysterious libgc errors, what worked for me was to also install the opencv via Conda. PIP installation, leaves out some libgc libraries, which causes issues in the videowriter codecs.
  2. The configuration files are slightly different for videos and images. Make sure to choose and edit the correct ones depending upon the modality.
  3. 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.
  4. The blur_videos.py script currently expects the videos to be named numerically [1.mp4, 111.mp4] [Updates 2024, not anymore - name file as you wish]

Please Note 📝

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,

"Buy Me A Coffee"