• Stars
    star
    173
  • Rank 220,124 (Top 5 %)
  • Language
    MATLAB
  • Created over 10 years ago
  • Updated almost 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Repository containing wrapper to obtain various object proposals easily

Object Proposals

This is a library/API which can be used to generate bounding box/region proposals using a large number of the existing object proposal approaches. If you use use our library, please cite our paper:

@misc{1505.05836,
    Author = {Neelima Chavali and Harsh Agrawal and Aroma Mahendru and Dhruv Batra},
    Title = {Object-Proposal Evaluation Protocol is 'Gameable'},
    Year = {2015},
    Eprint = {arXiv:1505.05836},
}
  • It is fully supported on Linux and partially supported on Mac OS.
  • Rigor, Randomized Prim are NOT supported on Mac OS.
  • Rigor requires installation of boost, tbb libraries.
  • Geodesic Object Proposals require c++11 compiler (C++ 4.7 or higher) and eigen (3.2 or higher).

Compiling

  1. Run compile.m

Generating Proposals

  1. Copy over config.json.example to config.json and set imageLocation and outputLocation.

  2. Initialize path variables.

initialize;
  1. Generate proposals, using either of the following commands.
proposals = runObjectProposals('<proposalname>', 'path\to\image.jpg');

OR 

im = imread('path\to\image.jpg');
proposals = runObjectProposals('<proposal name>', im);
  1. For long-running jobs, use the following command.
runObjectProposals('<proposalname>');

This will generate proposals for all the images in imageLocation and save the proposals in outputLocation.

<proposalname> is the object proposal to be run. List of possible object proposal names:

  • edgeBoxes [1]
  • endres [2]
  • mcg [3]
  • objectness [4]
  • rahtu [5]
  • randomPrim [6]
  • rantalankila [7]
  • selective_search [8]
  • rigor [9]
  • gop [10]
  • lpo [11]

Note

RIGOR requires boost and tbb libraries. Please follow the instructions given here to setup these libraries.

Evaluating Proposals

A ground truth file needs to be generated for the dataset. We have provided the file for PASCAL 2007 test set. The following code assumes you have generated proposals for all images in the dataset for which you want to evaluate for each proposal in your config.json file.

Evaluation using recall curves & area under recall curves

  1. Load ground truth.
testset=load('evaluation-metrics/data/pascal_gt_data.mat');
  1. Generate best recall candidates.
compute_best_recall_candidates(testset,configjson,'<proposalame>'); 

'proposalname' is an optional argument. If not provided, the function works for all the object proposals listed above.

  1. Plot RECALL/AUC curves.
evaluateMetricForProposal('RECALL','<proposalname>');
evaluateMetricForProposal('AUC','<proposalname');

OR

evaluateMetricForProposal('RECALL');   
evaluateMetricForProposal('AUC');

Evaluation using ABO curves

  1. Load ground truth.
testset=load('evaluation-metrics/data/pascal_gt_data.mat');
  1. Generate best recall candidates.
compute_abo_candidates(testset,configjson);
  1. Plot ABO curve.
evaluateMetricForProposal('ABO', '<proposalname');

OR

evaluateMetricForProposal('ABO');

Possible Issues

Linux

  • While running runObjectProposals('mcg'), you may get an error like
    Invalid MEX-file 'path/to/ucm_mean_pb.mexa64': /matlab/path/to/libstdc++.so.6: version GLIBCXX_3.4.15' not found. This issue is explained here. Possible workaround is to start MATLAB with "LD_PRELOAD=/path/to/libstdc++.so.6 matlab". Replace /path/to/libstdc++.so.6 with the system install location for libstdc++, usually something like /usr/lib/x86_64-linux-gnu/libstdc++.so.6.

License

The original license for each object proposal has been retained in their respective folders. Please refer to individual license before using the specific object proposal.

Citations

This package contains various object proposal implementations of the algorithms presented in the following papers. If you are using object proposals presented in these papers, we request you to cite appropriate papers:

[1] EdgeBoxes:

@inproceedings{ZitnickECCV14,
    Author = {C. Lawrence Zitnick and Piotr Dollar},
    Title = {Edge Boxes: Locating Object Proposals from Edges},
    Booktitle = {ECCV},
    Year = {2014},
}

License: edgeBoxes/releaseV3/license.txt (MICROSOFT RESEARCH LICENSE TERMS)

[2] Endres - Category Independent Object Proposals:

@article{EndresPAMI14,
    Author = {Ian Endres and Derek Hoiem},
    Title = {Category-Independent Object Proposals with Diverse Ranking},
    Journal ={IEEE Transactions on Pattern Analysis and Machine Intelligence},
    volume = {36},
    number = {2},
    issn = {0162-8828},
    year = {2014},
    pages = {222-234},
}

License: endres/proposals/README (GNU General Public License)

[3] MCG - Multiscale Combinatorial Grouping:

