Project-MONAI / MONAI

AI Toolkit for Healthcare Imaging

Home Page:https://monai.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issue with Dataset caching

phisanti opened this issue · comments

Describe the bug
I am training a model for image segmentation. Using a custom transform pipeline, I found that clearing the background using a ratio with a Gaussian blurred image and histogram equalisation helps model convergence. However, when I used Monai compose to do the same, I ran into the issue that the transforms of one image seemed to affect other images. This is how I write the Compose:

    img_transforms = Compose(
        [
            TIFFLoader(keys=["image"]),
            TIFFLoader(
                keys=["label"], add_channel_dim=configs.trainer_params["binary_segmentation"]
            ),  # If running on 2D images, change to True
            ComposeInspect(keys=["image"], step='before clear '),
            ClearBackgroundTransform(
                keys=["image"], sigma_r=25, method="divide", convert_32=True
            ),
            ComposeInspect(keys=["image"], step='before eq '),
            HistEq(keys=["image"]),
            ComposeInspect(keys=["image"], step='after eq '),

        ]
    )

And these are the individual compose:

class ComposeInspect(object):
    def __init__(self, keys=("image", "label"), step=""):
        self.keys = keys
        self.step = step

    def __call__(self, data):
        for key in self.keys:
            if isinstance(data[key], torch.Tensor):
                tensor_debugger(data[key], key + self.step)
            elif isinstance(data[key], np.ndarray):
                x = torch.from_numpy(data[key].copy().astype(np.float32))
                tensor_debugger(x, key + self.step)
            else:
                print(f"Loading key: {data[key]}")

        return data


class TIFFLoader(object):
    def __init__(self, keys=("image", "label"), add_channel_dim="auto"):
        self.keys = keys
        self.add_channel_dim = add_channel_dim

    def __call__(self, data):
        for key in self.keys:
            if isinstance(data[key], str):
                data[key] = tifffile.imread(data[key])
                # Add an extra channel dimension
                if self.add_channel_dim == "auto" and data[key].ndim == 2:
                    data[key] = np.expand_dims(data[key], axis=0)
                elif self.add_channel_dim:
                    data[key] = np.expand_dims(data[key], axis=0)
                else:
                    pass

            elif isinstance(data[key], np.ndarray):
                # The data is already an array, so no need to load it
                pass
            else:
                print(f"Loading key: {data[key]}")
                raise ValueError(
                    f"Unsupported data type for key '{key}': {type(data[key])}"
                )

        return data


class HistEq(object):

    def __init__(self, keys):
        self.keys = keys

    def __call__(self, data):
        for key in self.keys:
            img = data[key].copy()
            img=self.to8bit(img)

            if img.ndim == 2:
                equalized = cv2.equalizeHist(img)
                equalized=equalized.astype(np.float32)
                equalized= (equalized - equalized.mean())/equalized.std()
            elif img.ndim == 3:
                equalized=np.zeros_like(img).astype(np.float32)
                for ch in range(img.shape[0]):
                    equalized_ch = cv2.equalizeHist(img.astype(np.uint8))
                    equalized_ch=equalized_ch.astype(np.float32)
                    equalized_ch= (equalized_ch - equalized_ch.mean())/equalized_ch.std()
                    equalized[ch]=equalized_ch
            else:
                raise NotImplementedError(
                    "Equalisation for 3D images or batches is not implemented yet."
                )
            data[key] = equalized
        return data

    def to8bit(self, image):

        normalized_image = (image - np.min(image)) / (np.max(image) - np.min(image))        
        scaled_image = normalized_image * 255        
        uint8_image = scaled_image.astype(np.uint8)
        
        return uint8_image


