/BASS

Bayesian Adaptive Superpixel Segmentation (ICCV 2019)

Primary LanguageC++

Bayesian Adaptive Superpixel Segmentation

This is the official code for our ICCV 2019 paper, "Bayesian Adaptive Superpixel Segmentation" , co-authored by Roy Uziel, Meitar Ronen, and Oren Freifeld.

Important update (12/3/2022): The code is now much faster than it used to be.

The original PyTorch-based GPU code (released in 2019) has been deprecated. The current CUDA-based GPU implementation (of the same algorithm from the paper) is much faster, translating usually to a x50 speedup. For example, using an NVIDIA GeForce GTX 1070 graphics card, a typical running time on a 512x512 image is 0.042 seconds.

Prerequisites

GPU
CUDA driver (Tested on 11.3+)
OpenCV

Installation

Cloning The GitHub Repository

$ git clone https://github.com/BGU-CS-VIL/BASS.git
$ cd BASS
$ mkdir build
$ cd build
$ cmake .. && make

Usage

$./Sp_demo_for_direc -d ../images

Mean and contour images will be saved at ../result alongside the segmentation map (csv)

Args and Kwargs:

-n the desired number of pixels on the side of a superpixel
-i_std std dev for color Gaussians, should be 0.01<= value <=0.05. A smaller value leads to more irregular superpixels
--im_size resizing input images (single number)
--beta beta (Potts) 0 < value < 10
--alpha alpha (Hasting ratio) 0.01< value <100

Usage Examples:

Changing the initial number of Superpixels:

./Sp_demo_for_direc -d ../images -n 25

alt-text-1

./Sp_demo_for_direc -d ../images -n 15

alt-text-2

Larger Values of alpha will result in more superpixels due to splits:

./Sp_demo_for_direc -d ../images/ --im_size 512 -n 20 --alpha 0.1

alt-text-2

./Sp_demo_for_direc -d ../images/ --im_size 512 -n 20 --alpha 20

alt-text-2

Increasing i_std will result in more compact Superpixels:

./Sp_demo_for_direc -d ../images/ --i_std 0.03

alt-text-1alt-text-2

./Sp_demo_for_direc -d ../images/ --i_std 0.018

alt-text-1alt-text-2

This software is released under the MIT License (included with the software). Note, however, that if you are using this code (and/or the results of running it) to support any form of publication (e.g., a book, a journal paper, a conference paper, a patent application, etc.) then we request you will cite our paper:

@inproceedings{Uziel:ICCV:2019:BASS,
  title = {Bayesian Adaptive Superpixel Segmentation},
  author = {Roy Uziel and Meitar Ronen and Oren Freifeld},
  booktitle = {ICCV},
  year={2019}
 }