All Projects → ruotianluo → Faster Rcnn Densecap Torch

ruotianluo / Faster Rcnn Densecap Torch

Licence: mit
Faster-RCNN based on Densecap(deprecated)

Projects that are alternatives of or similar to Faster Rcnn Densecap Torch

Atom notebook
Atom notebook
Stars: ✭ 85 (-2.3%)
Mutual labels:  jupyter-notebook
Airbnb Dynamic Pricing Optimization
[BA project] Dynamic Pricing Optimization for Airbnb listing to optimize yearly profit for host. Use Clustering for competitive analysis, kNN regression for demand forecasting, and find dynamic optimal price with Optimization model.
Stars: ✭ 85 (-2.3%)
Mutual labels:  jupyter-notebook
Pytorch
PyTorch tutorials A to Z
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Caffeonspark
Distributed deep learning on Hadoop and Spark clusters.
Stars: ✭ 1,272 (+1362.07%)
Mutual labels:  jupyter-notebook
Lstm autoencoder classifier
An LSTM Autoencoder for rare event classification
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Lstm chem
Implementation of the paper - Generative Recurrent Networks for De Novo Drug Design.
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Quantum programming tutorial
Gamified tutorial for the QISKit quantum SDK
Stars: ✭ 86 (-1.15%)
Mutual labels:  jupyter-notebook
Game Theory And Python
Game Theory and Python, a workshop investigating repeated games using the prisoner's dilemma
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Selfteaching Book python
基于李笑来的那本自学是一门手艺的书,然后里面有自己修改的痕迹,以及更多的资料。
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Simple Qa Emnlp 2018
Code for my EMNLP 2018 paper "SimpleQuestions Nearly Solved: A New Upperbound and Baseline Approach"
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Text objseg
Code release for Hu et al. Segmentation from Natural Language Expressions. in ECCV, 2016
Stars: ✭ 86 (-1.15%)
Mutual labels:  jupyter-notebook
Detection Hackathon Apt29
Place for resources used during the Mordor Detection hackathon event featuring APT29 ATT&CK evals datasets
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Few Shot Text Classification
Code for reproducing the results from the paper Few Shot Text Classification with a Human in the Loop
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Deep Learning Boot Camp
A community run, 5-day PyTorch Deep Learning Bootcamp
Stars: ✭ 1,270 (+1359.77%)
Mutual labels:  jupyter-notebook
Gym trading
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Viz torch optim
Videos of deep learning optimizers moving on 3D problem-landscapes
Stars: ✭ 86 (-1.15%)
Mutual labels:  jupyter-notebook
Deep Learning Notes
Experiments with Deep Learning
Stars: ✭ 1,278 (+1368.97%)
Mutual labels:  jupyter-notebook
P5 vehicledetection unet
p5_VehicleDetection_Unet
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Calogan
Generative Adversarial Networks for High Energy Physics extended to a multi-layer calorimeter simulation
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook
Curso data science
Código para el curso "Aprende Data Science y Machine Learning con Python"
Stars: ✭ 87 (+0%)
Mutual labels:  jupyter-notebook

Faster-RCNN based on DenseCap

Before all

This is an attempt to replicate Faster-RCNN in torch. Since Densecap provides many modules in common, so I just modified the code on this.

The current result is not good enough (actually much worse than result in Faster-RCNN paper). Feel free to contribute.

