Pytorch version of - https://github.com/WaqasSultani/AnomalyDetectionCVPR2018
In this section, I list the future improvements I intend to add to this repository. Please feel free to recommend new features. I also happily accept PR's! 😏
- I3D feature extraction
- MFNET feature extraction
- AUC is not exactly as reported in the paper (0.70 vs 0.75) - might be affected by the weights of C3D
conda env create -f environment.yml
conda activate adCVPR18
C3D Weights I couldn't upload here the weights for the C3D model because the file is too big, but it can be found here: https://github.com/DavideA/c3d-pytorch
Can be downloaded from:
https://drive.google.com/drive/folders/1rhOuAdUqyJU4hXIhToUnh5XVvYjQiN50?usp=sharing
https://drive.google.com/file/d/1kQAvOhtL-sGadblfd3NmDirXq8vYQPvf/view?usp=sharing
https://drive.google.com/file/d/17wdy_DS9UY37J9XTV5XCLqxOFgXiv3ZK/view
Check out exps/ for for trained models on the pre-computed features
Download the dataset from: https://github.com/WaqasSultani/AnomalyDetectionCVPR2018 Arguments:
- dataset_path - path to the directory containing videos to extract features for (the dataset is available for download above)
- model_type - which type of model to use for feature extraction (necessary in order to choose the correct pre-processing)
- pretrained_3d - path to the 3D model to use for feature extraction
python feature_extractor.py --dataset_path "path-to-dataset" --model_type "fe-model-eg-c3d" --pretrained_3d "path-to-pretrained-fe"
Arguments:
- features_path - path to the directory containing the extracted features (pre-computed features are available for download above, or supply your own features extracted from the previous stage)
- annotation_path - path to the annotations file (Available in this repository as
Train_annotations.txt
python TrainingAnomalyDetector_public.py --features_path "path-to-dataset" --annotation_path "path-to-train-annos"
Arguments:
- features_path - path to the directory containing the extracted features (pre-computed features are available for download above, or supply your own features extracted from the previous stage)
- annotation_path - path to the annotations file (Available in this repository as
Test_annotations.txt
- model_path - path to the trained anomaly detection model
python generate_ROC.py --features_path "path-to-dataset" --annotation_path "path-to-annos" --model_path "path-to-model"
Using my pre-trained model after 40K iterations, I achieve this following performance on the test-set. I'm aware that the current model doesn't achieve AUC of 0.75 as reported in the original paper. This can be caused by different weights of the C3D model.
Arguments:
- feature_extractor - path to the 3D model to use for feature extraction
- feature_method - which type of model to use for feature extraction (necessary in order to choose the correct pre-processing)
- ad_model - path to the trained anomaly detection model
- n_segments - the number of segments to chunk the video to (the original paper uses 32 segments)
python video_demo.py --feature_extractor "path-to-pretrained-fe" --feature_method "fe-method" --ad_model "path-to-pretrained-ad-model" --n_segments "number-of-segments"
The GUI lets you load a video and run the Anomaly Detection code (including feature extraction) and output a video with a graph of the Anomaly Detection prediction below.
Arguments:
- feature_extractor - path to the 3D model to use for feature extraction
- feature_method - which type of model to use for feature extraction (necessary in order to choose the correct pre-processing)
- ad_model - path to the trained anomaly detection model
- clip_length - the length of each video clip (in frames)
python AD_live_prediction.py --feature_extractor "path-to-pretrained-fe" --feature_method "fe-method" --ad_model "path-to-pretrained-ad-model" --clip_length "number-of-frames"
The GUI lets you load a video and run the Anomaly Detection code (including feature extraction) and output a video with a graph of the Anomaly Detection prediction below.
*Contrbuted by Peter Overbury of Sussex Universty IISP Group
@misc{anomaly18cvpr-pytorch,
author = "Eitan Kosman",
title = "Pytorch implementation of Real-World Anomaly Detection in Surveillance Videos",
howpublished = "\url{https://github.com/ekosman/AnomalyDetectionCVPR2018-Pytorch}",
note = "Accessed: 20xx-xx-xx"
}
Q: video_demo doesn't show videos
A: Downlaod and install LAVFilters: http://forum.doom9.org/showthread.php?t=156191