提取影像特征时一次性加载大量影像数据会导致jupyter内核崩溃

报错

Visual Studio Code (1.106.3, undefined, desktop)
Jupyter Extension Version: 2025.9.1.
Python Extension Version: 2025.16.0.
Python Environment Extension Version: 1.8.0.
Pylance Extension not installed.
Platform: darwin (arm64).
Home = /Users/ww
Temp Storage folder ~/Library/Application Support/Qoder/User/globalStorage/ms-toolsai.jupyter/version-2025.9.1
Workspace folder ~/coding/0science/20250219multimodal/process_data/annotated_image
23:23:50.423 [info] Starting Kernel (Python Path: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python, Venv, 3.13.5) for '~/coding/0science/20250219multimodal/process_data/annotated_image/analyze-v3.ipynb' (disableUI=true)
23:23:50.701 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -m pip list
23:23:50.704 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
23:23:50.704 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -m ipykernel_launcher --f=~/Library/Jupyter/runtime/kernel-v3025ce73f43c248a22b94332af52c809e45372728.json
    > cwd: ~/coding/0science/20250219multimodal/process_data/annotated_image
23:23:50.731 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -c "import pip;print('6af208d0-cb9c-427f-b937-ff563e17efdf')"
23:23:51.152 [info] Starting Kernel (Python Path: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python, Venv, 3.13.5) for '~/coding/0science/20250219multimodal/process_data/annotated_image/analyze-basic-v1.ipynb' (disableUI=true)
23:23:51.160 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
23:23:51.184 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -m ipykernel_launcher --f=~/Library/Jupyter/runtime/kernel-v3771cb1a93f405bb466db8a07bdcd1a2f182a0059.json
    > cwd: ~/coding/0science/20250219multimodal/process_data/annotated_image
23:23:51.608 [warn] No interpreter with path /opt/anaconda3/envs/ML_3.8/bin/python found in Python API, will convert Uri path to string as Id /opt/anaconda3/envs/ML_3.8/bin/python
23:23:52.734 [info] Kernel successfully started
23:23:52.736 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python ~/.qoder/extensions/ms-toolsai.jupyter-2025.9.1-darwin-arm64/pythonFiles/printJupyterDataDir.py
23:23:52.865 [info] Kernel successfully started
23:23:53.650 [warn] Kernel Spec for 'ML_3.8' (~/Library/Jupyter/kernels/ml_3.8/kernel.json) hidden, as we cannot find a matching interpreter argv = '/opt/anaconda3/envs/ML_3.8/bin/python'. To resolve this, please change '/opt/anaconda3/envs/ML_3.8/bin/python' to point to the fully qualified Python executable.
23:26:51.614 [error] Disposing session as kernel process died ExitCode: undefined, Reason: 
23:27:44.257 [info] Restart requested ~/coding/0science/20250219multimodal/process_data/annotated_image/analyze-v3.ipynb
23:27:44.260 [warn] Cancel all remaining cells due to dead kernel
23:27:44.264 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
23:27:44.276 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -m ipykernel_launcher --f=~/Library/Jupyter/runtime/kernel-v3530924d96828f427bf49277046002467cb385809.json
    > cwd: ~/coding/0science/20250219multimodal/process_data/annotated_image
23:27:44.720 [info] Restarted 4451d6ea-fc81-4d6e-a0eb-535756738b74
23:36:18.734 [info] Restart requested ~/coding/0science/20250219multimodal/process_data/annotated_image/analyze-v3.ipynb
23:36:18.806 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
23:36:18.807 [info] Process Execution: ~/coding/0science/20250219multimodal/process_data/annotated_image/.venv/bin/python -m ipykernel_launcher --f=~/Library/Jupyter/runtime/kernel-v33d4f556f7f97ca01f60bdd21bc090ff38ee328b6.json
    > cwd: ~/coding/0science/20250219multimodal/process_data/annotated_image
23:36:19.244 [info] Restarted 4451d6ea-fc81-4d6e-a0eb-535756738b74

分析

崩溃了好几次,把问题甩给AI,最后分析出来是提取影像特征时一次性加载大量影像数据

结论

问题的根本原因是 PyRadiomics批量处理时的大规模内存加载缺少主动垃圾回收机制 ,导致在约3分钟(影像组学特征提取阶段)时内存溢出。通过在关键检查点添加 gc.collect()torch.mps.empty_cache() 调用,可完全解决此问题。