class ClearBackgroundTransform(object):
    def __init__(self, keys, sigma_r=25, method="divide", convert_32=True):
        self.keys = keys
        self.sigma_r = sigma_r
        self.method = method
        self.convert_32 = convert_32

    def __call__(self, data):
        for key in self.keys:
            img = data[key].copy()

            if self.convert_32:
                img = img.astype(np.float32)

            if img.ndim == 2:
                img = self.backgroud_remove_2d(img, self.sigma_r, self.method)

            elif img.ndim == 3:
                for i in range(img.shape[0]):
                    img[i] = self.backgroud_remove_2d(img[i], self.sigma_r, self.method)

            else:
                raise NotImplementedError(
                    "Background removal for 3D images is not implemented yet."
                )

            data[key] = img
        return data

    def round_to_odd(self, number):
        return int(number) if number % 2 == 1 else int(number) + 1

    def backgroud_remove_2d(self, img, sigma_r, method):
        # Gaussian blur
        sigma_r = self.round_to_odd(self.sigma_r)
        gaussian_blur = cv2.GaussianBlur(img, (sigma_r, sigma_r), 0)

        # Background remove
        if self.method == "subtract":
            background_removed = cv2.subtract(img, gaussian_blur)
        elif self.method == "divide":
            background_removed = cv2.divide(img, gaussian_blur)
        else:
            raise ValueError("Invalid method. Choose either 'subtract' or 'divide'")

        return background_removed

Note that the ComposeInspect is there for debugging purposes. With this code, what I see is something like:

nans imagebefore clear  max: False
inf imagebefore clear  max: False
imagebefore clear  max: 4095.0
imagebefore clear  min: 973.0
imagebefore eq  shape: torch.Size([1, 2400, 2400])
nans imagebefore eq  max: False
inf imagebefore eq  max: False
imagebefore eq  max: 1.871726632118225
imagebefore eq  min: 0.46691009402275085
imageafter eq  shape: torch.Size([1, 2400, 2400])
nans imageafter eq  max: False
inf imageafter eq  max: False
imageafter eq  max: 3.4114506244659424
imageafter eq  min: -1.236985206604004
imagebefore clear  shape: torch.Size([1, 2400, 2400])
nans imagebefore clear  max: False
inf imagebefore clear  max: False
imagebefore clear  max: 3.4114506244659424
imagebefore clear  min: -1.236985206604004
imagebefore eq  shape: torch.Size([1, 2400, 2400])
nans imagebefore eq  max: False
inf imagebefore eq  max: False
imagebefore eq  max: 4184.20849609375
imagebefore eq  min: -1909.0018310546875
imageafter eq  shape: torch.Size([1, 2400, 2400])
nans imageafter eq  max: False
inf imageafter eq  max: False
imageafter eq  max: 2.551238775253296
imageafter eq  min: -0.6024657487869263

Which is odd, because it seems that the transformations on one image, also happen on other image and then the values seems to accumulate and get out of hand.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Install '....'
  3. Run commands '....'

Expected behavior
I would like the transformations to be calculated everytime de novo or to be calculated once and not to accumulate spilling over other images.

Environment

Ensuring you use the relevant python executable, please paste the output of:

