Error While using 'Total Segmentator'

I do not get an error message when entering the command line and installing TotalSegmentator, the installation is fully successful. Unfortunately, I still get the same error when applying the module in Slicer.

Are you getting any messages here?

image

Could you specify your hardware and run 3D Slicer in admin mode for a test?
Please use the CTChest demo dataset from “Sample Data”

image

This is what I get when running in admin mode.

I have Windows 10 Home on a Lenovo Thinkpad T460s with the following processor: Intel(R) Core™ i5-6200U CPU @ 2.30GHz, 2400 Mhz, 2 Core(s), 4 Logical Processor(s)

What happens if you go to the “PyTorch” extension and press the button “Install PyTorch”? Probably the same?

Yes that is correct, then I get the same error

@lassoan has just made a helpful update of the PyTorch extension:

image

you may want to uninstall and reinstall PyTorch after updating. Please bear in mind that your laptop will run TotalSegmentator in CPU mode.

@lassoan it would be great if you could add a “Check CUDA” button

Thanks, I indeed read it somewhere else as well. This update fixed the first error I had, @lassoan thank you for that!

With the reinstalled PyTorch I got some errors for missing modules, which I pip installed. My access got denied when installing xvfbwrapper and it mentioned that I got a too new version of ITK-snap as well for totalsegmentator. In Slicer I currently get the following error:

Processing started
Writing input file to C:/Users/schra/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-27_17+37+33.895/total-segmentator-input.nii
Creating segmentations with TotalSegmentator AI…
Total Segmentator arguments: [‘-i’, ‘C:/Users/schra/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-27_17+37+33.895/total-segmentator-input.nii’, ‘-o’, ‘C:/Users/schra/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-27_17+37+33.895/segmentation’, ‘–ml’, ‘–task’, ‘total’, ‘–fast’]

with

Traceback (most recent call last):
File “C:\Users\schra\AppData\Local\NA-MIC\Slicer 5.2.1\bin\Python\slicer\util.py”, line 2961, in tryWithErrorDisplay
yield
File “C:/Users/schra/AppData/Local/NA-MIC/Slicer 5.2.1/NA-MIC/Extensions-31317/TotalSegmentator/lib/Slicer-5.2/qt-scripted-modules/TotalSegmentator.py”, line 258, in onApplyButton
self.logic.process(self.ui.inputVolumeSelector.currentNode(), self.ui.outputSegmentationSelector.currentNode(),
File “C:/Users/schra/AppData/Local/NA-MIC/Slicer 5.2.1/NA-MIC/Extensions-31317/TotalSegmentator/lib/Slicer-5.2/qt-scripted-modules/TotalSegmentator.py”, line 714, in process
proc = slicer.util.launchConsoleProcess(totalSegmentatorCommand + options)
File “C:\Users\schra\AppData\Local\NA-MIC\Slicer 5.2.1\bin\Python\slicer\util.py”, line 3463, in launchConsoleProcess
proc = subprocess.Popen(args, env=startupEnv, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True, startupinfo=info, cwd=cwd)
File “C:\Users\schra\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\subprocess.py”, line 951, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File “C:\Users\schra\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\subprocess.py”, line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
OSError: [WinError 193] %1 is not a valid Win32 application

Was installing the separate missing modules not the correct thing to do? And what can I do to overrule the denial of the missing xvfbwrapper module? Or is this not the way to go?

Again, thanks a lot for thinking along!

I managed to install the xvfbwrapper and right ITK-snap version. Everything seems to work now!

Thanks for the help!

1 Like

Hi there,

I installed Git etc. I ininstalled PyTorch and got a message that it was installed. I then tried install PyTorch, but nothing happens, even not messages…is there any additional package I need such that pytorch wil be installed?

Thnx
Ronald

Hi Ronald,

Have you been using the PyTorch extension for uninstalling and then installing PyTorch as outlined above?

Dear Rudolf

I tried several times and finally I disconnected my PC and used wifi with eduroam and now it was able to unistall and install pytorch. But I encountered the next error "Processing started

Writing input file to C:/Users/Ronald/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-28_17+14+28.271/total-segmentator-input.nii

Creating segmentations with TotalSegmentator AI…

Total Segmentator arguments: [‘-i’, ‘C:/Users/Ronald/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-28_17+14+28.271/total-segmentator-input.nii’, ‘-o’, ‘C:/Users/Ronald/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-28_17+14+28.271/segmentation’, ‘–ml’, ‘–task’, ‘total’, ‘–fast’]

Traceback (most recent call last):

File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Scripts\TotalSegmentator”, line 10, in

import nibabel as nib

ModuleNotFoundError: No module named ‘nibabel’

"

So, it seems i need to install the nibabel package. Should I do so within slider using the python window or do you recommend to do so thru cmd window.

Thnx
Ronald

Outlook-cid_image0.png

Please “Upgrade” the Totalsegmentator package first from the extension, now with running public WLAN.

image

If that does not help, you could pip install missing packages from the Python Interactor like this:

slicer.util.pip_install("nibabel")

Some steps further:-)

