Skip to content

a generalist algorithm for cellular segmentation with human-in-the-loop capabilities

License

Notifications You must be signed in to change notification settings

herophilus/cellpose

 
 

Repository files navigation

Cellpose

cellpose

Documentation Status tests Coverage Status PyPI version Downloads Python version Licence: GPL v3 Contributors website Image.sc forum repo size GitHub stars GitHub forks

A generalist algorithm for cell and nucleus segmentation.

Cellpose was written by Carsen Stringer and Marius Pachitariu. To learn about Cellpose 2.0 (human-in-the-loop), read the paper or watch the talk. To learn about Cellpose 1.0, read the paper or watch the talk. For support, please open an issue. Please find the detailed documentation at cellpose.readthedocs.io.

CITATION: If you use the original built-in models (cyto or nuclei), please cite the Cellpose 1.0 paper:
Stringer, C., Wang, T., Michaelos, M., & Pachitariu, M. (2021). Cellpose: a generalist algorithm for cellular segmentation . Nature methods, 18(1), 100-106.

If you use the new human-in-the-loop training or the new models, please cite the Cellpose 2.0 paper:
Stringer, C., & Pachitariu, M. (2022). Cellpose 2.0: how to train your own model . bioRxiv.

If you want to improve Cellpose for yourself and for everyone else, please consider contributing manual segmentations for a few of your images via the built-in GUI interface (see instructions below).

🌟 UPDATE v2.0 (April 2022) 🌟

Cellpose 2.0 now allows human-in-the-loop training of models! To learn more...

  • Check out the twitter thread for an overview.
  • Check out the preprint for more details on the algorithm and the performance.
  • Watch the short intro talk and watch the longer tutorial talk which goes through running Cellpose 2.0 in the GUI and a jupyter notebook.
  • Check out the full human-in-the-loop video.
  • Check out the colab notebook to get cloud access to a GPU to train your models or run your custom models: Open In Colab.
  • See how to use it yourself in the docs and also check out the help info in the Models menu in the GUI.

Results of human-in-the-loop

cellpose2 vs cellpose1 results

and updated GUI:

cellpose2 gui screenshot

Mxnet is no longer supported in cellpose. To use mxnet, please use v1.0.2.

Installation

Local installation (< 2 minutes)

System requirements

Linux, Windows and Mac OS are supported for running the code. For running the graphical interface you will need a Mac OS later than Yosemite. At least 8GB of RAM is required to run the software. 16GB-32GB may be required for larger images and 3D volumes. The software has been heavily tested on Windows 10 and Ubuntu 18.04 and less well-tested on Mac OS. Please open an issue if you have problems with installation.

Dependencies

cellpose relies on the following excellent packages (which are automatically installed with conda/pip if missing):

Instructions

If you have an older cellpose environment you can remove it with conda env remove -n cellpose before creating a new one.

If you are using a GPU, make sure its drivers and the cuda libraries are correctly installed.

  1. Install an Anaconda distribution of Python -- Choose Python 3.8 and your operating system. Note you might need to use an anaconda prompt if you did not add anaconda to the path.
  2. Open an anaconda prompt / command prompt with conda for python 3 in the path
  3. Create a new environment with conda create --name cellpose python=3.8.
  4. To activate this new environment, run conda activate cellpose
  5. To install the minimal version of cellpose, run python -m pip install cellpose.
  6. To install cellpose and the GUI, run python -m pip install cellpose[gui]. If you're on a zsh server, you may need to use ' ' around the cellpose[gui] call: `python -m pip install 'cellpose[gui]'.

To upgrade cellpose (package here), run the following in the environment:

python -m pip install cellpose --upgrade

Note you will always have to run conda activate cellpose before you run cellpose. If you want to run jupyter notebooks in this environment, then also conda install jupyter and python -m pip install matplotlib.

You can also try to install cellpose and the GUI dependencies from your base environment using the command

python -m pip install cellpose[gui]