# packages in environment at /Users/xxx/miniconda3/envs/DeepLearning:
#
# Name                    Version                   Build  Channel
absl-py                   2.1.0                    pypi_0    pypi
annotated-types           0.6.0              pyhd8ed1ab_0    conda-forge
aom                       3.8.2                h078ce10_0    conda-forge
appnope                   0.1.4              pyhd8ed1ab_0    conda-forge
asttokens                 2.4.1              pyhd8ed1ab_0    conda-forge
astunparse                1.6.3                    pypi_0    pypi
atomai                    0.7.8                    pypi_0    pypi
aws-c-auth                0.7.17               h382b9c6_2    conda-forge
aws-c-cal                 0.6.11               hd34e5fa_0    conda-forge
aws-c-common              0.9.15               h93a5062_0    conda-forge
aws-c-compression         0.2.18               hd34e5fa_3    conda-forge
aws-c-event-stream        0.4.2                h247c08a_8    conda-forge
aws-c-http                0.8.1               hf9e830b_10    conda-forge
aws-c-io                  0.14.7               h33d81b3_6    conda-forge
aws-c-mqtt                0.10.3               h5f4abda_4    conda-forge
aws-c-s3                  0.5.7                h606a3d2_1    conda-forge
aws-c-sdkutils            0.1.15               hd34e5fa_3    conda-forge
aws-checksums             0.1.18               hd34e5fa_3    conda-forge
aws-crt-cpp               0.26.6               h13f0230_4    conda-forge
aws-sdk-cpp               1.11.267             h134aaec_6    conda-forge
blosc                     1.21.5               hc338f07_0    conda-forge
bokeh                     3.4.1              pyhd8ed1ab_0    conda-forge
brotli                    1.1.0                hb547adb_1    conda-forge
brotli-bin                1.1.0                hb547adb_1    conda-forge
brotli-python             1.1.0            py39hb198ff7_1    conda-forge
brunsli                   0.1                  h9f76cd9_0    conda-forge
bzip2                     1.0.8                h93a5062_5    conda-forge
c-ares                    1.28.1               h93a5062_0    conda-forge
c-blosc2                  2.12.0               ha57e6be_0    conda-forge
ca-certificates           2024.2.2             hf0a4a13_0    conda-forge
certifi                   2024.2.2           pyhd8ed1ab_0    conda-forge
charls                    2.4.2                h13dd4ca_0    conda-forge
charset-normalizer        3.3.2              pyhd8ed1ab_0    conda-forge
click                     8.1.7           unix_pyh707e725_0    conda-forge
click-default-group       1.2.4              pyhd8ed1ab_0    conda-forge
cloudpickle               3.0.0              pyhd8ed1ab_0    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
comm                      0.2.2              pyhd8ed1ab_0    conda-forge
contourpy                 1.2.1            py39h48c5dd5_0    conda-forge
cycler                    0.12.1                   pypi_0    pypi
cytoolz                   0.12.3           py39h17cfd9d_0    conda-forge
dask                      2024.4.2           pyhd8ed1ab_0    conda-forge
dask-core                 2024.4.2           pyhd8ed1ab_0    conda-forge
dask-expr                 1.0.14             pyhd8ed1ab_0    conda-forge
dav1d                     1.2.1                hb547adb_0    conda-forge
debugpy                   1.8.1            py39hf3050f2_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
distributed               2024.4.2           pyhd8ed1ab_0    conda-forge
docformatter              1.7.5              pyhd8ed1ab_0    conda-forge
dpcore                    0.9.0                    pypi_0    pypi
einops                    0.8.0                    pypi_0    pypi
exceptiongroup            1.2.0              pyhd8ed1ab_2    conda-forge
executing                 2.0.1              pyhd8ed1ab_0    conda-forge
fastremap                 1.14.1                   pypi_0    pypi
filelock                  3.14.0             pyhd8ed1ab_0    conda-forge
flatbuffers               24.3.25                  pypi_0    pypi
fonttools                 4.51.0                   pypi_0    pypi
freetype                  2.12.1               hadb7bae_2    conda-forge
fsspec                    2024.3.1           pyhca7485f_0    conda-forge
gast                      0.5.4                    pypi_0    pypi
gflags                    2.2.2             hc88da5d_1004    conda-forge
giflib                    5.2.2                h93a5062_0    conda-forge
glog                      0.7.0                hc6770e3_0    conda-forge
gmp                       6.3.0                hebf3989_1    conda-forge
gmpy2                     2.1.5            py39hd40a46f_0    conda-forge
google-pasta              0.2.0                    pypi_0    pypi
gpytorch                  1.11                     pypi_0    pypi
grpcio                    1.63.0                   pypi_0    pypi
h5py                      3.11.0                   pypi_0    pypi
icu                       73.2                 hc8870d7_0    conda-forge
idna                      3.7                pyhd8ed1ab_0    conda-forge
imagecodecs               2023.9.18        py39ha02826a_2    conda-forge
imageio                   2.34.1                   pypi_0    pypi
importlib-metadata        7.1.0              pyha770c72_0    conda-forge
importlib-resources       6.4.0                    pypi_0    pypi
importlib_metadata        7.1.0                hd8ed1ab_0    conda-forge
ipykernel                 6.29.3             pyh3cd1d5f_0    conda-forge
ipython                   8.18.1             pyh707e725_3    conda-forge
jaxtyping                 0.2.28                   pypi_0    pypi
jedi                      0.19.1             pyhd8ed1ab_0    conda-forge
jetraw-tools              0.3.6                    pypi_0    pypi
jinja2                    3.1.3              pyhd8ed1ab_0    conda-forge
joblib                    1.4.2                    pypi_0    pypi
jupyter_client            8.6.1              pyhd8ed1ab_0    conda-forge
jupyter_core              5.7.2            py39h2804cbe_0    conda-forge
jxrlib                    1.1                  h93a5062_3    conda-forge
keras                     3.3.3                    pypi_0    pypi
kiwisolver                1.4.5                    pypi_0    pypi
krb5                      1.21.2               h92f50d5_0    conda-forge
lazy-loader               0.4                      pypi_0    pypi
lcms2                     2.16                 ha0e7c42_0    conda-forge
lerc                      4.0.0                h9a09cb3_0    conda-forge
libabseil                 20240116.2      cxx17_hebf3989_0    conda-forge
libaec                    1.1.3                hebf3989_0    conda-forge
libarrow                  15.0.2           h0fcf22f_2_cpu    conda-forge
libarrow-acero            15.0.2           h3f3aa29_2_cpu    conda-forge
libarrow-dataset          15.0.2           h3f3aa29_2_cpu    conda-forge
libarrow-flight           15.0.2           h224147a_2_cpu    conda-forge
libarrow-flight-sql       15.0.2           hb630850_2_cpu    conda-forge
libarrow-gandiva          15.0.2           h5fa1bb3_2_cpu    conda-forge
libarrow-substrait        15.0.2           hd92e347_2_cpu    conda-forge
libavif16                 1.0.4                hff135a0_2    conda-forge
libblas                   3.9.0           19_osxarm64_openblas    conda-forge
libbrotlicommon           1.1.0                hb547adb_1    conda-forge
libbrotlidec              1.1.0                hb547adb_1    conda-forge
libbrotlienc              1.1.0                hb547adb_1    conda-forge
libcblas                  3.9.0           19_osxarm64_openblas    conda-forge
libclang                  18.1.1                   pypi_0    pypi
libcrc32c                 1.1.2                hbdafb3b_0    conda-forge
libcurl                   8.7.1                h2d989ff_0    conda-forge
libcxx                    16.0.6               h4653b0c_0    conda-forge
libdeflate                1.19                 hb547adb_0    conda-forge
libedit                   3.1.20191231         hc8eb9b7_2    conda-forge
libev                     4.33                 h93a5062_2    conda-forge
libevent                  2.1.12               h2757513_1    conda-forge
libffi                    3.4.2                h3422bc3_5    conda-forge
libgfortran               5.0.0           13_2_0_hd922786_3    conda-forge
libgfortran5              13.2.0               hf226fd6_3    conda-forge
libgoogle-cloud           2.22.0               hbebe991_1    conda-forge
libgoogle-cloud-storage   2.22.0               h8a76758_1    conda-forge
libgrpc                   1.62.2               h9c18a4f_0    conda-forge
libhwloc                  2.10.0          default_h52d8fe8_1000    conda-forge
libiconv                  1.17                 h0d3ecfb_2    conda-forge
libjpeg-turbo             3.0.0                hb547adb_1    conda-forge
liblapack                 3.9.0           19_osxarm64_openblas    conda-forge
libllvm14                 14.0.6               hd1a9a77_4    conda-forge
libllvm16                 16.0.6               haab561b_3    conda-forge
libnghttp2                1.58.0               ha4dd798_1    conda-forge
libopenblas               0.3.24          openmp_hd76b1f2_0    conda-forge
libparquet                15.0.2           h5304c63_2_cpu    conda-forge
libpng                    1.6.43               h091b4b1_0    conda-forge
libprotobuf               4.25.3               hbfab5d5_0    conda-forge
libre2-11                 2023.09.01           h7b2c953_2    conda-forge
libsodium                 1.0.18               h27ca646_1    conda-forge
libsqlite                 3.45.3               h091b4b1_0    conda-forge
libssh2                   1.11.0               h7a5bd25_0    conda-forge
libthrift                 0.19.0               h026a170_1    conda-forge
libtiff                   4.6.0                ha8a6c65_2    conda-forge
libutf8proc               2.8.0                h1a8c8d9_0    conda-forge
libwebp-base              1.4.0                h93a5062_0    conda-forge
libxcb                    1.15                 hf346824_0    conda-forge
libxml2                   2.12.6               h0d0cfa8_2    conda-forge
libxslt                   1.1.39               h223e5b9_0    conda-forge
libzlib                   1.2.13               h53f4e23_5    conda-forge
libzopfli                 1.0.3                h9f76cd9_0    conda-forge
linear-operator           0.5.2                    pypi_0    pypi
llvm-openmp               15.0.7               h7cfbb63_0    conda-forge
llvmlite                  0.42.0           py39h047a24b_1    conda-forge
locket                    1.0.0              pyhd8ed1ab_0    conda-forge
lxml                      5.1.1            py39h8557d04_0    conda-forge
lz4                       4.3.3            py39hf99b9d6_0    conda-forge
lz4-c                     1.9.4                hb7217d7_0    conda-forge
markdown                  3.6                      pypi_0    pypi
markdown-it-py            3.0.0                    pypi_0    pypi
markupsafe                2.1.5            py39h17cfd9d_0    conda-forge
matplotlib                3.8.4                    pypi_0    pypi
matplotlib-inline         0.1.7              pyhd8ed1ab_0    conda-forge
mdurl                     0.1.2                    pypi_0    pypi
mendeleev                 0.6.1                    pypi_0    pypi
ml-dtypes                 0.3.2                    pypi_0    pypi
monai                     1.3.0                    pypi_0    pypi
mpc                       1.3.1                h91ba8db_0    conda-forge
mpfr                      4.2.1                h41d338b_1    conda-forge
mpmath                    1.3.0              pyhd8ed1ab_0    conda-forge
msgpack-python            1.0.7            py39he9de807_0    conda-forge
namex                     0.0.8                    pypi_0    pypi
ncurses                   6.4.20240210         h078ce10_0    conda-forge
nd2                       0.10.1             pyhd8ed1ab_0    conda-forge
nest-asyncio              1.6.0              pyhd8ed1ab_0    conda-forge
networkx                  3.2.1              pyhd8ed1ab_0    conda-forge
numba                     0.59.1           py39h313beb8_0  
numpy                     1.26.4           py39h7aa2656_0    conda-forge
ome-types                 0.5.1.post1        pyhd8ed1ab_0    conda-forge
opencv-python             4.9.0.80                 pypi_0    pypi
openjpeg                  2.5.2                h9f1df11_0    conda-forge
openssl                   3.3.0                h0d3ecfb_0    conda-forge
opt-einsum                3.3.0                    pypi_0    pypi
optree                    0.11.0                   pypi_0    pypi
orc                       2.0.0                h3d3088e_0    conda-forge
packaging                 24.0               pyhd8ed1ab_0    conda-forge
pandas                    2.2.2            py39h47e51b9_0    conda-forge
parso                     0.8.4              pyhd8ed1ab_0    conda-forge
partd                     1.4.1              pyhd8ed1ab_0    conda-forge
pexpect                   4.9.0              pyhd8ed1ab_0    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    10.3.0           py39h3352c98_0    conda-forge
pint                      0.23               pyhd8ed1ab_0    conda-forge
pip                       24.0               pyhd8ed1ab_0    conda-forge
platformdirs              4.2.1              pyhd8ed1ab_0    conda-forge
progressbar2              4.4.2                    pypi_0    pypi
prompt-toolkit            3.0.42             pyha770c72_0    conda-forge
protobuf                  4.25.3                   pypi_0    pypi
psutil                    5.9.8            py39h17cfd9d_0    conda-forge
pthread-stubs             0.4               h27ca646_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
pyarrow                   15.0.2          py39hcacd782_2_cpu    conda-forge
pyarrow-hotfix            0.6                pyhd8ed1ab_0    conda-forge
pydantic                  2.7.1              pyhd8ed1ab_0    conda-forge
pydantic-compat           0.1.2              pyhd8ed1ab_0    conda-forge
pydantic-core             2.18.2           py39h8081647_0    conda-forge
pyfiglet                  1.0.2                    pypi_0    pypi
pygments                  2.17.2             pyhd8ed1ab_0    conda-forge
pyparsing                 3.1.2                    pypi_0    pypi
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
python                    3.9.19          hd7ebdb9_0_cpython    conda-forge
python-dateutil           2.9.0              pyhd8ed1ab_0    conda-forge
python-tzdata             2024.1             pyhd8ed1ab_0    conda-forge
python-utils              3.8.2                    pypi_0    pypi
python_abi                3.9                      4_cp39    conda-forge
pytorch                   2.4.0.dev20240506         py3.9_0    pytorch-nightly
pytz                      2024.1             pyhd8ed1ab_0    conda-forge
pyyaml                    6.0.1            py39h0f82c59_1    conda-forge
pyzmq                     26.0.2           py39hf4e74ac_0    conda-forge
rav1e                     0.6.6                h69fbcac_2    conda-forge
re2                       2023.09.01           h4cba328_2    conda-forge
readline                  8.2                  h92ec313_1    conda-forge
requests                  2.31.0             pyhd8ed1ab_0    conda-forge
resource_backed_dask_array 0.1.0              pyhd8ed1ab_1    conda-forge
rich                      13.7.1                   pypi_0    pypi
ruff                      0.4.2            py39h0a9ff32_0    conda-forge
scikit-image              0.22.0                   pypi_0    pypi
scikit-learn              1.4.2                    pypi_0    pypi
scipy                     1.13.0                   pypi_0    pypi
seaborn                   0.13.2                   pypi_0    pypi
setuptools                69.5.1             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
snappy                    1.1.10               hd04f947_1    conda-forge
sortedcontainers          2.4.0              pyhd8ed1ab_0    conda-forge
sqlalchemy                2.0.29                   pypi_0    pypi
stack_data                0.6.2              pyhd8ed1ab_0    conda-forge
svt-av1                   2.0.0                h078ce10_0    conda-forge
sympy                     1.12            pypyh9d50eac_103    conda-forge
tbb                       2021.12.0            h420ef59_1    conda-forge
tblib                     3.0.0              pyhd8ed1ab_0    conda-forge
tensorboard               2.16.2                   pypi_0    pypi
tensorboard-data-server   0.7.2                    pypi_0    pypi
tensorflow                2.16.1                   pypi_0    pypi
tensorflow-io-gcs-filesystem 0.37.0                   pypi_0    pypi
termcolor                 2.4.0                    pypi_0    pypi
threadpoolctl             3.5.0                    pypi_0    pypi
tifffile                  2024.4.24          pyhd8ed1ab_0    conda-forge
tk                        8.6.13               h5083fa2_1    conda-forge
toolz                     0.12.1             pyhd8ed1ab_0    conda-forge
toposort                  1.10               pyhd8ed1ab_0    conda-forge
torchvision               0.19.0.dev20240506        py39_cpu    pytorch-nightly
tornado                   6.4              py39h17cfd9d_0    conda-forge
tqdm                      4.66.4             pyhd8ed1ab_0    conda-forge
traitlets                 5.14.3             pyhd8ed1ab_0    conda-forge
typeguard                 2.13.3                   pypi_0    pypi
typing-extensions         4.11.0               hd8ed1ab_0    conda-forge
typing_extensions         4.11.0             pyha770c72_0    conda-forge
tzdata                    2024a                h0c530f3_0    conda-forge
untokenize                0.1.1                      py_0    conda-forge
urllib3                   2.2.1              pyhd8ed1ab_0    conda-forge
wcwidth                   0.2.13             pyhd8ed1ab_0    conda-forge
werkzeug                  3.0.2                    pypi_0    pypi
wheel                     0.43.0             pyhd8ed1ab_1    conda-forge
wrapt                     1.16.0                   pypi_0    pypi
xorg-libxau               1.0.11               hb547adb_0    conda-forge
xorg-libxdmcp             1.1.3                h27ca646_0    conda-forge
xsdata                    24.3.1             pyhd8ed1ab_0    conda-forge
xyzservices               2024.4.0           pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h57fd34a_0    conda-forge
yaml                      0.2.5                h3422bc3_2    conda-forge
zeromq                    4.3.5                h5119023_3    conda-forge
zfp                       1.0.0                h82938aa_4    conda-forge
zict                      3.0.0              pyhd8ed1ab_0    conda-forge
zipp                      3.17.0             pyhd8ed1ab_0    conda-forge
zlib-ng                   2.0.7                h1a8c8d9_0    conda-forge
zstd                      1.5.6                hb46c0d2_0    conda-forge
python -c "import monai; monai.config.print_debug_info()"

