naamiinepal / xrayto3D-benchmark

GNU General Public License v3.0
9 stars 3 forks source link

Parameterize 3DReconNet by Volume Size #2

Open msrepo opened 1 year ago

msrepo commented 1 year ago

Description

Current Implementation of 3DReconNet (MultiScale2DConcat) is validated for 64^3 and 128^3 output volume. This needs to be parameterized/flexible for future experiments.

Existing

 # 128^3 output volume.128^2 input x-rays
    model_config = {
        "permute": True,
        "dropout": 0.1,
        "encoder": {
            "initial_channel": 16,
            "in_channels": [],  # this will be filled in by autoconfig
            "out_channels": [2, 4, 8, 16, 32, 64],
            "encoder_count": 4,
            "kernel_size": 3,
            "act": "RELU",
            "norm": "BATCH",
        },
        "decoder_2D": {
            "in_channels": [],  # this will be filled in by autoconfig
            "out_channels": [4, 8, 16, 32, 64, 128],
            # "out_channels": [2, 4, 8, 16, 32, 64],
            "kernel_size": 3,
            "act": "RELU",
            "norm": "BATCH",
        },
        "fusion_3D": {
            "in_channels": [],  # this will be filled in by autoconfig
            "out_channels": [32, 32, 32, 32, 32, 32],
            "kernel_size": 3,
            "act": "RELU",
            "norm": "BATCH",
        },
    }
 # 64^3 output volume, 64^2 input x-ray
    model_config = {
        "permute": True,
        "dropout": 0.1,
        "encoder": {
            "initial_channel": 16,
            "in_channels": [],  # this will be filled in by autoconfig
            "out_channels": [4, 8, 16, 32, 64],
            "encoder_count": 4,
            "kernel_size": 3,
            "act": "RELU",
            "norm": "BATCH",
        },
        "decoder_2D": {
            "in_channels": [],  # this will be filled in by autoconfig
            # "out_channels": [8, 16, 32, 64, 128],
            "out_channels": [4, 8, 16, 32, 64],
            "kernel_size": 3,
            "act": "RELU",
            "norm": "BATCH",
        },
        "fusion_3D": {
            "in_channels": [],  # this will be filled in by autoconfig
            "out_channels": [32, 32, 32, 32, 32],
            "kernel_size": 3,
            "act": "RELU",
            "norm": "BATCH",
        },
    }

As shown above, current implementation take configuration dict as parameter whose parameters have to be carefully selected to make sure the network pipeline is valid.

Is it even possible to have input/output size other than power-of-2, say 96^2 or 196^2?

Files

XrayTo3DShape/architectures/twoDPermuteConcatMultiScale.py tests/test_multiscale_permuteconcat.py

Tasks