(I didn't expect this to be seen suddenly by many people. Please blame me if I have many bugs.)

Difference between Faster-RCNN and this implementation

The following differences are what as far as I know, there could be more.

  • I don't include the exact ground truth bounding box as positive candidates of the Fast-RCNN. (I only use the output of the RPN which are regarded as ground truth.)
  • The ROIPooling layer can be backpropagated through the boungding box coordinates. (Same as in DenseCap)

Current result on Pascal VOC

I trained using VOCtrain2012+VOCtrainval2007 as training data, and use VOC test 2007 as validation data. The current Mean average precision on validation data is ~0.6 (0.73 in Faster-RCNN).

The main problem is my RPN doens't work well, the recall of 300 region proposals is only around 0.4.

Introduction

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

I provide:

Installation

This project is implemented in Torch, and depends on the following packages: torch/torch7, torch/nn, torch/nngraph, torch/image, lua-cjson, qassemoquab/stnbhwd

After installing torch, you can install / update these dependencies by running the following:

luarocks install torch
luarocks install nn
luarocks install image
luarocks install lua-cjson
luarocks install https://raw.githubusercontent.com/qassemoquab/stnbhwd/master/stnbhwd-scm-1.rockspec
luarocks install --server=http://luarocks.org/dev torch-rnn

(Optional) GPU acceleration

If have an NVIDIA GPU and want to accelerate the model with CUDA, you'll also need to install torch/cutorch and torch/cunn; you can install / update these by running:

luarocks install cutorch
luarocks install cunn
luarocks install cudnn

(Optional) cuDNN

If you want to use NVIDIA's cuDNN library, you'll need to register for the CUDA Developer Program (it's free) and download the library from NVIDIA's website; you'll also need to install the cuDNN bindings for Torch by running

luarocks install cudnn

Pretrained model

You can download a pretrained faster rcnn model by running the following script:

 sh scripts/download_pretrained_model.sh

This will download a zipped version of the model (about 2.7 GB) to `data/models/' (Sorry about the size. I didn't clean it.) This pretrained model is just for trial.

Running on new images

To run the model on new images, use the script run_model.lua. To run the pretrained model on the provided elephant.jpg image, use the following command:

th run_model.lua -input_image imgs/elephant.jpg

By default this will run in GPU mode; to run in CPU only mode, simply add the flag -gpu -1.

This command will write results into the folder vis/data. We have provided a web-based visualizer to view these results; to use it, change to the vis directory and start a local HTTP server:

cd vis
python -m SimpleHTTPServer 8181

Then point your web browser to http://localhost:8181/view_results.html.

If you have an entire directory of images on which you want to run the model, use the -input_dir flag instead:

th run_model.lua -input_dir /path/to/my/image/folder

This run the model on all files in the folder /path/to/my/image/folder/ whose filename does not start with ..

The web-based visualizer is the prefered way to view results, but if you don't want to use it then you can instead render an image with the detection boxes and captions "baked in"; add the flag -output_dir to specify a directory where output images should be written:

th run_model.lua -input_dir /path/to/my/image/folder -output_dir /path/to/output/folder/

The run_model.lua script has several other flags; you can find details here.

Training

To train a new DenseCap model, you will following the following steps:

  1. Download the raw images and ground truths from the VOC2012, the VOC2007.
  2. Use the script preprocess2.py to generate a single HDF5 file containing the entire dataset except the raw images. You can specify your own split file to merge two datasets. (details here)
  3. Use the script train.lua to train the model (details here) 4. Use the script evaluate_model.lua to evaluate a trained model on the validation or test data (details here)
th train.lua -anchor_type voc -image_size ^600 -data_h5 data/voc_all.h5 -data_json data/voc_all.json -learning_rate 1e-4 -optim adam

For more instructions on training see INSTALL.md in doc folder.

Evaluation

In the paper we provide the code to calculate the mean average precision.

The evaluation code is not required to simply run a trained model on images; you can find more details about the evaluation code here.

~~

Webcam demos(not modified)

If you have a powerful GPU, then the DenseCap model is fast enough to run in real-time. We provide two demos to allow you to run DenseCap on frames from a webcam.

Single-machine demo

If you have a single machine with both a webcam and a powerful GPU, then you can use this demo to run DenseCap in real time at up to 10 frames per second. This demo depends on a few extra Lua packages:

You can install / update these dependencies by running the following:

luarocks install camera
luarocks install qtlua

You can start the demo by running the following:

qlua webcam/single_machine_demo.lua

~~

Client / server demo (not modified)

If you have a machine with a powerful GPU and another machine with a webcam, then this demo allows you use the GPU machine as a server and the webcam machine as a client; frames will be streamed from the client to to the server, the model will run on the server, and predictions will be shipped back to the client for viewing. This allows you to run DenseCap on a laptop, but with network and filesystem overhead you will typically only achieve 1 to 2 frames per second.

The server is written in Flask; on the server machine run the following to install dependencies:

cd webcam
virtualenv .env
pip install -r requirements.txt
source .env/bin/activate
cd ..

For technical reasons, the server needs to serve content over SSL; it expects to find SSL key files and certificate files in webcam/ssl/server.key and webcam/ssl/server.crt respectively. You can generate a self-signed SSL certificate by running the following:

mkdir webcam/ssl

# Step 1: Generate a private key
openssl genrsa -des3 -out webcam/ssl/server.key 1024
# Enter a password

# Step 2: Generate a certificate signing request
openssl req -new -key webcam/ssl/server.key -out webcam/ssl/server.csr
# Enter the password from above and leave all other fields blank

# Step 3: Strip the password from the keyfile
cp webcam/ssl/server.key webcam/ssl/server.key.org
openssl rsa -in webcam/ssl/server.key.org -out webcam/ssl/server.key

# Step 4: Generate self-signed certificate
openssl x509 -req -days 365 -in webcam/ssl/server.csr -signkey webcam/ssl/server.key -out webcam/ssl/server.crt
# Enter the password from above

You can now run the following two commands to start the server; both will run forever:

th webcam/daemon.lua
python webcam/server.py

On the client, point a web browser at the following page:

https://cs.stanford.edu/people/jcjohns/densecap/demo/web-client.html?server_url=SERVER_URL

but you should replace SERVER_URL with the actual URL of the server.

Note: If the server is using a self-signed SSL certificate, you may need to manually tell your browser that the certificate is safe by pointing your client's web browser directly at the server URL; you will get a message that the site is unsafe; for example on Chrome you will see the following:

Afterward you should see a message telling you that the DenseCap server is running, and the web client should work after refreshing.

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