Cellpose Nuclei Segmentation Model Trained With High Grade Serous Ovarian Cancer Dataset!

Dataset classes

nuclei_classes = {
    0: "background",
    1: "neoplastic",
    2: "inflammatory",
    3: "connective",
    4: "dead",
    5: "macrophage_cytoplasm",
    6: "macrophage_nucleus",
}

1. Install cellseg_models.pytorch and albumentations

pip install cellseg-models-pytorch
pip install albumentations

2. Load trained model

from cellseg_models_pytorch.models.cellpose import CellPose

model = CellPose.from_pretrained("csmp-hub/cellpose-histo-hgsc-nuc-v1")

3. Run inference for one image

from albumentations import Resize, Compose
from cellseg_models_pytorch.utils import FileHandler
from cellseg_models_pytorch.transforms.albu_transforms import MinMaxNormalization

model.set_inference_mode()

# Resize to multiple of 32 of your own choosing
transform = Compose([Resize(1024, 1024), MinMaxNormalization()])

im = FileHandler.read_img(IMG_PATH)
im = transform(image=im)["image"]

prob = model.predict(im)
out = model.post_process(prob)
# out = {"nuc": [(nuc instances (H, W), nuc types (H, W))], "cyto": None, "tissue": None}

3.1 Run inference for image batch

import torch
from cellseg_models_pytorch.utils import FileHandler

model.set_inference_mode()

# dont use random matrices IRL
batch = torch.rand(8, 3, 1024, 1024)

prob = model.predict(im)
out = model.post_process(prob)
# out = {
#  "nuc": [
#    (nuc instances (H, W), nuc types (H, W)),
#    (nuc instances (H, W), nuc types (H, W)),
#    .
#    .
#    .
#    (nuc instances (H, W), nuc types (H, W))    
#  ],
#  "cyto": None,
#  "tissue": None
#}

4. Visualize output

from matplotlib import pyplot as plt
from skimage.color import label2rgb

fig, ax = plt.subplots(2, 3, figsize=(18, 6))
ax[0].imshow(im)
ax[1].imshow(label2rgb(out["nuc"][0][0], bg_label=0)) # inst_map
ax[2].imshow(label2rgb(out["nuc"][0][1], bg_label=0)) # type_map

Citation

cellseg_models.pytorch:

@misc{https://doi.org/10.5281/zenodo.12666959,
  doi = {10.5281/ZENODO.12666959},
  url = {https://zenodo.org/doi/10.5281/zenodo.12666959},
  author = {Okunator,  },
  title = {okunator/cellseg_models.pytorch: v0.2.0},
  publisher = {Zenodo},
  year = {2024},
  copyright = {Creative Commons Attribution 4.0 International}
}

Cellpose original paper:

@article{Stringer2020,
  title = {Cellpose: a generalist algorithm for cellular segmentation},
  volume = {18},
  ISSN = {1548-7105},
  url = {http://dx.doi.org/10.1038/s41592-020-01018-x},
  DOI = {10.1038/s41592-020-01018-x},
  number = {1},
  journal = {Nature Methods},
  publisher = {Springer Science and Business Media LLC},
  author = {Stringer,  Carsen and Wang,  Tim and Michaelos,  Michalis and Pachitariu,  Marius},
  year = {2020},
  month = dec,
  pages = {100โ€“106}
}

Licence

These model weights are released under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Additional Terms

While the Apache 2.0 License grants broad permissions, we kindly request that users adhere to the following guidelines: Medical or Clinical Use: This model is not intended for use in medical diagnosis, treatment, or prevention of disease of real patients. It should not be used as a substitute for professional medical advice.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support