kbressem / faimed3d

Extension to fastai for volumetric medical data
MIT License
32 stars 14 forks source link

multiprocessing fails when reading DICOM series #1

Closed kbressem closed 3 years ago

kbressem commented 3 years ago

Learner get stuck at the beginning of training if training images are loaded from a DICOM series. Training is still possible if num_workersargument in the dataloader is set to 0, but is very slow. Problem does not occur if training images are loaded from 3D NIfTI volumes.

jlvahldiek commented 3 years ago

This problem may be caused by ITKv5's new threading models utilized in SimpleITK 2.0 (see i.e. https://github.com/SimpleITK/SimpleITK/issues/1239).

Temporary workaround:

set sitk's global default number of threads to 1 before setting the dataloader sitk.ProcessObject_SetGlobalDefaultNumberOfThreads(1)

jlvahldiek commented 3 years ago

Another workaround:

leave global default number of threads unchanged and change sitk's global default threader to 'PLATFORM' before setting the dataloader: sitk.ProcessObject_SetGlobalDefaultThreader('PLATFORM')

jlvahldiek commented 3 years ago

4

kbressem commented 3 years ago

1 cb03062411e7752598c147fd44ff8d80aace58c8

Implemented in TensorDicom3D.load func

 if fn.is_dir(): 
            sitk.ProcessObject_SetGlobalDefaultThreader('PLATFORM')
            im = TensorDicom3D.read_dicom_series(str(fn))

Seems to work and Series are read in similar speed to NIfTI.