|
78 | 78 | }, |
79 | 79 | { |
80 | 80 | "cell_type": "code", |
81 | | - "execution_count": 3, |
| 81 | + "execution_count": 4, |
82 | 82 | "metadata": {}, |
83 | 83 | "outputs": [ |
| 84 | + { |
| 85 | + "name": "stderr", |
| 86 | + "output_type": "stream", |
| 87 | + "text": [ |
| 88 | + "Task09_Spleen.tar: 1.50GB [00:43, 36.7MB/s] \n" |
| 89 | + ] |
| 90 | + }, |
84 | 91 | { |
85 | 92 | "name": "stdout", |
86 | 93 | "output_type": "stream", |
87 | 94 | "text": [ |
88 | | - "2022-09-21 03:23:09,534 - INFO - Expected md5 is None, skip md5 check for file Task05_Prostate.tar.\n", |
89 | | - "2022-09-21 03:23:09,535 - INFO - File exists: Task05_Prostate.tar, skipped downloading.\n", |
90 | | - "2022-09-21 03:23:09,536 - INFO - Non-empty folder exists in Task05_Prostate, skipped extracting.\n" |
| 95 | + "2022-09-29 03:49:02,357 - INFO - Downloaded: Task09_Spleen.tar\n", |
| 96 | + "2022-09-29 03:49:02,359 - INFO - Expected md5 is None, skip md5 check for file Task09_Spleen.tar.\n", |
| 97 | + "2022-09-29 03:49:02,359 - INFO - Writing into directory: ./.\n" |
91 | 98 | ] |
92 | 99 | } |
93 | 100 | ], |
94 | 101 | "source": [ |
95 | 102 | "root = \"./\"\n", |
96 | | - "work_dir = os.path.join(root, 'auto3dseg_work_dir')\n", |
| 103 | + "work_dir = os.path.join(root, 'ref_api_work_dir')\n", |
97 | 104 | "if not os.path.isdir(work_dir):\n", |
98 | 105 | " os.makedirs(work_dir)\n", |
99 | 106 | "\n", |
100 | | - "msd_task = \"Task05_Prostate\"\n", |
| 107 | + "msd_task = \"Task09_Spleen\"\n", |
101 | 108 | "dataroot = os.path.join(root, msd_task)\n", |
102 | | - "datalist_file = \"../tasks/msd/Task05_Prostate/msd_task05_prostate_folds.json\"\n", |
| 109 | + "datalist_file = os.path.join(\"..\", \"tasks\", \"msd\", msd_task, \"msd_\" + msd_task.lower() + \"_folds.json\")\n", |
103 | 110 | "\n", |
104 | 111 | "resource = \"https://msd-for-monai.s3-us-west-2.amazonaws.com/\" + msd_task + \".tar\"\n", |
105 | 112 | "compressed_file = os.path.join(root, msd_task + \".tar\")\n", |
|
116 | 123 | }, |
117 | 124 | { |
118 | 125 | "cell_type": "code", |
119 | | - "execution_count": 4, |
| 126 | + "execution_count": 5, |
120 | 127 | "metadata": {}, |
121 | 128 | "outputs": [], |
122 | 129 | "source": [ |
123 | 130 | "data_src_cfg = {\n", |
124 | | - " \"name\": \"Task05_Prostate\",\n", |
125 | | - " \"task\": \"segmentation\",\n", |
126 | | - " \"modality\": \"MRI\",\n", |
127 | | - " \"datalist\": datalist_file,\n", |
128 | | - " \"dataroot\": dataroot,\n", |
| 131 | + " \"name\": msd_task, # optional\n", |
| 132 | + " \"task\": \"segmentation\", # optional\n", |
| 133 | + " \"modality\": \"MRI\", # required\n", |
| 134 | + " \"datalist\": datalist_file, # required\n", |
| 135 | + " \"dataroot\": dataroot, # required\n", |
129 | 136 | "}\n", |
130 | 137 | "input = os.path.join(work_dir, 'input.yaml')\n", |
131 | 138 | "ConfigParser.export_config_file(data_src_cfg, input)" |
|
152 | 159 | }, |
153 | 160 | { |
154 | 161 | "cell_type": "code", |
155 | | - "execution_count": 6, |
| 162 | + "execution_count": 5, |
156 | 163 | "metadata": {}, |
157 | 164 | "outputs": [ |
158 | 165 | { |
159 | 166 | "name": "stderr", |
160 | 167 | "output_type": "stream", |
161 | 168 | "text": [ |
162 | | - "100%|██████████| 30/30 [00:04<00:00, 6.51it/s]\n" |
| 169 | + "100%|██████████| 40/40 [01:34<00:00, 2.37s/it]" |
163 | 170 | ] |
164 | 171 | }, |
165 | 172 | { |
166 | 173 | "name": "stdout", |
167 | 174 | "output_type": "stream", |
168 | 175 | "text": [ |
169 | | - "2022-09-21 03:23:29,492 - WARNING - Data is not completely uniform. MONAI transforms may provide unexpected result\n" |
| 176 | + "2022-09-29 01:43:36,891 - WARNING - Data is not completely uniform. MONAI transforms may provide unexpected result\n" |
| 177 | + ] |
| 178 | + }, |
| 179 | + { |
| 180 | + "name": "stderr", |
| 181 | + "output_type": "stream", |
| 182 | + "text": [ |
| 183 | + "\n" |
170 | 184 | ] |
171 | 185 | } |
172 | 186 | ], |
|
183 | 197 | "Besides the Python API call, user can also use command line interface (CLI) provided by the user's OS. One example is the following bash commands:\n", |
184 | 198 | "\n", |
185 | 199 | "```bash\n", |
186 | | - "python -m monai.apps.auto3dseg DataAnalyzer get_all_case_stats --datalist=\"../tasks/msd/Task05_Prostate/msd_task05_prostate_folds.json\" --dataroot=\"./Task05_Prostate\" --output_path=\"./auto3dseg_work_dir/data_stats.yaml\"\n", |
| 200 | + "python -m monai.apps.auto3dseg DataAnalyzer get_all_case_stats --datalist=\"../tasks/msd/Task09_Spleen/msd_task09_spleen_folds.json\" --dataroot=\"./Task09_Spleen\" --output_path=\"./ref_api_work_dir/data_stats.yaml\"\n", |
187 | 201 | "```" |
188 | 202 | ] |
189 | 203 | }, |
|
202 | 216 | }, |
203 | 217 | { |
204 | 218 | "cell_type": "code", |
205 | | - "execution_count": 7, |
| 219 | + "execution_count": 6, |
206 | 220 | "metadata": {}, |
207 | 221 | "outputs": [ |
208 | 222 | { |
209 | 223 | "name": "stderr", |
210 | 224 | "output_type": "stream", |
211 | 225 | "text": [ |
212 | | - "algo_templates.tar.gz: 100%|██████████| 280k/280k [00:01<00:00, 241kB/s] " |
| 226 | + "algo_templates.tar.gz: 100%|██████████| 280k/280k [00:00<00:00, 607kB/s] " |
213 | 227 | ] |
214 | 228 | }, |
215 | 229 | { |
216 | 230 | "name": "stdout", |
217 | 231 | "output_type": "stream", |
218 | 232 | "text": [ |
219 | | - "2022-09-21 03:23:38,373 - INFO - Downloaded: /tmp/tmp8t3vbaz0/algo_templates.tar.gz\n", |
220 | | - "2022-09-21 03:23:38,375 - INFO - Expected md5 is None, skip md5 check for file /tmp/tmp8t3vbaz0/algo_templates.tar.gz.\n", |
221 | | - "2022-09-21 03:23:38,377 - INFO - Writing into directory: ./auto3dseg_work_dir.\n" |
| 233 | + "2022-09-29 01:43:37,829 - INFO - Downloaded: /tmp/tmpodiia3qq/algo_templates.tar.gz\n", |
| 234 | + "2022-09-29 01:43:37,830 - INFO - Expected md5 is None, skip md5 check for file /tmp/tmpodiia3qq/algo_templates.tar.gz.\n", |
| 235 | + "2022-09-29 01:43:37,830 - INFO - Writing into directory: ./ref_api_work_dir.\n" |
222 | 236 | ] |
223 | 237 | }, |
224 | 238 | { |
|
232 | 246 | "name": "stdout", |
233 | 247 | "output_type": "stream", |
234 | 248 | "text": [ |
235 | | - "2022-09-21 03:23:38,856 - INFO - ./auto3dseg_work_dir/segresnet2d_0\n", |
236 | | - "2022-09-21 03:23:39,401 - INFO - ./auto3dseg_work_dir/segresnet2d_1\n", |
237 | | - "2022-09-21 03:23:39,823 - INFO - ./auto3dseg_work_dir/segresnet2d_2\n", |
238 | | - "2022-09-21 03:23:40,353 - INFO - ./auto3dseg_work_dir/segresnet2d_3\n", |
239 | | - "2022-09-21 03:23:40,776 - INFO - ./auto3dseg_work_dir/segresnet2d_4\n", |
240 | | - "2022-09-21 03:23:41,363 - INFO - ./auto3dseg_work_dir/dints_0\n", |
241 | | - "2022-09-21 03:23:41,846 - INFO - ./auto3dseg_work_dir/dints_1\n", |
242 | | - "2022-09-21 03:23:42,431 - INFO - ./auto3dseg_work_dir/dints_2\n", |
243 | | - "2022-09-21 03:23:42,914 - INFO - ./auto3dseg_work_dir/dints_3\n", |
244 | | - "2022-09-21 03:23:43,453 - INFO - ./auto3dseg_work_dir/dints_4\n", |
245 | | - "2022-09-21 03:23:43,868 - INFO - ./auto3dseg_work_dir/swinunetr_0\n", |
246 | | - "2022-09-21 03:23:44,361 - INFO - ./auto3dseg_work_dir/swinunetr_1\n", |
247 | | - "2022-09-21 03:23:44,779 - INFO - ./auto3dseg_work_dir/swinunetr_2\n", |
248 | | - "2022-09-21 03:23:45,297 - INFO - ./auto3dseg_work_dir/swinunetr_3\n", |
249 | | - "2022-09-21 03:23:45,711 - INFO - ./auto3dseg_work_dir/swinunetr_4\n", |
250 | | - "2022-09-21 03:23:46,255 - INFO - ./auto3dseg_work_dir/segresnet_0\n", |
251 | | - "2022-09-21 03:23:46,713 - INFO - ./auto3dseg_work_dir/segresnet_1\n", |
252 | | - "2022-09-21 03:23:47,168 - INFO - ./auto3dseg_work_dir/segresnet_2\n", |
253 | | - "2022-09-21 03:23:47,730 - INFO - ./auto3dseg_work_dir/segresnet_3\n", |
254 | | - "2022-09-21 03:23:48,280 - INFO - ./auto3dseg_work_dir/segresnet_4\n" |
| 249 | + "2022-09-29 01:43:38,651 - INFO - ./ref_api_work_dir/segresnet2d_0\n", |
| 250 | + "2022-09-29 01:43:39,029 - INFO - ./ref_api_work_dir/segresnet2d_1\n", |
| 251 | + "2022-09-29 01:43:39,411 - INFO - ./ref_api_work_dir/segresnet2d_2\n", |
| 252 | + "2022-09-29 01:43:39,916 - INFO - ./ref_api_work_dir/segresnet2d_3\n", |
| 253 | + "2022-09-29 01:43:40,373 - INFO - ./ref_api_work_dir/segresnet2d_4\n", |
| 254 | + "2022-09-29 01:43:41,656 - INFO - ./ref_api_work_dir/dints_0\n", |
| 255 | + "2022-09-29 01:43:42,284 - INFO - ./ref_api_work_dir/dints_1\n", |
| 256 | + "2022-09-29 01:43:42,678 - INFO - ./ref_api_work_dir/dints_2\n", |
| 257 | + "2022-09-29 01:43:43,172 - INFO - ./ref_api_work_dir/dints_3\n", |
| 258 | + "2022-09-29 01:43:43,681 - INFO - ./ref_api_work_dir/dints_4\n", |
| 259 | + "2022-09-29 01:43:44,448 - INFO - ./ref_api_work_dir/swinunetr_0\n", |
| 260 | + "2022-09-29 01:43:44,807 - INFO - ./ref_api_work_dir/swinunetr_1\n", |
| 261 | + "2022-09-29 01:43:45,177 - INFO - ./ref_api_work_dir/swinunetr_2\n", |
| 262 | + "2022-09-29 01:43:45,687 - INFO - ./ref_api_work_dir/swinunetr_3\n", |
| 263 | + "2022-09-29 01:43:48,313 - INFO - ./ref_api_work_dir/swinunetr_4\n", |
| 264 | + "2022-09-29 01:43:48,983 - INFO - ./ref_api_work_dir/segresnet_0\n", |
| 265 | + "2022-09-29 01:43:49,597 - INFO - ./ref_api_work_dir/segresnet_1\n", |
| 266 | + "2022-09-29 01:43:50,008 - INFO - ./ref_api_work_dir/segresnet_2\n", |
| 267 | + "2022-09-29 01:43:50,393 - INFO - ./ref_api_work_dir/segresnet_3\n", |
| 268 | + "2022-09-29 01:43:51,990 - INFO - ./ref_api_work_dir/segresnet_4\n" |
255 | 269 | ] |
256 | 270 | } |
257 | 271 | ], |
|
290 | 304 | }, |
291 | 305 | { |
292 | 306 | "cell_type": "code", |
293 | | - "execution_count": 8, |
| 307 | + "execution_count": 7, |
294 | 308 | "metadata": {}, |
295 | 309 | "outputs": [], |
296 | 310 | "source": [ |
|
313 | 327 | }, |
314 | 328 | { |
315 | 329 | "cell_type": "code", |
316 | | - "execution_count": 9, |
| 330 | + "execution_count": 6, |
317 | 331 | "metadata": {}, |
318 | 332 | "outputs": [ |
319 | 333 | { |
320 | 334 | "name": "stdout", |
321 | 335 | "output_type": "stream", |
322 | 336 | "text": [ |
323 | | - "{'num_iterations': 12000, 'num_iterations_per_validation': 6000, 'num_images_per_batch': 2, 'num_epochs': 2000, 'num_warmup_iterations': 6000}\n" |
| 337 | + "{'num_iterations': 32000, 'num_iterations_per_validation': 16000, 'num_images_per_batch': 2, 'num_epochs': 2000, 'num_warmup_iterations': 16000}\n" |
324 | 338 | ] |
325 | 339 | } |
326 | 340 | ], |
|
371 | 385 | "source": [ |
372 | 386 | "history = import_bundle_algo_history(work_dir, only_trained=False)\n", |
373 | 387 | "for task in history:\n", |
374 | | - " for name, algo in task.items():\n", |
| 388 | + " for _, algo in task.items():\n", |
375 | 389 | " algo.train(train_param) # can use default params by `algo.train()`\n", |
376 | 390 | " acc = algo.get_score()\n", |
377 | 391 | " algo_to_pickle(algo, template_path=algo.template_path, best_metrics=acc)" |
|
461 | 475 | "name": "python", |
462 | 476 | "nbconvert_exporter": "python", |
463 | 477 | "pygments_lexer": "ipython3", |
464 | | - "version": "3.8.13" |
| 478 | + "version": "3.8.12" |
465 | 479 | }, |
466 | 480 | "vscode": { |
467 | 481 | "interpreter": { |
|
0 commit comments