Skip to main content

StarDist - Object Detection with Star-convex Shapes

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.

Apple M1

For installation of tensorflow and stardist on Apple M1 architecture, please see this excellent post by Peter Sobolewski.

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

Uploaded Source

Built Distributions

stardist-0.8.0-cp39-cp39-win_amd64.whl (803.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

stardist-0.8.0-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.8.0-cp39-cp39-macosx_10_15_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

stardist-0.8.0-cp38-cp38-win_amd64.whl (804.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

stardist-0.8.0-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.8.0-cp38-cp38-macosx_10_15_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

stardist-0.8.0-cp37-cp37m-win_amd64.whl (803.8 kB view details)

Uploaded CPython 3.7m Windows x86-64

stardist-0.8.0-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.8.0-cp37-cp37m-macosx_10_15_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

stardist-0.8.0-cp36-cp36m-win_amd64.whl (803.6 kB view details)

Uploaded CPython 3.6m Windows x86-64

stardist-0.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB view details)

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

stardist-0.8.0-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.8.0.tar.gz.

File metadata

  • Download URL: stardist-0.8.0.tar.gz
  • Upload date:
  • Size: 878.7 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.8.0.tar.gz
Algorithm Hash digest
SHA256 54dc09cd88f4409a74717976589013ded8ce3b41d1d34ffe2060be486cc35c94
MD5 913f9ee8ea67cd949953813c67091f1b
BLAKE2b-256 10f7cd795c6050b5e1d1d987ae97898e47a20aa1b95e98a3a6e4c7c248478be1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 803.5 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.8.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 54f7c44990f0e87dabd415e92b95a1f0c78fb1169455b5d8d4a3fff9d7ad166b
MD5 f0c441748abe6c5146e8b5c2b902892c
BLAKE2b-256 ec4b0dfb87d9c52e0861d36376eb556a8dbbf1c91067041f60d6a83e93d6db46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 68b8789f1dd7aa857fe4f104c2a85a33fbf5e2633d6c456d64ebc1a3182c0eb4
MD5 9a22a11d470f2e2e4cce13336d0507a9
BLAKE2b-256 e5aceba2a770b1080b9e819a7d97e80cbab7f897a210cdb145ce01f982aa6099

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-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.8.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ab926d2190edb3906f06ec4d0c8958074cde706d7147becc2578aa19e84b79df
MD5 88ddc19613b6740ae739072b811ffd49
BLAKE2b-256 45675c5e5eead388fbf291198dcce8225a80c3657393ecc7cd184ef3e30418c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 804.0 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.8.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4ef458aa17eb7505753dfda383b9fa62b79644da0dd19ce2f10d47de57d02705
MD5 7de15d6393b1de7338ea5504c7a306e9
BLAKE2b-256 e8cdc96c86ac1b20f96fd06b4a4b004617b6f65560f4806688ca8b4f730c14c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 59d90b025fc4dccb47ac3fa9a9db5d069b9fd8a3c2f6810e7cd8e9634563fbdf
MD5 87eaea5056afd562c1441e83198d41cc
BLAKE2b-256 a1797d2b207878b966c24d235cef1cf8ee58442dc6e1d9d03855fd75a6d847e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-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.8.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bf44e55299a608143d6374df58030b680914916f64b5b6c012eb2788b5be4650
MD5 15a804a960782bafe25040d4ac8383c1
BLAKE2b-256 3ee391ff26168bf6af6403217c1fbb3629e9f14217ec2c8e4bf7b664e364697d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 803.8 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.8.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7d8cf612863dc48298f1625e0da7186bb96fd0164a9de757f5478492d8a01a2d
MD5 06b7266b5b301d0efc2b3326b4a6b865
BLAKE2b-256 cff637f1ad9530755ceb7ab80767c0534c3fe63cfde69a30b657eca7c8063d86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 67e235332edbfb2fcbce1bbad4f51ccf7d3237c3bbe3615b85b31201c15a5daa
MD5 6125a678f74ceb9518ea0073ffac1d8f
BLAKE2b-256 5ba3c974b2853c3d55a1e2fe868a4c084aea3e5ac048d265cd2e2fe897c1df12

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-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.8.0-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e01ca684c97ac246960379abdd5cf273d2e83f45bf9323fa7768f1a3964acbf2
MD5 d29465f6bc115e22a9b9843b9e119991
BLAKE2b-256 6457f4c8d0f0bab937d0ed89f004ee7ac6275db1650b468e37f359a4b8a3c173

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 803.6 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.8.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 30979e516bd280b60b7ad0a73841ec975e7b6cffdcbaf01b05049ca08060a85f
MD5 077775125809336c70eaf869b850ea79
BLAKE2b-256 3bafddea343c436ed3f13c9759bee76662b2d54b22a306c075712bb5e61b398f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stardist-0.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ff669b99dd51b41a2d369c5a026b8da6cc7a9e17c54f1c27706adf306e176a5
MD5 c6763c01ab5a672bc8f5228d521fd6b0
BLAKE2b-256 c5b7dff3d3665b5e5ae6da7665382b3ad24fd4d7af673e7aea20f6c638639ace

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stardist-0.8.0-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.8.0-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c1eba072ba7dda8ebf2817847e61a3aa5fb852df8f06872b134ab672fccdb57a
MD5 84d83dd668f46c2af4ae425bcad53f16
BLAKE2b-256 a89c25d846b5c4d3b0ce5b979904c0c8c4c924abea05772db0fe39e01bbe0ed0

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