|
1 | 1 | { |
2 | 2 | "cells": [ |
| 3 | + { |
| 4 | + "cell_type": "markdown", |
| 5 | + "metadata": {}, |
| 6 | + "source": [ |
| 7 | + "Copyright (c) MONAI Consortium \n", |
| 8 | + "Licensed under the Apache License, Version 2.0 (the \"License\"); \n", |
| 9 | + "you may not use this file except in compliance with the License. \n", |
| 10 | + "You may obtain a copy of the License at \n", |
| 11 | + " http://www.apache.org/licenses/LICENSE-2.0 \n", |
| 12 | + "Unless required by applicable law or agreed to in writing, software \n", |
| 13 | + "distributed under the License is distributed on an \"AS IS\" BASIS, \n", |
| 14 | + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \n", |
| 15 | + "See the License for the specific language governing permissions and \n", |
| 16 | + "limitations under the License." |
| 17 | + ] |
| 18 | + }, |
3 | 19 | { |
4 | 20 | "cell_type": "markdown", |
5 | 21 | "metadata": {}, |
|
18 | 34 | }, |
19 | 35 | { |
20 | 36 | "cell_type": "code", |
21 | | - "execution_count": 1, |
22 | | - "metadata": {}, |
| 37 | + "execution_count": null, |
| 38 | + "metadata": { |
| 39 | + "scrolled": true |
| 40 | + }, |
23 | 41 | "outputs": [], |
24 | 42 | "source": [ |
25 | 43 | "!python -c \"import monai\" || pip install -q \"monai-weekly[pillow, tqdm]\"\n", |
|
44 | 62 | "name": "stdout", |
45 | 63 | "output_type": "stream", |
46 | 64 | "text": [ |
47 | | - "MONAI version: 0.4.0+119.g9898a89\n", |
48 | | - "Numpy version: 1.19.2\n", |
49 | | - "Pytorch version: 1.7.1\n", |
50 | | - "MONAI flags: HAS_EXT = False, USE_COMPILED = False\n", |
51 | | - "MONAI rev id: 9898a89d24364a9be3525d066a7492adf00b9e6b\n", |
| 65 | + "MONAI version: 1.1.0+11.g7de6c336.dirty\n", |
| 66 | + "Numpy version: 1.22.2\n", |
| 67 | + "Pytorch version: 1.13.0+cu117\n", |
| 68 | + "MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n", |
| 69 | + "MONAI rev id: 7de6c33656a99087ca3b89a817b0879cf093febc\n", |
| 70 | + "MONAI __file__: /workspace/Code/MONAI/monai/__init__.py\n", |
52 | 71 | "\n", |
53 | 72 | "Optional dependencies:\n", |
54 | | - "Pytorch Ignite version: 0.4.2\n", |
55 | | - "Nibabel version: 3.2.1\n", |
56 | | - "scikit-image version: 0.18.1\n", |
57 | | - "Pillow version: 8.1.0\n", |
58 | | - "Tensorboard version: 2.4.1\n", |
59 | | - "gdown version: 3.12.2\n", |
60 | | - "TorchVision version: 0.8.2\n", |
61 | | - "ITK version: 5.1.2\n", |
62 | | - "tqdm version: 4.56.0\n", |
63 | | - "lmdb version: 1.0.0\n", |
64 | | - "psutil version: 5.8.0\n", |
| 73 | + "Pytorch Ignite version: 0.4.10\n", |
| 74 | + "Nibabel version: 4.0.2\n", |
| 75 | + "scikit-image version: 0.19.3\n", |
| 76 | + "Pillow version: 9.0.1\n", |
| 77 | + "Tensorboard version: 2.11.0\n", |
| 78 | + "gdown version: 4.6.0\n", |
| 79 | + "TorchVision version: 0.14.0+cu117\n", |
| 80 | + "tqdm version: 4.64.1\n", |
| 81 | + "lmdb version: 1.3.0\n", |
| 82 | + "psutil version: 5.9.2\n", |
| 83 | + "pandas version: 1.1.5\n", |
| 84 | + "einops version: 0.6.0\n", |
| 85 | + "transformers version: 4.21.3\n", |
| 86 | + "mlflow version: 2.0.1\n", |
| 87 | + "pynrrd version: 1.0.0\n", |
65 | 88 | "\n", |
66 | 89 | "For details about installing the optional dependencies, please visit:\n", |
67 | 90 | " https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies\n", |
|
70 | 93 | } |
71 | 94 | ], |
72 | 95 | "source": [ |
73 | | - "# Copyright 2020 MONAI Consortium\n", |
74 | | - "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", |
75 | | - "# you may not use this file except in compliance with the License.\n", |
76 | | - "# You may obtain a copy of the License at\n", |
77 | | - "# http://www.apache.org/licenses/LICENSE-2.0\n", |
78 | | - "# Unless required by applicable law or agreed to in writing, software\n", |
79 | | - "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", |
80 | | - "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", |
81 | | - "# See the License for the specific language governing permissions and\n", |
82 | | - "# limitations under the License.\n", |
83 | | - "\n", |
84 | 96 | "import os\n", |
85 | 97 | "import shutil\n", |
86 | 98 | "import tempfile\n", |
|
96 | 108 | "from monai.networks.nets import DenseNet121\n", |
97 | 109 | "from monai.engines import SupervisedTrainer\n", |
98 | 110 | "from monai.transforms import (\n", |
99 | | - " AddChannel,\n", |
| 111 | + " EnsureChannelFirst,\n", |
100 | 112 | " Compose,\n", |
101 | 113 | " LoadImage,\n", |
102 | 114 | " RandFlip,\n", |
|
112 | 124 | "print_config()" |
113 | 125 | ] |
114 | 126 | }, |
| 127 | + { |
| 128 | + "cell_type": "markdown", |
| 129 | + "metadata": {}, |
| 130 | + "source": [ |
| 131 | + "## Setup data directory\n", |
| 132 | + "You can specify a directory with the MONAI_DATA_DIRECTORY environment variable.\n", |
| 133 | + "This allows you to save results and reuse downloads.\n", |
| 134 | + "If not specified a temporary directory will be used." |
| 135 | + ] |
| 136 | + }, |
| 137 | + { |
| 138 | + "cell_type": "code", |
| 139 | + "execution_count": 2, |
| 140 | + "metadata": {}, |
| 141 | + "outputs": [ |
| 142 | + { |
| 143 | + "name": "stdout", |
| 144 | + "output_type": "stream", |
| 145 | + "text": [ |
| 146 | + "/workspace/Data\n" |
| 147 | + ] |
| 148 | + } |
| 149 | + ], |
| 150 | + "source": [ |
| 151 | + "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n", |
| 152 | + "root_dir = tempfile.mkdtemp() if directory is None else directory\n", |
| 153 | + "print(root_dir)" |
| 154 | + ] |
| 155 | + }, |
115 | 156 | { |
116 | 157 | "cell_type": "markdown", |
117 | 158 | "metadata": {}, |
|
130 | 171 | }, |
131 | 172 | { |
132 | 173 | "cell_type": "code", |
133 | | - "execution_count": 2, |
| 174 | + "execution_count": 3, |
134 | 175 | "metadata": { |
135 | 176 | "tags": [] |
136 | 177 | }, |
137 | | - "outputs": [ |
138 | | - { |
139 | | - "name": "stderr", |
140 | | - "output_type": "stream", |
141 | | - "text": [ |
142 | | - "MedNIST.tar.gz: 0.00B [00:00, ?B/s]" |
143 | | - ] |
144 | | - }, |
145 | | - { |
146 | | - "name": "stdout", |
147 | | - "output_type": "stream", |
148 | | - "text": [ |
149 | | - "/tmp/tmpxxp5z205\n" |
150 | | - ] |
151 | | - }, |
152 | | - { |
153 | | - "name": "stderr", |
154 | | - "output_type": "stream", |
155 | | - "text": [ |
156 | | - "MedNIST.tar.gz: 59.0MB [00:04, 15.4MB/s] \n" |
157 | | - ] |
158 | | - }, |
159 | | - { |
160 | | - "name": "stdout", |
161 | | - "output_type": "stream", |
162 | | - "text": [ |
163 | | - "\n", |
164 | | - "downloaded file: /tmp/tmpxxp5z205/MedNIST.tar.gz.\n", |
165 | | - "Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", |
166 | | - "Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n" |
167 | | - ] |
168 | | - } |
169 | | - ], |
| 178 | + "outputs": [], |
170 | 179 | "source": [ |
171 | | - "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n", |
172 | | - "root_dir = tempfile.mkdtemp() if directory is None else directory\n", |
173 | | - "print(root_dir)\n", |
174 | | - "\n", |
175 | 180 | "resource = \"https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/MedNIST.tar.gz\"\n", |
176 | 181 | "md5 = \"0bc7306e7427e00ad1c5526a6677552d\"\n", |
177 | 182 | "\n", |
|
183 | 188 | }, |
184 | 189 | { |
185 | 190 | "cell_type": "code", |
186 | | - "execution_count": 3, |
| 191 | + "execution_count": 4, |
187 | 192 | "metadata": {}, |
188 | 193 | "outputs": [ |
189 | 194 | { |
|
224 | 229 | }, |
225 | 230 | { |
226 | 231 | "cell_type": "code", |
227 | | - "execution_count": 4, |
| 232 | + "execution_count": 5, |
228 | 233 | "metadata": {}, |
229 | 234 | "outputs": [], |
230 | 235 | "source": [ |
231 | 236 | "train_transforms = Compose(\n", |
232 | 237 | " [\n", |
233 | 238 | " LoadImage(image_only=True),\n", |
234 | | - " AddChannel(),\n", |
| 239 | + " EnsureChannelFirst(),\n", |
235 | 240 | " ScaleIntensity(),\n", |
236 | 241 | " RandRotate(range_x=np.pi / 12, prob=0.5, keep_size=True),\n", |
237 | 242 | " RandFlip(spatial_axis=0, prob=0.5),\n", |
|
243 | 248 | }, |
244 | 249 | { |
245 | 250 | "cell_type": "code", |
246 | | - "execution_count": 5, |
| 251 | + "execution_count": 6, |
247 | 252 | "metadata": {}, |
248 | 253 | "outputs": [], |
249 | 254 | "source": [ |
|
267 | 272 | }, |
268 | 273 | { |
269 | 274 | "cell_type": "code", |
270 | | - "execution_count": 6, |
271 | | - "metadata": {}, |
| 275 | + "execution_count": 7, |
| 276 | + "metadata": { |
| 277 | + "scrolled": true |
| 278 | + }, |
272 | 279 | "outputs": [], |
273 | 280 | "source": [ |
274 | 281 | "device = torch.device(\"cuda:0\")\n", |
|
280 | 287 | }, |
281 | 288 | { |
282 | 289 | "cell_type": "code", |
283 | | - "execution_count": 7, |
284 | | - "metadata": {}, |
| 290 | + "execution_count": 8, |
| 291 | + "metadata": { |
| 292 | + "scrolled": false |
| 293 | + }, |
285 | 294 | "outputs": [ |
286 | 295 | { |
287 | 296 | "name": "stdout", |
288 | 297 | "output_type": "stream", |
289 | 298 | "text": [ |
290 | | - "Epoch 1/5 Loss: 0.231450617313385\n", |
291 | | - "Epoch 2/5 Loss: 0.07256477326154709\n", |
292 | | - "Epoch 3/5 Loss: 0.04309789836406708\n", |
293 | | - "Epoch 4/5 Loss: 0.04549304023385048\n", |
294 | | - "Epoch 5/5 Loss: 0.025731785222887993\n" |
| 299 | + "2023-01-13 07:55:59,514 - Engine run resuming from iteration 0, epoch 0 until 5 epochs\n", |
| 300 | + "Epoch 1/5 Loss: 0.19491052627563477\n", |
| 301 | + "2023-01-13 07:56:20,118 - Epoch[1] Complete. Time taken: 00:00:20.343\n", |
| 302 | + "Epoch 2/5 Loss: 0.11047982424497604\n", |
| 303 | + "2023-01-13 07:56:39,910 - Epoch[2] Complete. Time taken: 00:00:19.792\n", |
| 304 | + "Epoch 3/5 Loss: 0.023833362385630608\n", |
| 305 | + "2023-01-13 07:56:59,798 - Epoch[3] Complete. Time taken: 00:00:19.887\n", |
| 306 | + "Epoch 4/5 Loss: 0.02349323034286499\n", |
| 307 | + "2023-01-13 07:57:19,839 - Epoch[4] Complete. Time taken: 00:00:20.041\n", |
| 308 | + "Epoch 5/5 Loss: 0.01211395114660263\n", |
| 309 | + "2023-01-13 07:57:39,858 - Epoch[5] Complete. Time taken: 00:00:20.018\n", |
| 310 | + "2023-01-13 07:57:39,859 - Engine run complete. Time taken: 00:01:40.344\n" |
295 | 311 | ] |
296 | 312 | } |
297 | 313 | ], |
|
608 | 624 | "!docker image ls" |
609 | 625 | ] |
610 | 626 | }, |
| 627 | + { |
| 628 | + "cell_type": "markdown", |
| 629 | + "metadata": {}, |
| 630 | + "source": [ |
| 631 | + "## Cleanup data directory\n", |
| 632 | + "Remove directory if a temporary was used." |
| 633 | + ] |
| 634 | + }, |
611 | 635 | { |
612 | 636 | "cell_type": "code", |
613 | 637 | "execution_count": null, |
|
635 | 659 | "name": "python", |
636 | 660 | "nbconvert_exporter": "python", |
637 | 661 | "pygments_lexer": "ipython3", |
638 | | - "version": "3.7.10" |
| 662 | + "version": "3.8.13" |
639 | 663 | } |
640 | 664 | }, |
641 | 665 | "nbformat": 4, |
|
0 commit comments