Skip to main content

Repository of model architectures and network weights used for CellMap segmentations.

Project description

GitHub Org's stars

CellMap logo

cellmap-models

GitHub Downloads (all assets, all releases) GitHub License Python Version from PEP 621 TOML

tests black mypy codecov

This package contains the models used for segmention by the CellMap project team at HHMI Janelia.

Installation

We strongly recommend installing within a conda (or mamba) environment to install the package.

conda env create -y -n cellmap python=3.10 pytorch -c pytorch
conda activate cellmap
pip install cellmap-models

Usage

import cellmap_models

Different models are available in the cellmap-models module. For example, to use the models produced by the COSEM pilot project team, and published as part of Whole-cell organelle segmentation in volume electron microscopy:

import cellmap_models.pytorch.cosem as cosem_models
print(cosem_models.models_list)

This will list the available models. To load a specific model, use the load_model function:

model = cosem_models.load_model('setup04/1820500')

More information on each set of models and how to use them is available in the README.md file in the corresponding subdirectory.

Model Export

Export PyTorch models to multiple formats for inference and finetuning.

Export Formats

Each exported model directory contains:

File Format Description
model.pt PyTorch pickle Full model object (torch.save)
model.pt2 torch.export ExportedProgram — supports unflatten for finetuning
model.ts TorchScript Traced model (torch.jit.trace)
model.onnx ONNX For cross-framework inference
metadata.json JSON Model metadata (shapes, voxel sizes, channels, etc.)
README.md Markdown Auto-generated model card

Export a DaCapo model

import cellmap_models.model_export.config as c
c.EXPORT_FOLDER = "/path/to/export/folder"

from cellmap_models.model_export.dacapo_model import export_dacapo_model

export_dacapo_model("my_run_name", iteration=100000)

Export any PyTorch model

import torch
import cellmap_models.model_export.config as c
from cellmap_models.model_export import ModelMetadata, get_export_folder, export_torch_model
import os

c.EXPORT_FOLDER = "/path/to/export/folder"

model = ...  # any torch.nn.Module
model.eval()

metadata = ModelMetadata(
    model_name="my_model",
    model_type="UNet",
    framework="torch",
    spatial_dims=3,
    in_channels=1,
    out_channels=2,
    channels_names=["mito", "er"],
    input_shape=[1, 1, 96, 96, 96],
    output_shape=[1, 2, 96, 96, 96],
    inference_input_shape=[96, 96, 96],
    inference_output_shape=[96, 96, 96],
    input_voxel_size=[8, 8, 8],
    output_voxel_size=[8, 8, 8],
    author="Your Name",
    description="My segmentation model",
)

input_shape = (1, 1, 96, 96, 96)
export_torch_model(model, input_shape, os.path.join(get_export_folder(), "my_model"), metadata=metadata)

Load an exported model for inference

from cellmap_models.model_export.cellmap_model import CellmapModel

model = CellmapModel("/path/to/export/folder/my_model")

print(model.metadata.channels_names)

onnx_session = model.onnx_model        # ONNX Runtime session
ts_model = model.ts_model              # TorchScript model
pt_model = model.pytorch_model         # PyTorch pickle model
exported = model.exported_model         # torch.export ExportedProgram

Load an exported model for finetuning

from cellmap_models.model_export.cellmap_model import CellmapModel

cellmap_model = CellmapModel("/path/to/export/folder/my_model")
model = cellmap_model.train()
# Returns an nn.Module in train mode
# Tries torch.export (model.pt2) + unflatten first, falls back to TorchScript

Push an exported model to Hugging Face Hub

from cellmap_models.model_export import push_to_huggingface

push_to_huggingface(
    folder_path="/path/to/export/folder/my_model",
    repo_id="janelia-cellmap/my-model",
)

Requires pip install cellmap-models[huggingface] or pip install huggingface-hub. You must be logged in via huggingface-cli login first.

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

cellmap_models-0.2.4.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cellmap_models-0.2.4-py3-none-any.whl (40.2 kB view details)

Uploaded Python 3

File details

Details for the file cellmap_models-0.2.4.tar.gz.

File metadata

  • Download URL: cellmap_models-0.2.4.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for cellmap_models-0.2.4.tar.gz
Algorithm Hash digest
SHA256 d2010ef875e9e31147e17b3eb55f6b0c87ef1ac202a6a799efdc05e1335f6562
MD5 fc8de0d604090e88f1f0650877eb868d
BLAKE2b-256 3747c9ae347555db7774f3725fa6b56d3161e5974d58b7e69945509894a83b6d

See more details on using hashes here.

File details

Details for the file cellmap_models-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: cellmap_models-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 40.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for cellmap_models-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f6a94b86f34ed6d40a350b9db3104479450c88ae75e74931b99aead0a7d0a195
MD5 f104c1abc992c3778fe544f2207f53ce
BLAKE2b-256 87b46c205e050ef0cf4994813b72b5a6a33ec59814138dde730827ad60e21da4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page