MIP Candy: A Candy for Medical Image Processing#
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")