Skip to content

Commit 005bebe

Browse files
committed
Infer process needs more work
Signed-off-by: vnath <[email protected]>
1 parent e2b429b commit 005bebe

File tree

3 files changed

+113
-1
lines changed

3 files changed

+113
-1
lines changed

nuclick/nuclick_infer.ipynb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": null,
6+
"metadata": {},
7+
"outputs": [],
8+
"source": []
9+
}
10+
],
11+
"metadata": {
12+
"kernelspec": {
13+
"display_name": "nuclick_tutorial",
14+
"language": "python",
15+
"name": "nuclick_tutorial"
16+
},
17+
"language_info": {
18+
"codemirror_mode": {
19+
"name": "ipython",
20+
"version": 3
21+
},
22+
"file_extension": ".py",
23+
"mimetype": "text/x-python",
24+
"name": "python",
25+
"nbconvert_exporter": "python",
26+
"pygments_lexer": "ipython3",
27+
"version": "3.8.13"
28+
}
29+
},
30+
"nbformat": 4,
31+
"nbformat_minor": 4
32+
}

nuclick/nuclick_infer_process.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
2+
import logging
3+
from typing import Any, Callable, Dict, Sequence
4+
5+
import numpy as np
6+
from monai.apps.nuclick.transforms import AddClickSignalsd, PostFilterLabeld
7+
from monai.transforms import Activationsd, AsChannelFirstd, AsDiscreted, EnsureTyped, SqueezeDimd, ToNumpyd, LoadImaged
8+
9+
from monailabel.interfaces.tasks.infer import InferTask, InferType
10+
from monailabel.transform.post import FindContoursd
11+
from monailabel.transform.writer import PolygonWriter
12+
13+
class NuClick(InferTask):
14+
"""
15+
This provides Inference Engine for pre-trained NuClick segmentation (UNet) model.
16+
"""
17+
18+
def __init__(
19+
self,
20+
path,
21+
network=None,
22+
roi_size=(128, 128),
23+
type=InferType.OTHERS,
24+
labels=None,
25+
dimension=2,
26+
description="A pre-trained NuClick model for interactive cell segmentation for Pathology",
27+
**kwargs,
28+
):
29+
super().__init__(
30+
path=path,
31+
network=network,
32+
roi_size=roi_size,
33+
type=type,
34+
labels=labels,
35+
dimension=dimension,
36+
description=description,
37+
**kwargs,
38+
)
39+
40+
def info(self) -> Dict[str, Any]:
41+
d = super().info()
42+
d["pathology"] = True
43+
d["nuclick"] = True
44+
return d
45+
46+
def pre_transforms(self, data=None):
47+
return [
48+
#LoadImagePatchd(keys="image", mode="RGB", dtype=np.uint8, padding=False),
49+
LoadImaged(keys="image", mode="RGB", dtype=np.uint8, padding=False),
50+
AsChannelFirstd(keys="image"),
51+
AddClickSignalsd(image="image"),
52+
EnsureTyped(keys="image", device=data.get("device") if data else None),
53+
]
54+
55+
def run_inferer(self, data, convert_to_batch=True, device="cuda"):
56+
return super().run_inferer(data, False, device)
57+
58+
def post_transforms(self, data=None) -> Sequence[Callable]:
59+
return [
60+
EnsureTyped(keys="pred", device=data.get("device") if data else None),
61+
Activationsd(keys="pred", sigmoid=True),
62+
AsDiscreted(keys="pred", threshold=0.5),
63+
SqueezeDimd(keys="pred", dim=1),
64+
ToNumpyd(keys=("image", "pred")),
65+
PostFilterLabeld(keys="pred"),
66+
FindContoursd(keys="pred", labels=self.labels),
67+
]
68+
69+
def writer(self, data, extension=None, dtype=None):
70+
writer = PolygonWriter(label=self.output_label_key, json=self.output_json_key)
71+
return writer(data)

nuclick/nuclick_training_notebook.ipynb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
"\n",
99
"This tutorial uses a deep learning framework for interactive segmentation for microscopic images, the framework is referred to as NuClick [1]\n",
1010
"\n",
11+
"Add a figure from the paper, it always helps\n",
12+
"\n",
13+
"What features are included in this tutorial?\n",
14+
"\n",
15+
"From where to download the dataset\n",
16+
"\n",
17+
"Description of the dataset\n",
18+
"\n",
19+
"\n",
1120
"References:\n",
1221
"\n",
1322
"[1] Koohbanani, Navid Alemi, et al. \"NuClick: a deep learning framework for interactive segmentation of microscopic images.\" Medical Image Analysis 65 (2020): 101771."
@@ -1302,7 +1311,7 @@
13021311
},
13031312
{
13041313
"cell_type": "code",
1305-
"execution_count": null,
1314+
"execution_count": 17,
13061315
"metadata": {},
13071316
"outputs": [
13081317
{

0 commit comments

Comments
 (0)