Still an error:
Processing started
Writing input file to C:/Users/Ronald/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-28_17+54+58.904/total-segmentator-input.nii
Creating segmentations with TotalSegmentator AI…
Total Segmentator arguments: [‘-i’, ‘C:/Users/Ronald/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-28_17+54+58.904/total-segmentator-input.nii’, ‘-o’, ‘C:/Users/Ronald/AppData/Local/Temp/Slicer/__SlicerTemp__2022-12-28_17+54+58.904/segmentation’, ‘–ml’, ‘–task’, ‘total’, ‘–fast’]

Please cite the following paper when using nnUNet:

Isensee, F., Jaeger, P.F., Kohl, S.A.A. et al. “nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation.” Nat Methods (2020). nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation | Nature Methods

If you have questions or suggestions, feel free to open an issue at GitHub - MIC-DKFZ/nnUNet

preprocessing C:\Users\Ronald\AppData\Local\Temp\nnunet_tmp_8pv33ag1\s01.nii.gz
using preprocessor GenericPreprocessor
before crop: (1, 293, 200, 200) after crop: (1, 293, 200, 200) spacing: [3. 3. 3.]

no resampling necessary
no resampling necessary
before: {‘spacing’: array([3., 3., 3.]), ‘spacing_transposed’: array([3., 3., 3.]), ‘data.shape (data is transposed)’: (1, 293, 200, 200)}
after: {‘spacing’: array([3., 3., 3.]), ‘data.shape (data is resampled)’: (1, 293, 200, 200)}

