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:

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

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

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

Uploaded Source

Built Distributions

stardist-0.7.2-cp39-cp39-win_amd64.whl (757.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

stardist-0.7.2-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.2-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.2-cp38-cp38-win_amd64.whl (758.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

stardist-0.7.2-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.2-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.2-cp37-cp37m-win_amd64.whl (758.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

stardist-0.7.2-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.2-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.2-cp36-cp36m-win_amd64.whl (758.4 kB view details)

Uploaded CPython 3.6m Windows x86-64

stardist-0.7.2-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.2-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.2.tar.gz.

File metadata

  • Download URL: stardist-0.7.2.tar.gz
  • Upload date:
  • Size: 826.0 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.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2.tar.gz
Algorithm Hash digest
SHA256 dff4791a2eab2765fd8e774ef2f9db5ded50dc3d17e97817dcd7d6ed9e9bc5bd
MD5 286ee88fc206d4757a87e201c1a75bde
BLAKE2b-256 a86ce09e6730d9eb469e5baf2c1d08415300a80f48d03bbebd61d8bdae9417a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 757.9 kB
  • Tags: CPython 3.9, 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.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9d57fe60b3ce52dad08ff8feb6d60b26e0ea2474082cad9a66a40164aaa51018
MD5 187617e2e58bd4f21577c55c8d4e7cec
BLAKE2b-256 55bd86ad9ec00debd5674c01b0c06ff070f3b50016b1b0a5fd83b4c8d795e9ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d04053c473e52d13bb6cfc712b6f6c872b4735dc814c1b5c20809384fd6b24ef
MD5 2b4a300968532aa141e74719c9c774e9
BLAKE2b-256 f858f54a2f5db7d2863eabdbcdf24af62adf976a236ca021a65ee0b9ff8770e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-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.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0dd384679d1236207b396f2e7aef38f64f41751f88a6c5916acfd65daba1eab0
MD5 c280f8df75e8e79e37a5c28a97a532bd
BLAKE2b-256 0cf6b9a7ab5ae0a0c2a50f3fae11c69f912abe043ad6be8dc10c8f8fe122e07d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 758.7 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.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e292c2f7f793aee7070d6d75f4a32dcf1d7d2de2c0754e09551d60c869fff0a6
MD5 a9c81ac92ef432ddf8c46b1351f22e30
BLAKE2b-256 fab4f687e3d24e6e70e2a511edbf6323aa04cada9ba7ba5b9f2bbac5592a40d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.7.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3812b4db0afdcfe75c5b6db46e71ba2688eba72fa5e12d154d6a148e95873af
MD5 17edcf20641cd55683cc135aad14102b
BLAKE2b-256 d7c0373aa07b6f08592bd7eca53bb154bdfe4f434fe461f80bc77bae943b3289

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-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.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d16f5012de62aa68c31bdc155be7f632e9fa46baaf45a15519638aed2e522aa4
MD5 aa730f40e529c144247c8a4409eb84cd
BLAKE2b-256 f84f2f4e0dbab6cfb4341f87e9e46887964f8f380a796dede15a3f6625b3edff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 758.5 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.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1129c768deed0ee43b05e0b6072906de0c8993212e16b28aa6206d21c04063df
MD5 3631c9ca66e7c9e9db7f5655745a16e8
BLAKE2b-256 eef14a5a595d4b1e65a6b6060038067b5271646e9278443710c55ebbbc2edf86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.7.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5ecd028ab62d0dc42b73f8a6ceffb0e7fd5089291b351cc7577ef6dea9516632
MD5 db664b47c93f5d25ab036186a1d5e953
BLAKE2b-256 1ba75e5bb039584f81f3038cc8fb3523592ff5b1db444bec02a04eb6d3d202b6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-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.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 35bcf901d58a84bf2a6a396769a9d4a414f787ea3be4ce47c8191d25e63be22e
MD5 4782d2ca39b6c4a5de4aeab1e7d16224
BLAKE2b-256 a227cb904be6751f23138ecc49b4dc9ec0ed1994f3805a3898c2ba1a0d1678e8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 758.4 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.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 ff90670d632ef6760f1cce0b2a68c0f73d5c991d770da6c20fd33c3173ad54fb
MD5 886305111f6a1bdd2e6308989ed80dc4
BLAKE2b-256 d15ccc8e0fa3dac2546539c722706cbbeb5a8b3aeb5bf51417ba755a42b5b233

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.7.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7df2b1b242b29a97e5c4424b7f8387255c36999f5fdf61a8ccb46f298010519b
MD5 af986efd9d6178424a6108375e24aa5b
BLAKE2b-256 ac67c117c052c8ca7e4369dff6b4a1d4ff815332f3549963ff5a432567aa8083

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.7.2-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.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/49.6.0.post20200814 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.7

File hashes

Hashes for stardist-0.7.2-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 affc21cc3495e31cb7fae7ebd520cacbeec7d5d623e7d1680fa0c7dbd3ff0af1
MD5 d23127d1f76b16e178b083bd68122e4e
BLAKE2b-256 b261ef62239ef31660b59394eb9d11a1d24ee6cc630969a990524a2cbb9fff45

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