Skip to content

Commit

Permalink
fix #1649
Browse files Browse the repository at this point in the history
Signed-off-by: YunLiu <[email protected]>
  • Loading branch information
KumoLiu committed Feb 22, 2024
1 parent 1783005 commit b6a83da
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 72 deletions.
98 changes: 53 additions & 45 deletions 2d_classification/mednist_tutorial.ipynb

Large diffs are not rendered by default.

76 changes: 49 additions & 27 deletions 2d_classification/monai_101.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -57,45 +57,47 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.8/dist-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
"/usr/local/lib/python3.10/dist-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MONAI version: 1.2.0rc4+21.g7f067564\n",
"MONAI version: 1.3.0\n",
"Numpy version: 1.22.2\n",
"Pytorch version: 2.0.0a0+1767026\n",
"MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n",
"MONAI rev id: 7f06756472fd5514c3c2f2a6710e3fa4d1748e90\n",
"MONAI __file__: /workspace/monai/monai-in-dev/monai/__init__.py\n",
"Pytorch version: 2.1.0a0+29c30b1\n",
"MONAI flags: HAS_EXT = True, USE_COMPILED = False, USE_META_DICT = False\n",
"MONAI rev id: 865972f7a791bf7b42efbcd87c8402bd865b329e\n",
"MONAI __file__: /opt/monai/monai/__init__.py\n",
"\n",
"Optional dependencies:\n",
"Pytorch Ignite version: 0.4.11\n",
"ITK version: 5.3.0\n",
"Nibabel version: 5.1.0\n",
"scikit-image version: 0.20.0\n",
"scikit-image version: 0.22.0\n",
"scipy version: 1.11.1\n",
"Pillow version: 9.2.0\n",
"Tensorboard version: 2.9.0\n",
"gdown version: 4.7.1\n",
"TorchVision version: 0.15.0a0\n",
"TorchVision version: 0.16.0a0\n",
"tqdm version: 4.65.0\n",
"lmdb version: 1.4.1\n",
"psutil version: 5.9.4\n",
"pandas version: 1.5.2\n",
"einops version: 0.6.1\n",
"transformers version: 4.21.3\n",
"mlflow version: 2.3.0\n",
"mlflow version: 2.7.1\n",
"pynrrd version: 1.0.0\n",
"clearml version: 1.13.1\n",
"\n",
"For details about installing the optional dependencies, please visit:\n",
" https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies\n",
Expand All @@ -111,12 +113,14 @@
"import sys\n",
"import tempfile\n",
"import torch\n",
"import ignite\n",
"\n",
"from monai.apps import MedNISTDataset\n",
"from monai.config import print_config\n",
"from monai.data import DataLoader\n",
"from monai.engines import SupervisedTrainer\n",
"from monai.handlers import StatsHandler\n",
"from monai.engines import SupervisedTrainer, SupervisedEvaluator\n",
"from monai.handlers import StatsHandler, TensorBoardStatsHandler, ValidationHandler\n",
"from monai.handlers.utils import from_engine\n",
"from monai.inferers import SimpleInferer\n",
"from monai.networks import eval_mode\n",
"from monai.networks.nets import densenet121\n",
Expand All @@ -139,14 +143,14 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/workspace/data\n"
"/workspace/Data\n"
]
}
],
Expand All @@ -171,7 +175,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
Expand Down Expand Up @@ -205,28 +209,30 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2023-04-21 15:37:46,567 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n",
"2023-04-21 15:37:46,567 - INFO - File exists: /workspace/data/MedNIST.tar.gz, skipped downloading.\n",
"2023-04-21 15:37:46,568 - INFO - Non-empty folder exists in /workspace/data/MedNIST, skipped extracting.\n"
"2024-02-22 05:34:20,240 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n",
"2024-02-22 05:34:20,241 - INFO - File exists: /workspace/Data/MedNIST.tar.gz, skipped downloading.\n",
"2024-02-22 05:34:20,241 - INFO - Non-empty folder exists in /workspace/Data/MedNIST, skipped extracting.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Loading dataset: 100%|██████████| 47164/47164 [00:18<00:00, 2525.58it/s]\n"
"Loading dataset: 100%|██████████| 47164/47164 [00:19<00:00, 2430.78it/s]\n",
"Loading dataset: 100%|██████████| 5895/5895 [00:02<00:00, 2508.13it/s]\n"
]
}
],
"source": [
"dataset = MedNISTDataset(root_dir=root_dir, transform=transform, section=\"training\", download=True)"
"dataset = MedNISTDataset(root_dir=root_dir, transform=transform, section=\"training\", download=True)\n",
"valdata = MedNISTDataset(root_dir=root_dir, transform=transform, section=\"validation\", download=False)"
]
},
{
Expand All @@ -238,19 +244,31 @@
"\n",
"To train a model that can perform the classification task, we will use the DenseNet-121 which is known for its performance on the ImageNet dataset.\n",
"\n",
"For a typical supervised training workflow, MONAI provides `SupervisedTrainer` to define the hyper-parameters."
"For a typical supervised training workflow, MONAI provides `SupervisedTrainer` to define the hyper-parameters and `SupervisedEvaluator` to track model progress with handlers to save metrics. "
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"max_epochs = 5\n",
"model = densenet121(spatial_dims=2, in_channels=1, out_channels=6).to(\"cuda:0\")\n",
"\n",
"logging.basicConfig(stream=sys.stdout, level=logging.INFO)\n",
"\n",
"evaluator = SupervisedEvaluator(\n",
" device=torch.device(\"cuda:0\"),\n",
" val_data_loader=DataLoader(valdata, batch_size=512, shuffle=False, num_workers=4),\n",
" network=model,\n",
" inferer=SimpleInferer(),\n",
" key_val_metric={\"val_acc\": ignite.metrics.Accuracy(from_engine([\"pred\", \"label\"]))},\n",
" val_handlers=[\n",
" StatsHandler(iteration_log=False),\n",
" TensorBoardStatsHandler(iteration_log=False)\n",
" ],\n",
")\n",
"trainer = SupervisedTrainer(\n",
" device=torch.device(\"cuda:0\"),\n",
" max_epochs=max_epochs,\n",
Expand All @@ -259,7 +277,11 @@
" optimizer=torch.optim.Adam(model.parameters(), lr=1e-5),\n",
" loss_function=torch.nn.CrossEntropyLoss(),\n",
" inferer=SimpleInferer(),\n",
" train_handlers=StatsHandler(),\n",
" train_handlers=[\n",
" ValidationHandler(validator=evaluator, epoch_level=True, interval=1),\n",
" StatsHandler(),\n",
" TensorBoardStatsHandler(tag_name=\"train_loss\", output_transform=from_engine([\"loss\"], first=True))\n",
" ],\n",
")"
]
},
Expand Down Expand Up @@ -290,7 +312,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 7,
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -344,7 +366,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
"version": "3.10.12"
}
},
"nbformat": 4,
Expand Down

0 comments on commit b6a83da

Please sign in to comment.