@inproceedings{Arbelaez_CVPR14,
    Author = {Arbel\'{a}ez, P. and Pont-Tuset, J. and Barron, J. and Marques,F. and Malik, J.},
    Title = {Multiscale Combinatorial Grouping},
    Booktitle = {CVPR},
    year = {2014}
}

License: mcg/MCG-Full/license.txt (BSD)

[4] Objectness:

@article{AlexePAMI12,
    Author = {Alexe, Bogdan and Deselaers, Thomas and Ferrari, Vittorio},
    Title = {Measuring the objectness of image windows },
    Journal ={IEEE Transactions on Pattern Analysis and Machine Intelligence},
    year = {2012},
}

License: objectness-release-v2.2/LICENSE.txt (rights to use, copy, modify, merge and distribute)

[5] Rahtu:

@inproceedings{RahtuICCV11,
    author    = {Esa Rahtu and Juho Kannala and Matthew B. Blaschko},
    title     = {Learning a category independent object detection cascade},
    booktitle = {ICCV},
    year      = {2011},
}

License: rahtu/rahtuObjectness/Licence.txt (MIT license)

[6] Randomized Prims:

@inproceedings{ManenICCV13,
     author = {Manen, Santiago and Guillaumin, Matthieu and Gool, Luc Van},
     title = {Prime Object Proposals with Randomized Prim's Algorithm},
     booktitle = {ICCV},
    year = {2013},
}

License: randomizedPrims/rp-master/LICENSE.txt (rights to use, copy, modify, merge and distribute)

[7] Rantalankila:

@inproceedings{RantalankilaCVPR14,
    author = {Rantalankila, Pekka and Kannala, Juho and Rahtu, Esa},
    title = {Generating Object Segmentation Proposals using Global and Local Search},
    booktitle = {CVPR},
    year = {2014}
}

License: rantalankilaSegments/Readme.txt (GNU General Public License)

[8] Selective Search:

@article{UijlingsIJCV13,
    author = {J.R.R. Uijlings and K.E.A. van de Sande and T. Gevers and A.W.M. Smeulders},
    title = {Selective Search for Object Recognition},
    journal = {International Journal of Computer Vision},
    year = {2013},
    url = {http://www.huppelen.nl/publications/selectiveSearchDraft.pdf}
}

License: selective_search/License.txt (Copyright University of Amsterdam)

[9] rigor:

@inproceedings{HumayunCVPR14,
     author    = {Ahmad Humayun and Fuxin Li and James M. Rehg},
     title = {RIGOR- Recycling Inference in Graph Cuts for generating Object Regions},
     booktitle = {CVPR},
     year = {2014}
    }

License: rigor/rigor_src/LICENSE (GNU General Public License)

[10] Geodesic Object Proposals:

@inproceedings{DBLP:conf/eccv/KrahenbuhlK14,
  author    = {Philipp Kr{\"{a}}henb{\"{u}}hl and
               Vladlen Koltun},
  title     = {Geodesic Object Proposals},
  booktitle = {Computer Vision - {ECCV} 2014 - 13th European Conference, Zurich,
               Switzerland, September 6-12, 2014, Proceedings, Part {V}},
  pages     = {725--739},
  year      = {2014}
}

License: BSD

[11] Learning to Propose Objects:

@inproceedings{kk-lpo-15,
  author    = {Philipp Kr{\"{a}}henb{\"{u}}hl and
               Vladlen Koltun},
  title     = {Learning to Propose Objects},
  booktitle = {CVPR},
  year      = {2015},
}

License: BSD

[12] Evaluation Metrics:

@inproceedings{HosangBMVC14,
    author = {J. Hosang and R. Benenson and B. Schiele},
    title = {How good are detection proposals, really?},
    booktitle = {BMVC},
    year = {2014}
}

License: evaluation-metrics/LICENSE (GNU General Public License)

More Repositories

1

EvalAI

☁️ πŸš€ πŸ“Š πŸ“ˆ Evaluating state of the art in AI
Python
1,753
star
2

Fabrik

🏭 Collaboratively build, visualize, and design neural nets in browser
Python
1,120
star
3

visual-chatbot

☁️ πŸ‘€ πŸ’¬ Visual Chatbot
Python
187
star
4

Origami

πŸ”“ πŸ”‘ πŸ” Origami: Artificial Intelligence as a Service
JavaScript
169
star
5

GSoC-Ideas

CloudCV GSoC Ideas
HTML
119
star
6

Grad-CAM

🌈 πŸ“· Gradient-weighted Class Activation Mapping (Grad-CAM) Demo
HTML
108
star
7

py-cloudcv

Python APIs for CloudCV
Python
98
star
8

diverse-beam-search

πŸ” :shipit: Decoding Diverse Solutions from Neural Sequence Models
Lua
75
star
9

EvalAI-Starters

How to create a challenge on EvalAI?
Python
73
star
10

VQA

CloudCV Visual Question Answering Demo
Lua
66
star
11

CloudCV

☁️ CloudCV Website
JavaScript
64
star
12

evalai-cli

☁️ πŸš€ Official EvalAI Command Line Tool
Python
55
star
13

CloudCV-Old

CloudCV - Large-Scale Distributed Computer Vision As A Cloud Service
Python
51
star
14

vilbert-multi-task

πŸ‘€ πŸ—£οΈ πŸ“12-in-1: Multi-Task Vision and Language Representation Learning Web Demo
Python
35
star
15

EvalAI-ngx

Revamped codebase of EvalAI Frontend
TypeScript
33
star
16

mat-cloudcv

CloudCV API's for Matlab
Java
21
star
17

origami-lib

Python package for origami
Python
17
star
18

GCI

πŸ‘§ πŸ‘¦ Google Code-In Website http://gci.cloudcv.org
HTML
6
star
19

origami-daemon

A long running daemon for Origami to deploy and manage demos on CloudCV servers.
Python
4
star
20

VQA-Challenge

Evaluation Script for VQA Real Image Challenge (Open-Ended) 2017
Python
4
star
21

Dockerfiles

Origami dockerfiles.
Shell
1
star