If you have issues with installation, see the docs for more details. You can also use the cellpose environment file included in the repository and create a cellpose environment with conda env create -f environment.yml which may solve certain dependency issues.

If these suggestions fail, open an issue.

GPU version (CUDA) on Windows or Linux

If you plan on running many images, you may want to install a GPU version of torch (if it isn't already installed).

Before installing the GPU version, remove the CPU version:

pip uninstall torch

Follow the instructions here to determine what version to install. The Anaconda install is strongly recommended, and then choose the CUDA version that is supported by your GPU (newer GPUs may need newer CUDA versions > 10.2). For instance this command will install the 11.3 version on Linux and Windows (note the torchvision and torchaudio commands are removed because cellpose doesn't require them):

conda install pytorch cudatoolkit=11.3 -c pytorch

Installation of github version

Follow steps from above to install the dependencies. Then run

pip install git+https://www.github.com/mouseland/cellpose.git

If you want edit ability to the code, in the github repository folder, run pip install -e .. If you want to go back to the pip version of cellpose, then say pip install cellpose.

Run cellpose 1.0 without local python installation

You can quickly try out Cellpose on the website first (some features disabled).

You can also run Cellpose in google colab with a GPU:

  • a code-based notebook: Open In Colab
  • a more user-friendly notebook for 2D segmentation written by @pr4deepr: Open In Colab
  • a user-friendly ZeroCostDL4Mic notebook that includes training cellpose models, written by @guijacquemet: Open In Colab

The colab notebooks are recommended if you have issues with MKL or run speed on your local computer (and are running 3D volumes). Colab does not allow you to run the GUI, but you can save *_seg.npy files in colab that you can download and open in the GUI.

Executable file: You can download an executable file for Windows 10 or for Mac OS (High Sierra or greater) that were made using PyInstaller on Intel processors (MKL acceleration works, but no GPU support). Note in both cases it will take a few seconds to open.

  • The Mac OS file will download as cellpose_mac OR cellpose_mac.dms. You will need to make it into an executable file and run it through the terminal:
  1. Open a terminal and run cd ~/Downloads/.
  2. Run chmod 777 cellpose_mac OR chmod 777 cellpose_mac.dms to make the file executable.
  3. Run ./cellpose_mac OR ./cellpose_mac.dms to open the cellpose GUI. Messages from cellpose will be printed in the terminal.
  4. You can also run using the command line interface, e.g. as ./cellpose_mac --dir ~/Pictures/ --chan 2 --save_png.
  • The Windows 10 file is an exe and you can click on it to run the GUI. You can also run using the command line interface, e.g. as cellpose.exe --dir Pictures/ --chan 2 --save_png

Run cellpose locally

The quickest way to start is to open the GUI from a command line terminal. You might need to open an anaconda prompt if you did not add anaconda to the path:

python -m cellpose

The first time cellpose runs it downloads the latest available trained model weights from the website.

You can now drag and drop any images (*.tif, *.png, *.jpg, *.gif) into the GUI and run Cellpose, and/or manually segment them. When the GUI is processing, you will see the progress bar fill up and during this time you cannot click on anything in the GUI. For more information about what the GUI is doing you can look at the terminal/prompt you opened the GUI with. For example data, see website or this google drive folder. For best accuracy and runtime performance, resize images so cells are less than 100 pixels across.

Step-by-step demo

  1. Download the google drive folder and unzip it. These are a subset of the test images from the paper.
  2. Start the GUI with python -m cellpose.
  3. Drag an image from the folder into the GUI.
  4. Set the model (in demo all are cyto) and the channel you want to segment (in demo all are green). Optionally set the second channel if you are segmenting cyto and have an available nucleus channel.
  5. Click the calibrate button to estimate the size of the objects in the image. Alternatively you can set the cell diameter by hand and press ENTER. You will see the size you set as a red disk at the bottom left of the image.
  6. Click the run segmentation button. If MASKS ON is checked, you should see masks drawn on the image.
  7. Now you can click the LEFT/RIGHT arrow keys to move through the folder and segment another image.

On the demo images each of these steps should run in less than a few seconds on a standard laptop or desktop (with mkl working).

3D segmentation

For multi-channel, multi-Z tiff's, the expected format is Z x channels x Ly x Lx.

Download of pretrained models

The models will be downloaded automatically from the website when you first run a pretrained model in cellpose. If you are having issues with the downloads, you can download them from this google drive zip file, unzip the file and put the models in your home directory under the path .cellpose/models/, e.g. on Windows this would be C:/Users/YOUR_USERNAME/.cellpose/models/ or on Linux this would be /home/YOUR_USERNAME/.cellpose/models/, so /home/YOUR_USERNAME/.cellpose/models/cyto_0 is the full path to one model for example. If you cannot access google drive, the models are also available on baidu: Link:https://pan.baidu.com/s/1CARpRGCBHIYaz7KeyoX-fg ; Fetch code:pose ; thanks to @qixinbo!

Older software releases

UPDATE v1.0 (Jan 2022)

Cellpose has been relatively stable for a while now. Small bugs will continue to be fixed, but we are now releasing a reference 1.0 version. Larger updates to Cellpose will go towards a new 2.0 candidate version to be released soon.

This update fixes bugs in GUI and plotting. It also stops model weight reloading to improve speed. resample=True is default again as in earlier releases, turn off with --no_resample. Now logging is turned off by default. Turn on in CLI with --verbose flag or in a script/notebook by

from cellpose.io import logger_setup
logger_setup();

To install this version please use

pip install cellpose==1.0.2

UPDATE v0.7 (Nov 2021)

Omnipose is now officially available and supported as part of Cellpose. pip install omnipose and use the 'omni' flag and models to take advantage of it for long cells! (E.g., filamentous bacteria.) Omnipose was written by Kevin Cutler (@kevinjohncutler). To learn about Omnipose, read the paper. If you use Omnipose in your work please cite the Cellpose paper and the Omnipose paper.

UPDATE v0.6 (Dec 2020)

Pytorch is now the default deep neural network software for cellpose. Mxnet will still be supported. To install mxnet (CPU), run pip install mxnet-mkl. To use mxnet in a notebook, declare torch=False when creating a model, e.g. model = models.Cellpose(torch=False). To use mxnet on the command line, add the flag --mxnet, e.g. python -m cellpose --dir ~/images/ --mxnet. The pytorch implementation is 20% faster than the mxnet implementation when running on the GPU and 20% slower when running on the CPU.

Dynamics are computed using bilinear interpolation by default instead of nearest neighbor interpolation. Set interp=False in model.eval to turn off. The bilinear interpolation will be slightly slower on the CPU, but it is faster than nearest neighbor if using torch and the GPU is enabled.

Timing (v0.6)

You can check if cellpose is running the MKL version (if you are using the CPU not the GPU) by adding the flag --check_mkl. If you are not using MKL cellpose will be much slower. Here are Cellpose run times divided into the time it takes to run the deep neural network (DNN) and the time for postprocessing (gradient tracking, segmentation, quality control etc.). The DNN runtime is shown using either a GPU (Nvidia GTX 1080Ti) or a CPU (Intel 10-core 7900X), with or without network ensembling (4net vs 1net). The postprocessing runtime is similar regardless of ensembling or CPU/GPU version. Runtime is shown for different image sizes, all with a cell diameter of 30 pixels (the average from our training set).

256 pix 512 pix 1024 pix
DNN (1net, GPU) 0.054 s 0.12 s 0.31 s
DNN (1net, CPU) 0.30 s 0.65 s 2.4 s
DNN (4net, GPU) 0.23 s 0.41 s 1.3 s
DNN (4net, CPU) 1.3 s 2.5 s 9.1 s
Postprocessing (CPU) 0.32 s 1.2 s 6.1 s

About

a generalist algorithm for cellular segmentation with human-in-the-loop capabilities

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 97.0%
  • Python 3.0%