|
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