================================
Printing MONAI config...
================================
MONAI version: 1.3.0
Numpy version: 1.26.4
Pytorch version: 2.4.0.dev20240506
MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False
MONAI rev id: 865972f7a791bf7b42efbcd87c8402bd865b329e
MONAI __file__: /Users/<username>/miniconda3/envs/DeepLearning/lib/python3.9/site-packages/monai/__init__.py

Optional dependencies:
Pytorch Ignite version: NOT INSTALLED or UNKNOWN VERSION.
ITK version: NOT INSTALLED or UNKNOWN VERSION.
Nibabel version: NOT INSTALLED or UNKNOWN VERSION.
scikit-image version: 0.22.0
scipy version: 1.13.0
Pillow version: 10.3.0
Tensorboard version: 2.16.2
gdown version: NOT INSTALLED or UNKNOWN VERSION.
TorchVision version: 0.19.0.dev20240506
tqdm version: 4.66.4
lmdb version: NOT INSTALLED or UNKNOWN VERSION.
psutil version: 5.9.8
pandas version: 2.2.2
einops version: 0.8.0
transformers version: NOT INSTALLED or UNKNOWN VERSION.
mlflow version: NOT INSTALLED or UNKNOWN VERSION.
pynrrd version: NOT INSTALLED or UNKNOWN VERSION.
clearml version: NOT INSTALLED or UNKNOWN VERSION.

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: Darwin
Mac version: 14.4.1
Platform: macOS-14.4.1-arm64-arm-64bit
Processor: arm
Machine: arm64
Python version: 3.9.19
Process name: python3.9
Command: ['python', '-c', 'import monai; monai.config.print_debug_info()']
Open files: []
Num physical CPUs: 8
Num logical CPUs: 8
Num usable CPUs: UNKNOWN for given OS
CPU usage (%): [32.5, 30.6, 26.7, 23.5, 42.0, 36.3, 8.6, 7.4]
CPU freq. (MHz): 3504
Load avg. in last 1, 5, 15 mins (%): [50.1, 53.7, 52.9]
Disk usage (%): 77.7
Avg. sensor temp. (Celsius): UNKNOWN for given OS
Total physical memory (GB): 24.0
Available memory (GB): 13.7
Used memory (GB): 8.8

================================
Printing GPU config...
================================
Num GPUs: 0
Has CUDA: False
cuDNN enabled: False
NVIDIA_TF32_OVERRIDE: None
TORCH_ALLOW_TF32_CUBLAS_OVERRIDE: None

Additional context
Not required

Any help will be more than welcome.