Skip to main content

StarDist

Project description

PyPI version Test Test (PyPI) Image.sc forum

StarDist - Object Detection with Star-convex Shapes

This repository contains the Python implementation of star-convex object detection for 2D and 3D images, as described in the papers:

Please cite the paper(s) if you are using this code in your research.

Overview

The following figure illustrates the general approach for 2D images. The training data consists of corresponding pairs of input (i.e. raw) images and fully annotated label images (i.e. every pixel is labeled with a unique object id or 0 for background). A model is trained to densely predict the distances (r) to the object boundary along a fixed set of rays and object probabilities (d), which together produce an overcomplete set of candidate polygons for a given input image. The final result is obtained via non-maximum suppression (NMS) of these candidates.

The approach for 3D volumes is similar to the one described for 2D, using pairs of input and fully annotated label volumes as training data.

Webinar/Tutorial

If you want to know more about the concepts and practical applications of StarDist, please have a look at the following webinar that was given at NEUBIAS Academy @Home 2020:

webinar video

Installation

This package requires Python 3.6 (or newer). (If you only want to use the StarDist plugin for Fiji or QuPath, please read this.)

  1. Please first install TensorFlow (either TensorFlow 1 or 2) by following the official instructions. For GPU support, it is very important to install the specific versions of CUDA and cuDNN that are compatible with the respective version of TensorFlow.

  2. StarDist can then be installed with pip:

    pip install stardist

Notes

  • Depending on your Python installation, you may need to use pip3 instead of pip.
  • We provide pre-compiled binaries ("wheels") that should work for most Linux and Windows platforms, and also recent versions of macOS (Catalina/10.15 or later). If you're having problems, please see the troubleshooting section below.
  • (Optional) You need to install gputools if you want to use OpenCL-based computations on the GPU to speed up training.
  • (Optional) You might experience improved performance during training if you additionally install the Multi-Label Anisotropic 3D Euclidean Distance Transform (MLAEDT-3D).

Usage

We provide example workflows for 2D and 3D via Jupyter notebooks that illustrate how this package can be used.

Pretrained Models for 2D

Currently we provide some pretrained models in 2D that might already be suitable for your images:

key Modality (Staining) Image format Example Image Description
2D_versatile_fluo 2D_paper_dsb2018 Fluorescence (nuclear marker) 2D single channel Versatile (fluorescent nuclei) and DSB 2018 (from StarDist 2D paper) that were both trained on a subset of the DSB 2018 nuclei segmentation challenge dataset.
2D_versatile_he Brightfield (H&E) 2D RGB Versatile (H&E nuclei) that was trained on images from the MoNuSeg 2018 training data and the TNBC dataset from Naylor et al. (2018).

You can access these pretrained models from stardist.models.StarDist2D

from stardist.models import StarDist2D 

# prints a list of available models 
StarDist2D.from_pretrained() 

# creates a pretrained model
model = StarDist2D.from_pretrained('2D_versatile_fluo')

Annotating Images

To train a StarDist model you will need some ground-truth annotations: for every raw training image there has to be a corresponding label image where all pixels of a cell region are labeled with a distinct integer (and background pixels are labeled with 0). To create such annotations in 2D, there are several options, among them being Fiji, Labkit, or QuPath. In 3D, there are fewer options: Labkit and Paintera (the latter being very sophisticated but having a steeper learning curve).

Although each of these provide decent annotation tools, we currently recommend using Labkit (for 2D or 3D images) or QuPath (for 2D):

Annotating with LabKit (2D or 3D)

  1. Install Fiji and the Labkit plugin
  2. Open the (2D or 3D) image and start Labkit via Plugins > Segmentation > Labkit
  3. Successively add a new label and annotate a single cell instance with the brush tool (always check the override option) until all cells are labeled
  4. Export the label image via Save Labeling... and File format > TIF Image

Additional tips:

  • The Labkit viewer uses BigDataViewer and its keybindings (e.g. s for contrast options, CTRL+Shift+mouse-wheel for zoom-in/out etc.)
  • For 3D images (XYZ) it is best to first convert it to a (XYT) timeseries (via Re-Order Hyperstack and swapping z and t) and then use [ and ] in Labkit to walk through the slices.

