All Projects → antonilo → Unsupervised_detection

antonilo / Unsupervised_detection

Licence: mit
An Unsupervised Learning Framework for Moving Object Detection From Videos

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Unsupervised detection

Variational Autoencoder
Variational autoencoder implemented in tensorflow and pytorch (including inverse autoregressive flow)
Stars: ✭ 807 (+480.58%)
Mutual labels:  deep-neural-networks, unsupervised-learning
Cnn Paper2
🎨 🎨 深度学习 卷积神经网络教程 :图像识别,目标检测,语义分割,实例分割,人脸识别,神经风格转换,GAN等🎨🎨 https://dataxujing.github.io/CNN-paper2/
Stars: ✭ 77 (-44.6%)
Mutual labels:  object-detection, deep-neural-networks
Medicaldetectiontoolkit
The Medical Detection Toolkit contains 2D + 3D implementations of prevalent object detectors such as Mask R-CNN, Retina Net, Retina U-Net, as well as a training and inference framework focused on dealing with medical images.
Stars: ✭ 917 (+559.71%)
Mutual labels:  object-detection, deep-neural-networks
Saliency
TensorFlow implementation for SmoothGrad, Grad-CAM, Guided backprop, Integrated Gradients and other saliency techniques
Stars: ✭ 648 (+366.19%)
Mutual labels:  object-detection, deep-neural-networks
Ssd Pytorch
SSD: Single Shot MultiBox Detector pytorch implementation focusing on simplicity
Stars: ✭ 107 (-23.02%)
Mutual labels:  object-detection, deep-neural-networks
Yolo Tf2
yolo(all versions) implementation in keras and tensorflow 2.4
Stars: ✭ 695 (+400%)
Mutual labels:  object-detection, deep-neural-networks
Channel Pruning
Channel Pruning for Accelerating Very Deep Neural Networks (ICCV'17)
Stars: ✭ 979 (+604.32%)
Mutual labels:  object-detection, deep-neural-networks
Fire Detection Cnn
real-time fire detection in video imagery using a convolutional neural network (deep learning) - from our ICIP 2018 paper (Dunnings / Breckon) + ICMLA 2019 paper (Samarth / Bhowmik / Breckon)
Stars: ✭ 340 (+144.6%)
Mutual labels:  object-detection, deep-neural-networks
Opentpod
Open Toolkit for Painless Object Detection
Stars: ✭ 106 (-23.74%)
Mutual labels:  object-detection, deep-neural-networks
Tensorflow2.0 Examples
🙄 Difficult algorithm, Simple code.
Stars: ✭ 1,397 (+905.04%)
Mutual labels:  object-detection, deep-neural-networks
Vehicle counting tensorflow
🚘 "MORE THAN VEHICLE COUNTING!" This project provides prediction for speed, color and size of the vehicles with TensorFlow Object Counting API.
Stars: ✭ 582 (+318.71%)
Mutual labels:  object-detection, deep-neural-networks
Gpnd
Generative Probabilistic Novelty Detection with Adversarial Autoencoders
Stars: ✭ 112 (-19.42%)
Mutual labels:  deep-neural-networks, adversarial-learning
Tracking With Darkflow
Real-time people Multitracker using YOLO v2 and deep_sort with tensorflow
Stars: ✭ 515 (+270.5%)
Mutual labels:  object-detection, deep-neural-networks
Bmw Tensorflow Training Gui
This repository allows you to get started with a gui based training a State-of-the-art Deep Learning model with little to no configuration needed! NoCode training with TensorFlow has never been so easy.
Stars: ✭ 736 (+429.5%)
Mutual labels:  object-detection, deep-neural-networks
Yolo2 Pytorch
PyTorch implementation of the YOLO (You Only Look Once) v2
Stars: ✭ 426 (+206.47%)
Mutual labels:  object-detection, deep-neural-networks
Tensorflow object counting api
🚀 The TensorFlow Object Counting API is an open source framework built on top of TensorFlow and Keras that makes it easy to develop object counting systems!
Stars: ✭ 956 (+587.77%)
Mutual labels:  object-detection, deep-neural-networks
Adversarial Examples Pytorch
Implementation of Papers on Adversarial Examples
Stars: ✭ 293 (+110.79%)
Mutual labels:  deep-neural-networks, adversarial-learning
Yolo V2 Pytorch
YOLO for object detection tasks
Stars: ✭ 302 (+117.27%)
Mutual labels:  object-detection, deep-neural-networks
Self Supervised Relational Reasoning
Official PyTorch implementation of the paper "Self-Supervised Relational Reasoning for Representation Learning", NeurIPS 2020 Spotlight.
Stars: ✭ 89 (-35.97%)
Mutual labels:  deep-neural-networks, unsupervised-learning
Deep learning object detection
A paper list of object detection using deep learning.
Stars: ✭ 10,334 (+7334.53%)
Mutual labels:  object-detection, deep-neural-networks

Unsupervised Moving Object Detection

This repo contains the implementation of the method described in the paper

Unsupervised Moving Object Detection via Contextual Information Separation

Published in the International Conference of Computer Vision and Pattern Recognition (CVPR) 2019.

For a brief overview, check out the project VIDEO!

If you use this code in academic context, please cite the following publication:

@inproceedings{yang_loquercio_2019,
  title={Unsupervised Moving Object Detection via Contextual Information Separation},
  author={Yang, Yanchao and Loquercio, Antonio and Scaramuzza, Davide and Soatto, Stefano},
  booktitle = {Conference on Computer Vision and Pattern Recognition {(CVPR)}}
  year={2019}
}

Visit the project webpage for more details. For any question, please contact Antonio Loquercio.

Running the code

Prerequisites

This code was tested with the following packages. Note that previous version of them might work but are untested.

  • Ubuntu 18.04
  • Python3
  • Tensorflow 1.13.1
  • python-opencv
  • CUDA 10.1
  • python-gflags
  • Keras 2.2.4

Datasets

We have used three publicly available dataset for our experiments:

DAVIS 2016 | FBMS59 | SegTrackV2

The datasets can be used without any pre-processing.

Downloads

We generate optical flows with a tensorflow implementation of PWCNet, which is an adapted version of this repository. To compute flows, please download the model checkpoint of PWCNet we used for our experiments, available at this link.

Additionally, you can find our trained models in the project webpage.

Training

Once you have downloaded the datasets (at least one of the three), you can start training the model. All the required flags (and their defaults) are explained in the common_flags.py file.

The folder scripts contains an example of how to train a model on the DAVIS dataset. To start training, edit the file train_DAVIS2016.sh and add there the paths to the dataset and to the PWCNet checkpoint. After that you should be able to start training with the following command:

bash ./scripts/train_DAVIS2016.sh

You can monitor the training process in tensorboard running the following command

tensorboard --logdir=/path/to/tensorflow/log/files

and by opening https://localhost:6006 on your browser.

To speed up training, we pre-trained the recover on the task of optical flow in-painting on box-shaped occlusions. We used the Flying Chair dataset for this training. The resulting checkpoint is used to initialize the recover network before the adversarial training. This checkpoint can be found together with our trained models in the project webpage. Although not strictly required, the recover pre-training significantly speeds up model convergence.

Testing

You can test a trained model with the function test_generator.py. An example is provided for the DAVIS 2016 dataset in the scripts folder. To run it, edit the file test_DAVIS2016_raw.sh with the paths to the dataset, the optical flow and the model checkpoint. After that, you can test the model with the following command:

bash ./scripts/test_DAVIS2016_raw.sh

Post-Processing

Raw predictions are post-processed to increase model accuracy. In particular, the post-processing is composed of two steps: (i) averaging the predictions over different time shifts between the first and second image, as well as for multiple central crops, and (ii) Conditional Random Fields (CRF) of the average predictions and best candidate mask selection.

To generate predictions over multiple time steps and crops for the DAVIS 2016 dataset, please use the generate_buffer_DAVIS2016.sh script. This can be done by editing the script to add the path to the dataset, the PWCNet and the trained model checkpoints.

After predictions buffers are generated, please use the post-processing script to compute refined predictions.

Pre-Computed Results

Our final, post-processed results are available for the DAVIS 2016, FBMS59 and SegTrackv2 datasets at this link. In case you will evaluate on other datasets and would like to share the predictions please contact us!

FAQ

The training loss seems symmetric for the mask and its complementary. How do you tell which one is the foreground and which the background?

For the training process it is very important to keep this symmetry. Without it the optimum of the training process is not guaranteed to be the separation of independent components anymore. However, to detect whether the masks cover the object or the background, we use the heuristic that background usually occupies more than two boundaries of the image. You can find the corresponding implementation of this heuristic in the function disambiguate_forw_back.

Acknowledgment

Some of the code belonging to this project has been inspired by the following repositories SfMLearner, TFOptflow, Generative_Inpaiting. We would like to thank all the authors of these repositories.

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].