-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed
Labels
questionFurther information is requestedFurther information is requested
Description
Describe the bug
Spacing transform also outputs affine information. CenterScaleCrop expects a tuple of 1 and not 3. Spacingd followed by CenterScaleCropd works fine.
To Reproduce
import numpy as np
from monai.transforms import (Compose,
AddChannel, Lambda, Spacing, CenterScaleCrop, ToTensor,
AddChanneld, Lambdad, Spacingd, CenterScaleCropd, ToTensord)
data_dicts = [{'img': np.random.randint(0, 5, (5,5,5))}]
trans_d = Compose([
Lambdad('img', lambda x: x),
AddChanneld('img'),
Spacingd('img', pixdim=(1,1,1.25)),
CenterScaleCropd('img', roi_scale=(.75, .75, .75)),
ToTensord('img')]
)
trans_spacing_then_centerscale = Compose([
Lambda(lambda x: np.random.randint(0, x, (5,5,5))),
AddChannel(),
Spacing(pixdim=(1,1,1.25)),
CenterScaleCrop(roi_scale=(.75, .75, .75)),
ToTensor()]
)
trans_centerscale_then_spacing = Compose([
Lambda(lambda x: np.random.randint(0, x, (5,5,5))),
AddChannel(),
CenterScaleCrop(roi_scale=(.75, .75, .75)),
Spacing(pixdim=(1,1,1.25)),
ToTensor()]
)
out = trans_spacing_then_centerscale(5)
print(out[0].size()) ## error below
out = trans_centerscale_then_spacing(5)
print(out[0].size()) ## torch.Size([1, 4, 4, 3])
out = trans_d(data_dicts[0])
print(out['img'].size()) ## torch.Size([1, 4, 4, 3])
Expected behavior
Expected the order in dictionary transforms of Spacingd followed by CenterScaleCropd to produce same results if using non-dictionary transforms.
Screenshots
Error when executing out = trans_spacing_then_centerscale(5):
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~/miniconda3/envs/test_cac_env/lib/python3.9/site-packages/monai/transforms/transform.py in apply_transform(transform, data, map_items)
47 if isinstance(data, (list, tuple)) and map_items:
---> 48 return [transform(item) for item in data]
49 return transform(data)
~/miniconda3/envs/test_cac_env/lib/python3.9/site-packages/monai/transforms/transform.py in <listcomp>(.0)
47 if isinstance(data, (list, tuple)) and map_items:
---> 48 return [transform(item) for item in data]
49 return transform(data)
~/miniconda3/envs/test_cac_env/lib/python3.9/site-packages/monai/transforms/croppad/array.py in __call__(self, img)
324 ndim = len(img_size)
--> 325 roi_size = [ceil(r * s) for r, s in zip(ensure_tuple_rep(self.roi_scale, ndim), img_size)]
326 sp_crop = CenterSpatialCrop(roi_size=roi_size)
~/miniconda3/envs/test_cac_env/lib/python3.9/site-packages/monai/utils/misc.py in ensure_tuple_rep(tup, dim)
134
--> 135 raise ValueError(f"Sequence must have length {dim}, got {len(tup)}.")
136
ValueError: Sequence must have length 1, got 3.
The above exception was the direct cause of the following exception:
RuntimeError Traceback (most recent call last)
<ipython-input-14-f911ea296374> in <module>
----> 1 out = trans_spacing_then_centerscale(5)
2 print(out[0].size())
~/miniconda3/envs/test_cac_env/lib/python3.9/site-packages/monai/transforms/compose.py in __call__(self, input_)
153 def __call__(self, input_):
154 for _transform in self.transforms:
--> 155 input_ = apply_transform(_transform, input_, self.map_items)
156 return input_
157
~/miniconda3/envs/test_cac_env/lib/python3.9/site-packages/monai/transforms/transform.py in apply_transform(transform, data, map_items)
71 else:
72 _log_stats(data=data)
---> 73 raise RuntimeError(f"applying transform {transform}") from e
74
75
RuntimeError: applying transform <monai.transforms.croppad.array.CenterScaleCrop object at 0x7f131e905b80>
Environment
================================
Printing MONAI config...
================================
MONAI version: 0.5.3+130.g075bccd
Numpy version: 1.20.3
Pytorch version: 1.9.0+cu102
MONAI flags: HAS_EXT = False, USE_COMPILED = False
MONAI rev id: 075bccd161062e9894f9430714ba359f162d848c
Optional dependencies:
Pytorch Ignite version: 0.4.4
Nibabel version: 3.2.1
scikit-image version: 0.18.1
Pillow version: 8.2.0
Tensorboard version: 2.5.0
gdown version: 3.13.0
TorchVision version: 0.10.0+cu102
ITK version: 5.1.2
tqdm version: 4.61.1
lmdb version: 1.2.1
psutil version: 5.8.0
pandas version: 1.2.4
For details about installing the optional dependencies, please visit:
https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies
================================
Printing system config...
================================
System: Linux
Linux version: Ubuntu 18.04.5 LTS
Platform: Linux-5.4.0-1045-aws-x86_64-with-glibc2.27
Processor: x86_64
Machine: x86_64
Python version: 3.9.5
Process name: python
Command: ['/home/jpcenteno/miniconda3/envs/test_cac_env/bin/python', '-m', 'ipykernel_launcher', '-f', '/home/jpcenteno/.local/share/jupyter/runtime/kernel-9d04b6f5-449f-4766-b9bd-b0e9cc2c6edc.json']
Open files: [popenfile(path='/home/jpcenteno/.ipython/profile_default/history.sqlite', fd=34, position=12509184, mode='r+', flags=688130), popenfile(path='/home/jpcenteno/.ipython/profile_default/history.sqlite', fd=35, position=12570624, mode='r+', flags=688130)]
Num physical CPUs: 16
Num logical CPUs: 32
Num usable CPUs: 32
CPU usage (%): [0.4, 0.2, 0.7, 0.5, 0.7, 3.8, 0.7, 1.4, 0.7, 0.1, 0.1, 0.2, 0.1, 0.3, 0.1, 0.1, 0.0, 0.3, 2.0, 1.4, 0.5, 0.6, 0.6, 1.0, 0.7, 0.9, 1.3, 0.3, 0.5, 0.3, 0.1, 0.6]
CPU freq. (MHz): 3102
Load avg. in last 1, 5, 15 mins (%): [0.0, 0.2, 0.3]
Disk usage (%): 82.1
Avg. sensor temp. (Celsius): UNKNOWN for given OS
Total physical memory (GB): 124.4
Available memory (GB): 119.7
Used memory (GB): 3.4
================================
Printing GPU config...
================================
Num GPUs: 1
Has CUDA: True
CUDA version: 10.2
cuDNN enabled: True
cuDNN version: 7605
Current device: 0
Library compiled for CUDA architectures: ['sm_37', 'sm_50', 'sm_60', 'sm_70']
GPU 0 Name: Tesla T4
GPU 0 Is integrated: False
GPU 0 Is multi GPU board: False
GPU 0 Multi processor count: 40
GPU 0 Total memory (GB): 14.8
GPU 0 CUDA capability (maj.min): 7.5
Additional context
None
YingdiZhang
Metadata
Metadata
Assignees
Labels
questionFurther information is requestedFurther information is requested