(1, 293, 200, 200)
This worker has ended successfully, no errors to report
Traceback (most recent call last):
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Scripts\TotalSegmentator”, line 201, in
main()
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Scripts\TotalSegmentator”, line 179, in main
seg = nnUNet_predict_image(args.input, args.output, task_id, model=model, folds=folds,
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\totalsegmentator\nnunet.py”, line 232, in nnUNet_predict_image
nnUNet_predict(tmp_dir, tmp_dir, task_id, model, folds, trainer, tta)
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\totalsegmentator\nnunet.py”, line 106, in nnUNet_predict
predict_from_folder(model_folder_name, dir_in, dir_out, folds, save_npz, num_threads_preprocessing,
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\inference\predict.py”, line 668, in predict_from_folder
return predict_cases_fastest(model, list_of_lists[part_id::num_parts], output_files[part_id::num_parts], folds,
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\inference\predict.py”, line 493, in predict_cases_fastest
res = trainer.predict_preprocessed_data_return_seg_and_softmax(d, do_mirroring=do_tta,
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\training\network_training\nnUNetTrainerV2.py”, line 211, in predict_preprocessed_data_return_seg_and_softmax
ret = super().predict_preprocessed_data_return_seg_and_softmax(data,
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\training\network_training\nnUNetTrainer.py”, line 516, in predict_preprocessed_data_return_seg_and_softmax
ret = self.network.predict_3D(data, do_mirroring=do_mirroring, mirror_axes=mirror_axes,
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\network_architecture\neural_network.py”, line 147, in predict_3D
res = self._internal_predict_3D_3Dconv_tiled(x, step_size, do_mirroring, mirror_axes, patch_size,
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\network_architecture\neural_network.py”, line 384, in _internal_predict_3D_3Dconv_tiled
predicted_patch = self._internal_maybe_mirror_and_pred_3D(
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\network_architecture\neural_network.py”, line 510, in _internal_maybe_mirror_and_pred_3D
result_torch = to_cuda(result_torch, gpu_id=self.get_device())
File “C:\Users\Ronald\AppData\Local\NA-MIC\Slicer 5.2.1\lib\Python\Lib\site-packages\nnunet\utilities\to_torch.py”, line 31, in to_cuda
data = data.cuda(gpu_id, non_blocking=non_blocking)
RuntimeError: CUDA out of memory. Tried to allocate 356.00 MiB (GPU 0; 6.00 GiB total capacity; 4.75 GiB already allocated; 0 bytes free; 4.78 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
Exception ignored in: <totalsegmentator.libs.DummyFile object at 0x0000020E346E5250>
AttributeError: ‘DummyFile’ object has no attribute ‘flush’
Using ‘fast’ option: resampling to lower resolution (3mm)
Resampling…
Resampled in 4.12s
Predicting…

I got CUDA out of memory. Should I try to install the CPU pytorch version? I do have an nvidia card, but the amount of memory is very low…

Thnx
Ronald

No personal experience, but yes, you may want to try that, uninstall PyTorch with the extension and reinstall it in CPU mode:

image

Please let us know how it works.

1 Like

Dear Rudolf

It works! Many thanks for your help and suggestions. It is relatively fast (even with CPU) and worked quite well even for a low dose CT (done along with a PET scan)…so it generates quite well segmentations for a poor quality scan.

Regards
Ronald

2 Likes

@rbumm
Does total segmentator require cuDNN beyond regular cuda installation? I am getting this error message on Ubuntu 22.04 with Slicer 5.2.1. Cuda 12.0 is installed, and pytorch extension installed cu118 enabled torch.

Traceback (most recent call last):
  File "/home/exouser/Slicer/bin/Python/slicer/util.py", line 2961, in tryWithErrorDisplay
    yield
  File "/home/exouser/Slicer/NA-MIC/Extensions-31317/TotalSegmentator/lib/Slicer-5.2/qt-scripted-modules/TotalSegmentator.py", line 258, in onApplyButton
    self.logic.process(self.ui.inputVolumeSelector.currentNode(), self.ui.outputSegmentationSelector.currentNode(),
  File "/home/exouser/Slicer/NA-MIC/Extensions-31317/TotalSegmentator/lib/Slicer-5.2/qt-scripted-modules/TotalSegmentator.py", line 647, in process
    self.logProcessOutput(proc)
  File "/home/exouser/Slicer/NA-MIC/Extensions-31317/TotalSegmentator/lib/Slicer-5.2/qt-scripted-modules/TotalSegmentator.py", line 556, in logProcessOutput
    raise CalledProcessError(retcode, proc.args, output=proc.stdout, stderr=proc.stderr)
subprocess.CalledProcessError: Command '['/home/exouser/Slicer/bin/../bin/PythonSlicer', '/home/exouser/Slicer/lib/Python/bin/TotalSegmentator', '-i', '/tmp/Slicer-exouser/__SlicerTemp__2023-01-14_01+20+25.853/total-segmentator-input.nii', '-o', '/tmp/Slicer-exouser/__SlicerTemp__2023-01-14_01+20+25.853/segmentation', '--ml', '--task', 'total', '--fast']' returned non-zero exit status 1.

and then there is this error on the module pane:

Hi

I think you need CUDA 11.6 or 11.7

Hope it helps

Thanks I already got the cuda part taken care of. PyTorch worked fine. The issue was indeed the missing cuDNN library, which is not part of the CUDA package and you actually have to register with Nvidia, agree to their terms and download it. https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

I can confirm that after installing it (cuDNN8.7.0), everything it worked fine. It is shame though that Nvidia makes getting cuDNN so hard.

1 Like

@muratmaga great that it works now, on my windows systems cudnn and it´s folders seem to be present automatically on every Python where TotalSegmentator is installed, and there has never be the need for separate downloads. Would be interesting to find out why it was necessary on your system …

I use Windows, too, and I don’t remember ever having to manually install cuDNN either. Nobody else has reported this issue until now either. So, probably this manual cuDNN installation is only needed on certain Linux systems.