Annotating with QuPath (2D)

  1. Install QuPath
  2. Create a new project (File -> Project...-> Create project) and add your raw images
  3. Annotate nuclei/objects
  4. Run this script to export the annotations (save the script and drag it on QuPath. Then execute it with Run for project). The script will create a ground_truth folder within your QuPath project that includes both the images and masks subfolder that then can directly be used with StarDist.

To see how this could be done, have a look at the following example QuPath project (data courtesy of Romain Guiet, EPFL).

Troubleshooting & Support

  1. Please first take a look at the frequently asked questions (FAQ).
  2. If you need further help, please go to the image.sc forum and try to find out if the issue you're having has already been discussed or solved by other people. If not, feel free to create a new topic there and make sure to use the tag stardist (we are monitoring all questions with this tag).
  3. If you have a technical question related to the source code or believe to have found a bug, feel free to open an issue, but please check first if someone already created a similar issue.

Installation

If pip install stardist fails, it could be because there are no compatible wheels (.whl) for your platform (see list). In this case, pip tries to compile a C++ extension that our Python package relies on (see below). While this often works on Linux out of the box, it will likely fail on Windows and macOS without installing a suitable compiler. (Note that you can enforce compilation by installing via pip install stardist --no-binary :stardist:.)

Installation without using wheels requires Python 3.6 (or newer) and a working C++ compiler. We have only tested GCC (macOS, Linux), Clang (macOS), and Visual Studio (Windows 10). Please open an issue if you have problems that are not resolved by the information below.

If available, the C++ code will make use of OpenMP to exploit multiple CPU cores for substantially reduced runtime on modern CPUs. This can be important to prevent slow model training.

macOS

The default Apple C/C++ compiler (clang) does not come with OpenMP support and the package build will likely fail. To properly build stardist you need to install an OpenMP-enabled GCC compiler, e.g. via Homebrew with brew install gcc (e.g. installing gcc-10/g++-10 or newer). After that, you can build the package like this (adjust compiler names/paths as necessary):

CC=gcc-10 CXX=g++-10 pip install stardist

If you use conda on macOS and after import stardist see errors similar to the following:

Symbol not found: _GOMP_loop_nonmonotonic_dynamic_next

please see this issue for a temporary workaround.

Windows

Please install the Build Tools for Visual Studio 2019 from Microsoft to compile extensions for Python 3.6 and newer (see this for further information). During installation, make sure to select the C++ build tools. Note that the compiler comes with OpenMP support.

Plugins for other software

ImageJ/Fiji Plugin

We currently provide a ImageJ/Fiji plugin that can be used to run pretrained StarDist models on 2D or 2D+time images. Installation and usage instructions can be found at the plugin page.

QuPath

Inspired by the Fiji plugin, Pete Bankhead made a custom implementation of StarDist 2D for QuPath to use pretrained models. Please see this page for documentation and installation instructions.

How to cite

@inproceedings{schmidt2018,
  author    = {Uwe Schmidt and Martin Weigert and Coleman Broaddus and Gene Myers},
  title     = {Cell Detection with Star-Convex Polygons},
  booktitle = {Medical Image Computing and Computer Assisted Intervention - {MICCAI} 
  2018 - 21st International Conference, Granada, Spain, September 16-20, 2018, Proceedings, Part {II}},
  pages     = {265--273},
  year      = {2018},
  doi       = {10.1007/978-3-030-00934-2_30}
}

