MIP Candy: A Candy for Medical Image Processing

MIP Candy: A Candy for Medical Image Processing#

GitHub code size in bytes PyPI GitHub Release GitHub Release Date - Published_At

Installation#

pip install "mipcandy[standard]"

Quick Start#

Tip

mipcandy_bundles needs to be installed separately or with "mipcandy[all]".

pip install "mipcandy[all]"
from typing import override

from monai.networks.nets import BasicUNet
from monai.transforms import Resized
from torch import nn
from torch.utils.data import DataLoader
from torchvision.transforms import Compose

from mipcandy import SegmentationTrainer, AmbiguousShape, download_dataset, JointTransform, MONAITransform, Normalize,
    NNUNetDataset


class UNetTrainer(SegmentationTrainer):
    @override
    def build_network(self, example_shape: AmbiguousShape) -> nn.Module:
        return BasicUNet(2, example_shape[0], self.num_classes)


download_dataset("nnunet_datasets/PH2", "tutorial/datasets/PH2")
transform = JointTransform(transform=Compose([
    Resized(("image", "label"), (560, 768)), MONAITransform(Normalize(domain=(0, 1), strict=True))
]))
dataset, val_dataset = NNUNetDataset("tutorial/datasets/PH2", transform=transform, device="cuda").fold()
dataloader = DataLoader(dataset, 8, shuffle=True)
val_dataloader = DataLoader(val_dataset, 1, shuffle=False)
trainer = UNetTrainer("tutorial", dataloader, val_dataloader, device="cuda")
trainer.train(1000, note="a nnU-Net style example")