Giter Club home page Giter Club logo

oicr's Introduction

Multiple Instance Detection Network with Online Instance Classifier Refinement

By Peng Tang, Xinggang Wang, Xiang Bai, and Wenyu Liu.

Introduction

Online Instance Classifier Refinement (OICR) is a framework for weakly supervised object detection with deep ConvNets.

  • It achieves state-of-the-art performance on weakly supervised object detection (Pascal VOC 2007 and 2012).
  • Our code is written by C++ and Python, based on Caffe, fast r-cnn, and faster r-cnn.

The paper has been accepted by CVPR 2017. For more details, please refer to our paper.

Architecture

OICR architecture

Results

Method VOC2007 test mAP VOC2007 trainval CorLoc VOC2012 test mAP VOC2012 trainval CorLoc
OICR-VGG_M 37.9 57.3 34.6 60.7
OICR-VGG16 41.2 60.6 37.9 62.1
OICR-Ens. 42.0 61.2 38.2 63.5
OICR-Ens.+FRCNN 47.0 64.3 42.5 65.6

Visualizations

Some OICR visualization results

Some OICR visualization results.

Some visualization comparisons among WSDDN, WSDDN+context, and OICR

Some visualization comparisons among WSDDN, WSDDN+context, and OICR.

License

OICR is released under the MIT License (refer to the LICENSE file for details).

Citing OICR

If you find OICR useful in your research, please consider citing:

@inproceedings{tang2017multiple,
    Author = {Tang, Peng and Wang, Xinggang and Bai, Xiang and Liu, Wenyu},
    Title = {Multiple Instance Detection Network with Online Instance Classifier Refinement},
    Booktitle = {CVPR},
    Year = {2017}
}

Contents

  1. Requirements: software
  2. Requirements: hardware
  3. Basic installation
  4. Installation for training and testing
  5. Extra Downloads (selective search)
  6. Extra Downloads (ImageNet models)
  7. Usage

Requirements: software

  1. Requirements for Caffe and pycaffe (see: Caffe installation instructions)

Note: Caffe must be built with support for Python layers!

# In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1
  1. Python packages you might not have: cython, python-opencv, easydict
  2. MATLAB

Requirements: hardware

  1. NVIDIA GTX TITANX (~12G of memory)

Installation

  1. Clone the OICR repository
# Make sure to clone with --recursive
git clone --recursive https://github.com/ppengtang/oicr.git
  1. Build the Cython modules

    cd $OICR_ROOT/lib
    make
  2. Build Caffe and pycaffe

    cd $OICR_ROOT/caffe-oicr
    # Now follow the Caffe installation instructions here:
    #   http://caffe.berkeleyvision.org/installation.html
    
    # If you're experienced with Caffe and have all of the requirements installed
    # and your Makefile.config in place, then simply do:
    make all -j 8
    make pycaffe

Installation for training and testing

  1. Download the training, validation, test data and VOCdevkit

    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCdevkit_18-May-2011.tar
  2. Extract all of these tars into one directory named VOCdevkit

    tar xvf VOCtrainval_06-Nov-2007.tar
    tar xvf VOCtest_06-Nov-2007.tar
    tar xvf VOCdevkit_18-May-2011.tar
  3. It should have this basic structure

    $VOCdevkit/                           # development kit
    $VOCdevkit/VOCcode/                   # VOC utility code
    $VOCdevkit/VOC2007                    # image sets, annotations, etc.
    # ... and several other directories ...
  4. Create symlinks for the PASCAL VOC dataset

    cd $OICR_ROOT/data
    ln -s $VOCdevkit VOCdevkit2007

    Using symlinks is a good idea because you will likely want to share the same PASCAL dataset installation between multiple projects.

  5. [Optional] follow similar steps to get PASCAL VOC 2012.

  6. You should put the generated proposal data under the folder $OICR_ROOT/data/selective_search_data, with the name "voc_2007_trainval.mat", "voc_2007_test.mat", just as the form of fast-rcnn.

  7. The pre-trained models are all available in the Caffe Model Zoo. You should put it under the folder $OICR_ROOT/data/imagenet_models, just as the form of fast-rcnn.

Download pre-computed Selective Search object proposals

Pre-computed selective search boxes can also be downloaded for VOC2007 and VOC2012.

cd $OICR_ROOT
./data/scripts/fetch_selective_search_data.sh

This will populate the $OICR_ROOT/data folder with selective_selective_data. (The script is copied from the fast-rcnn).

Download pre-trained ImageNet models

Pre-trained ImageNet models can be downloaded.

cd $OICR_ROOT
./data/scripts/fetch_imagenet_models.sh

These models are all available in the Caffe Model Zoo, but are provided here for your convenience. (The script is copied from the fast-rcnn).

Usage

Train a OICR_ROOT network. For example, train a VGG16 network on VOC 2007 trainval:

./tools/train_net.py --gpu 1 --solver models/VGG16/solver.prototxt \
	--weights data/imagenet_models/$VGG16_model_name --iters 70000

Test a OICR network. For example, test the VGG 16 network on VOC 2007 test:

On trainval

./tools/test_net.py --gpu 1 --def models/VGG16/test.prototxt \
  --net output/default/voc_2007_trainval/vgg16_oicr_iter_70000.caffemodel \
  --imdb voc_2007_trainval

On test

./tools/test_net.py --gpu 1 --def models/VGG16/test.prototxt \
  --net output/default/voc_2007_trainval/vgg16_oicr_iter_70000.caffemodel \
  --imdb voc_2007_test

Test output is written underneath $OICR_ROOT/output.

Evaluation

For mAP, run the python code tools/reval.py

./tools/reval.py $output_dir --imdb voc_2007_test --matlab

For CorLoc, run the python code tools/reval_discovery.py

./tools/reval_discovery.py $output_dir --imdb voc_2007_trainval

The codes for training fast rcnn by pseudo ground truths are available on here.

oicr's People

Contributors

ppengtang avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.