@inproceedings{weigert2020,
  author    = {Martin Weigert and Uwe Schmidt and Robert Haase and Ko Sugawara and Gene Myers},
  title     = {Star-convex Polyhedra for 3D Object Detection and Segmentation in Microscopy},
  booktitle = {The IEEE Winter Conference on Applications of Computer Vision (WACV)},
  month     = {March},
  year      = {2020},
  doi       = {10.1109/WACV45572.2020.9093435}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stardist-0.6.2.tar.gz (450.7 kB view details)

Uploaded Source

Built Distributions

stardist-0.6.2-cp38-cp38-win_amd64.whl (385.5 kB view details)

Uploaded CPython 3.8 Windows x86-64

stardist-0.6.2-cp38-cp38-manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.8

stardist-0.6.2-cp38-cp38-macosx_10_15_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

stardist-0.6.2-cp37-cp37m-win_amd64.whl (385.0 kB view details)

Uploaded CPython 3.7m Windows x86-64

stardist-0.6.2-cp37-cp37m-manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.7m

stardist-0.6.2-cp37-cp37m-macosx_10_15_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

stardist-0.6.2-cp36-cp36m-win_amd64.whl (385.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

stardist-0.6.2-cp36-cp36m-manylinux2014_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.6m

stardist-0.6.2-cp36-cp36m-macosx_10_15_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.6m macOS 10.15+ x86-64

File details

Details for the file stardist-0.6.2.tar.gz.

File metadata

  • Download URL: stardist-0.6.2.tar.gz
  • Upload date:
  • Size: 450.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2.tar.gz
Algorithm Hash digest
SHA256 e2d4511c82de09fa6e07be283ebe5cc655572edb0374964b30eb0b4b0978dda9
MD5 faa9cf393eabf3ac9639c876e1cf47a7
BLAKE2b-256 94153bca8c7e45a0ed15ff5b109d7af60f47b95afa45ab990eecdd3a917a5daf

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 385.5 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 45c2eaa8dae4f5bd948d6ad46a7b40e38442d67d4534e7cbc049def231e91196
MD5 8a098adfcec0483a873fb6cd7473de08
BLAKE2b-256 c29278d6334be07df688ea7b9c3b7d7f00281347503dc46951e6d871e39f7cb9

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ac62dc54d20b57db12ccc5cdacfc27b0250d8fabc47f2733b62082ebd948a70
MD5 667fe2b6324abbc749136d7c3a7686be
BLAKE2b-256 06a5d3a56bd89eda7d9ea53a6909902746365c361241c422f79a11ce9900e17d

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp38-cp38-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.8, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 64469532d1346e60be5913fa620bad508cc2282b74689bd4e1e5db64b9621136
MD5 2ad733181dc22fe5eec964051b2805bc
BLAKE2b-256 8d1add9c3d2bd9656f31692067c6cf21966e2267ca39dbe83b0577092b217ba6

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 385.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 03654608f6b20a5adaff420e67bfbb591d56ef8ea0cdf1695a9ff93b1685f08e
MD5 8c545aff554605f3d644f0c67d4ed837
BLAKE2b-256 3b48e5f9efd91454d1276a85467302edbf65e2f8d8237b4f9699d21fc8531bfb

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ede9ec3eebf02d916deba9a97b4d106573d0805264fce9e5a8d8c1cbd9ef88f
MD5 cbda67fb23914b8c31bddd90e2ee4aac
BLAKE2b-256 9848c5c3dd65a177751945eb6d730ac63c7f9bd2811cc2cba5369cac42c07be0

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp37-cp37m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.7m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 732d08f779d4b795ff471714f4fb725bcbea872fd91d50c5c5c88d019803d8fb
MD5 ccbba91b077dfe777cf7fa68a5ddeb58
BLAKE2b-256 bcdf2d2991085c67daf523bc138e36967ab85f8c09da0dd3cd1eb6ba9f85e7a6

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 385.0 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 64a4eb62da2a754c25208748357b3acf69340835bb50dfac06c411a6ccb91bd0
MD5 7e87bf4ce5c26b1ea374acd4b6541844
BLAKE2b-256 4ad034ef825101a4fcdd6506f5798587aeadc97dce9ab0fa441531e298c0264d

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 95b4ba5b5afad2192c760e7352b9d7bbdd8519581d63d6b92ef2e058a4ae4170
MD5 b0e5d8a19c838a790009a94b4df79241
BLAKE2b-256 b82b7c9146f98452520a9097168fd8ed385ee39590afe9fbccfba4cd41bd4fac

See more details on using hashes here.

File details

Details for the file stardist-0.6.2-cp36-cp36m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: stardist-0.6.2-cp36-cp36m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.6m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.7

File hashes

Hashes for stardist-0.6.2-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ef48edbca3f3982eb4664318679df45c273e4360f3cb708e3ea7a25f376a5d93
MD5 26e9be3f288acc5c21e76335f0f01375
BLAKE2b-256 3d7b77df6d3063e3ecd1f7efa31cb47ea42fc6e0ffad931da0795273921c5ba7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page