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 is compatible with Python 3.6 - 3.9.

If you only want to use a StarDist plugin for a GUI-based software, 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. (If you need help and can use conda, take a look at this.)

  2. StarDist can then be installed with pip:

    • If you installed TensorFlow 2 (version 2.x.x):

      pip install stardist
      
    • If you installed TensorFlow 1 (version 1.x.x):

      pip install "stardist[tf1]"
      

Notes

  • Depending on your Python installation, you may need to use pip3 instead of pip.
  • You can find out which version of TensorFlow is installed via pip show tensorflow.
  • 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')

And then try it out with a test image:

from stardist.data import test_image_nuclei_2d
from stardist.plot import render_label
from csbdeep.utils import normalize
import matplotlib.pyplot as plt

img = test_image_nuclei_2d() 

labels, _ = model.predict_instances(normalize(img))

plt.subplot(1,2,1)
plt.imshow(img, cmap="gray")
plt.axis("off")
plt.title("input image")

plt.subplot(1,2,2)
plt.imshow(render_label(labels, img=img))
plt.axis("off")
plt.title("prediction + input overlay")

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).

Multi-class Prediction

StarDist also supports multi-class prediction, i.e. each found object instance can additionally be classified into a fixed number of discrete object classes (e.g. cell types):

Please see the multi-class example notebook if you're interested in this.

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

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.

Napari

We made a plugin for the Python-based multi-dimensional image viewer napari. It directly uses the StarDist Python package and works for 2D and 3D images. Please see the code repository for further details.

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.

Icy

Based on the Fiji plugin, Deborah Schmidt made a StarDist 2D plugin for Icy to use pretrained models. Please see the code repository for further details.

KNIME

Stefan Helfrich has modified the Fiji plugin to be compatible with KNIME. Please see this page for further details.

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.7.3.tar.gz (832.6 kB view details)

Uploaded Source

Built Distributions

stardist-0.7.3-cp39-cp39-win_amd64.whl (757.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

stardist-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

stardist-0.7.3-cp39-cp39-macosx_10_15_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

stardist-0.7.3-cp38-cp38-win_amd64.whl (757.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

stardist-0.7.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

stardist-0.7.3-cp38-cp38-macosx_10_15_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

stardist-0.7.3-cp37-cp37m-win_amd64.whl (757.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

stardist-0.7.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

stardist-0.7.3-cp37-cp37m-macosx_10_15_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

stardist-0.7.3-cp36-cp36m-win_amd64.whl (757.4 kB view details)

Uploaded CPython 3.6m Windows x86-64

stardist-0.7.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

stardist-0.7.3-cp36-cp36m-macosx_10_15_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.6m macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: stardist-0.7.3.tar.gz
  • Upload date:
  • Size: 832.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3.tar.gz
Algorithm Hash digest
SHA256 a1ba10f00dde7f83e4d0f28ebee24e1fc1176d7d1638d5bc5b479b6cb7f90cd3
MD5 583d4552072e73d5962373552751622a
BLAKE2b-256 d32e01a14bd8547474966ce38c2f5cb4447a2cab43b25df89b4dd2683bee6de1

See more details on using hashes here.

File details

Details for the file stardist-0.7.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: stardist-0.7.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 757.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 026e69133158ccc34d8326365554385d25e59b04f04f1e61e61c7e838aefc5e9
MD5 913db51fe549e5aef7e600c68ae6428b
BLAKE2b-256 91bc8c9390d997391cc0a79b2b07083ff76d38e9189ba585348257fe0b119f30

See more details on using hashes here.

File details

Details for the file stardist-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for stardist-0.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3c99b76097b9a54e63e40dd6a7ee5fdfe9acb80b08effe5f220ba38977fc3ff
MD5 f81234f43797a25be118771e23f6518d
BLAKE2b-256 b2122c72cc97aa5b3868a8019950fa5e29712228c75295a4be462b0450a046c9

See more details on using hashes here.

File details

Details for the file stardist-0.7.3-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: stardist-0.7.3-cp39-cp39-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.9, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 44c8fa272503dcdacf1779f0b51aeb9b466a0a08a39ad427ca8040bef1a450d3
MD5 d43b6dddb63643e3e54865b1c4142af4
BLAKE2b-256 0f3d5e8b64cf313e90ae8e33233df0b1fe3f112a9dfd3375b3aa59497d21dd97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 757.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3a43b177ee8a68b37207f40f06cbbb70e36efd7d389b66706b4dc9eecb1f0902
MD5 5f151389dbc8ebee1b0879946e6d1c09
BLAKE2b-256 57f9ed9009eeff56f84c0e52a448ac357a9885b759cb325a659ed749fb1aac1e

See more details on using hashes here.

File details

Details for the file stardist-0.7.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for stardist-0.7.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4df00269c772492d01e250c78a935b02e733eefdb0b7d378ce4a7aab437f2b49
MD5 491ad995cb500ecb34a8e693a38264d3
BLAKE2b-256 037950da73961a1091e31ee866967bd6201a4fd27f74aa854790f520cc0cc317

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.3-cp38-cp38-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.8, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 248924735750d4df3f815fcc2b6dc49c1f6ee0e366ae5c39ed1432306ae9bd69
MD5 1f28baeec7a97dc595cef83564e68c4f
BLAKE2b-256 6b4d44d0ac73befcbda5ed75e5e15e77f1ddd75aaad202b3467210cc0b8b85cb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 757.5 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2a49e95ad333ce884087c032c39adab931fcb3802c44d1f8464cc3b15f9fc3a5
MD5 0ca2b359243f92fa535ea582ba5117d8
BLAKE2b-256 4ffe3e1ace309ba87f97fead02285ca168fcb3409483fcf5859181ea03266e93

See more details on using hashes here.

File details

Details for the file stardist-0.7.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for stardist-0.7.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18424d58bd99872f1329c5e05614b57548cff305c6abbb52f922c7c91f9c601e
MD5 6e7e5b40aa4548184696af306cba3c81
BLAKE2b-256 68113478f5f8980435b3429c0349478dc1d10bb6e465b82b2289c0ec5fc626dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.3-cp37-cp37m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.7m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 34a5f6aa87615e2cc21d9b11351d567c608c3a9288d56fd3dcb2b3dbedaac9e1
MD5 ddbca9f0316f6e532627a5914398aeaa
BLAKE2b-256 44713c5cbd275c574f9a6124f4d365093c8dd112a493755eb062f5d54ca3672e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.3-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 757.4 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 d082841d88a91f55d78238faabc4526e99fa45863b3161426d3fedb4804fcf13
MD5 65cb3f041c787a2f46a1a7da57428460
BLAKE2b-256 b785bf0eb49289fdcb744786a0c8342cbb68ead3a4b4b61b3574c5dccce4c4e6

See more details on using hashes here.

File details

Details for the file stardist-0.7.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for stardist-0.7.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8be35b85b4726cc7f320529768145e262b936fa0dc550af19fdc1ee6295f5c7f
MD5 ec186d56a83f059ea7e7df8109fc8bd3
BLAKE2b-256 d5de586e0015bdc3c97b5fc3e2ca3b4a677f77739110cd4d9ac5814bc52b9a9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.3-cp36-cp36m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.6m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for stardist-0.7.3-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 269ff21140ed3230cfc69990b2dd720789204a7503af36e5e60010ae4d703746
MD5 c663e71df26083217d0dd497e9c895bb
BLAKE2b-256 62d8875313aede107979617c1bc97d73a103b62cbedad85184a721fe931456ab

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