Structured SVM with probably submodular constraints.
For use, please cite:
Berman, Maxim, & Blaschko, Matthew B. (2016, December). Efficient optimization for probably submodular constraints in CRFs. In Proceedings of the NIPS workshop on constructive machine learning.
See also prior reference on the probably submodular framework
Zaremba, Wojciech, & Blaschko, Matthew B. (2016, March). Discriminative training of CRF models with probably submodular constraints. In 2016 IEEE Winter Conference on Applications of Computer Vision (WACV). IEEE.
The package relies on PyStruct
Müller, Andreas C., and Sven Behnke. "PyStruct: learning structured prediction in python." Journal of Machine Learning Research 15.1 (2014): 2055-2060.
-
Create environment and install requirements
conda create --name probsubenv python=2.7 numpy cvxopt scikit-image conda install -c https://conda.binstar.org/menpo opencv source activate probsubenv pip install git+https://github.com/bermanmaxim/pystruct.git@hardconstraints
Note As indicated pystruct has to be fetched from the
weightedloss
branch of my fork of pystruct. -
install opengm with
Python
andgraph-cuts
extensions and and make the python module available in the environment (for graph-cut inference)
one_slack_ssvm_hard.py
constains one-slack SSVM learner class forpystruct
with additional hard constraints <w, a> >= b, either specified or generated withlearner.generate_hard_constraints
probsub.py
provides an interface to learners with probably submodular constraints, provided byprobsub_helpers.py
Additional information can be found on the project webpage http://homes.esat.kuleuven.be/~mblaschk/projects/learnConstraints/