Coder Social home page Coder Social logo

strogo / nifty Goto Github PK

View Code? Open in Web Editor NEW

This project forked from derthorsten/nifty

0.0 2.0 0.0 130.52 MB

A nifty library for graph based image segmentation.

License: MIT License

CMake 2.42% C++ 84.36% Python 12.89% Shell 0.04% C 0.01% HTML 0.01% TeX 0.15% Batchfile 0.12%

nifty's Introduction

Github Workflow builds

Build Status

Nifty

A nifty library for 2D and 3D image segmentation, graph based segmentation an opt. This library provided building blocks for segmentation algorithms and complex segmentation pipelines. The core is implemented in C++ but the suggested language to use this library from is python.

Important:

To use nifty one needs to checkout some submodules via:

git submodule init
git submodule update

If WITH_MP_LP is active, one needs:

git submodule update --init --recursive

Documentation:

A very tentative documentation of the nifty python module.

Features (Highlights):

  • Multicut:

    • Multicut-Ilp (Kappes et al. 2011)
      • Multicut-Ilp-Cplex
      • Multicut-Ilp-Gurobi
      • Multicut-Ilp-Glpk
    • Decomposing Solver (Alush and Goldberger 2012)
    • Cut Glue & Cut (Beier et al 2014)
      • Cut Glue & Cut - QPBO
    • Greedy Additive Clustering / Energy based Hierarchical Clustering (Beier et al. 2015)
    • Fusion Moves for Correlation clustering (Beier et al. 2015)
      • Perturbed Random Seed Watershed Proposal Generator
      • Perturbed Greedy Additive Clustering Proposal Generator
    • Kernighan-Lin Algorithm with Joins (Keuper et al 2015)
    • Message Passing for the Minimum Cost Multicut Problem (Swoboda 2016)
  • Lifted Multicut: (Andres et al. 2015, Keuper et al 2015)

    • Kernighan-Lin Algorithm with Joins (Keuper et al 2015)
    • Greedy Additive Clustering (Keuper et al 2015)
    • Lifted-Multicut-Ilp (does not scale to meaningful problems, just for verification)
      • Lifted-Multicut-Ilp-Cplex
      • Lifted-Multicut-Ilp-Gurobi
      • Lifted-Multicut-Ilp-Glpk
    • Fusion Moves for Lifted Multicuts (Beier et al. 2016)
      • Perturbed Random Seed Watershed Proposal Generator
      • Perturbed Greedy Additive Clustering Proposal Generator
    • Message Passing for the Minimum Cost Multicut Problem (Swoboda 2016)
  • Mincut/Maxcut:

    • QPBO
  • Agglomerative Clustering

    • Easy to extend / Custom cluster policies
    • UCM Transform
  • CGP 2D (Cartesian Grid Partitioning)

  • Many Data Structures:

    • Union Find Data Structure
    • Histogram
  • Coming Eventually:

    • MultiwayCut:
    • ModifiedMultiwayCut:
    • LiftedModifiedMultiwayCut:

C++ vs Python:

The Python API is at present the easiest to use. The C++ API is mostly for power users. We recommend to use library from Python. Almost any class / function in the Python API is calling into C++ via pybind11.

Install:

Conda:

The easiest way to install this version is via conda (right now it is not available with gurobi or cplex, you will need to build from source for this):

conda install -c conda-forge nifty

From Source:

To build nifty from source, you will need to set up an environment with all necessary dependencies. We recommend to use conda for this as well and provide the file environment.yaml` for this. You can set up this environment and build nifty with the following commands:

$ conda env create -f environment.yaml
$ conda activate nifty-dev
$ mkdir bld
$ cd bld
$ cmake -DCMAKE_PREFIX_PATH=/path/to/conda/envs/nifty-dev -DWITH_Z5=ON -DWITH_HDF5=ON -DWITH_ZLIB=ON -DBUILD_NIFTY_PYTHON=ON ..
$ make

This would build nifty with additional hdf5 and z5 dependencies; and add zlib support for z5. You can find all build options in CMakeLists.txt; note that you may need to install additional dependencies.

Troubleshooting:

TODO

Changelog:

TODO

nifty's People

Contributors

abailoni avatar ahmadnish avatar bluescarni avatar constantinpape avatar derthorsten avatar hanslovsky avatar k-dominik avatar stuarteberg avatar

Watchers

 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.