Training

At the beginning of training, cellpose computes the flow field representation for each mask image (dynamics.labels_to_flows).

The cellpose pretrained models are trained using resized images so that the cells have the same median diameter across all images. If you choose to use a pretrained model, then this fixed median diameter is used.

If you choose to train from scratch, you can set the median diameter you want to use for rescaling with the --diam_mean flag. We trained all model zoo models with a diameter of 30.0 pixels, except the nuclei model which used a diameter of 17 pixels, so if you want to start with a pretrained model, it will default to those values.

The models will be saved in the image directory (--dir) in a folder called models/.

The same channel settings apply for training models.

Note Cellpose expects the labelled masks (0=no mask, 1,2…=masks) in a separate file, e.g:

wells_000.tif
wells_000_masks.tif

You can use a different ending from _masks with the --mask_filter option, e.g. --mask_filter _masks_2022.

Also, you can train a model using the labels from the GUI (_seg.npy) by using the following option --mask_filter _seg.npy.

If you use the –img_filter option (--img_filter _img in this case):

wells_000_img.tif
wells_000_masks.tif

Warning

The path given to --dir and --test_dir should be an absolute path.

To train on cytoplasmic images (green cyto and red nuclei) starting with a pretrained model from cellpose (one of the model zoo models), we also have included the recommended training parameters in the command below:

python -m cellpose --train --dir ~/images_cyto/train/ --test_dir ~/images_cyto/test/ --pretrained_model cyto --chan 2 --chan2 1 --learning_rate 0.1 --weight_decay 0.0001 --n_epochs 100

You can train from scratch as well:

python -m cellpose --train --dir ~/images_nuclei/train/ --pretrained_model None

To train the cyto model from scratch using the same parameters we did, download the dataset and run

python -m cellpose --train --train_size --use_gpu --dir ~/cellpose_dataset/train/ --test_dir ~/cellpose_dataset/test/ --img_filter _img --pretrained_model None --chan 2 --chan2 1

You can also specify the full path to a pretrained model to use:

python -m cellpose --dir ~/images_cyto/test/ --pretrained_model ~/images_cyto/test/model/cellpose_35_0 --save_png

In a notebook, you can train with the train_seg function:

from cellpose import io, models, train
io.logger_setup()

output = io.load_train_test_data(train_dir, test_dir, image_filter="_img",
                                mask_filter="_masks", look_one_level_down=False)
images, labels, image_names, test_images, test_labels, image_names_test = output

# e.g. retrain a Cellpose model
model = models.CellposeModel(model_type="cyto3")

model_path = train.train_seg(model.net, train_data=images, train_labels=labels,
                            channels=[1,2], normalize=True,
                            test_data=test_images, test_labels=test_labels,
                            weight_decay=1e-4, SGD=True, learning_rate=0.1,
                            n_epochs=100, model_name="my_new_model")

Training arguments on the CLI

--train               train network using images in dir
--train_size          train size network at end of training
--test_dir TEST_DIR   folder containing test data (optional)
--mask_filter MASK_FILTER
                        end string for masks to run on. use '_seg.npy' for
                        manual annotations from the GUI. Default: _masks
--diam_mean DIAM_MEAN
                        mean diameter to resize cells to during training -- if
                        starting from pretrained models it cannot be changed
                        from 30.0
--learning_rate LEARNING_RATE
                        learning rate. Default: 0.2
--weight_decay WEIGHT_DECAY
                        weight decay. Default: 1e-05
--n_epochs N_EPOCHS   number of epochs. Default: 500
--batch_size BATCH_SIZE
                        batch size. Default: 8
--min_train_masks MIN_TRAIN_MASKS
                        minimum number of masks a training image must have to
                        be used. Default: 5
--SGD SGD             use SGD
--save_every SAVE_EVERY
                        number of epochs to skip between saves. Default: 100
--model_name_out MODEL_NAME_OUT
                        Name of model to save as, defaults to name describing
                        model architecture. Model is saved in the folder
                        specified by --dir in models subfolder.