def test_shape(self, expected_shape): test_image = nib.Nifti1Image( np.random.randint(0, 2, size=[128, 128, 128]), np.eye(4)) tempdir = tempfile.mkdtemp() nib.save(test_image, os.path.join(tempdir, 'test_image1.nii.gz')) nib.save(test_image, os.path.join(tempdir, 'test_label1.nii.gz')) nib.save(test_image, os.path.join(tempdir, 'test_extra1.nii.gz')) nib.save(test_image, os.path.join(tempdir, 'test_image2.nii.gz')) nib.save(test_image, os.path.join(tempdir, 'test_label2.nii.gz')) nib.save(test_image, os.path.join(tempdir, 'test_extra2.nii.gz')) test_data = [{ 'image': os.path.join(tempdir, 'test_image1.nii.gz'), 'label': os.path.join(tempdir, 'test_label1.nii.gz'), 'extra': os.path.join(tempdir, 'test_extra1.nii.gz') }, { 'image': os.path.join(tempdir, 'test_image2.nii.gz'), 'label': os.path.join(tempdir, 'test_label2.nii.gz'), 'extra': os.path.join(tempdir, 'test_extra2.nii.gz') }] dataset = Dataset( data=test_data, transform=LoadNiftid(keys=['image', 'label', 'extra'])) data1 = dataset[0] data2 = dataset[1] shutil.rmtree(tempdir) self.assertTupleEqual(data1['image'].shape, expected_shape) self.assertTupleEqual(data1['label'].shape, expected_shape) self.assertTupleEqual(data1['extra'].shape, expected_shape) self.assertTupleEqual(data2['image'].shape, expected_shape) self.assertTupleEqual(data2['label'].shape, expected_shape) self.assertTupleEqual(data2['extra'].shape, expected_shape)
def test_shape(self, input_param, expected_shape): test_image = nib.Nifti1Image( np.random.randint(0, 2, size=[128, 128, 128]), np.eye(4)) tempdir = tempfile.mkdtemp() test_data = dict() for key in KEYS: nib.save(test_image, os.path.join(tempdir, key + '.nii.gz')) test_data.update({key: os.path.join(tempdir, key + '.nii.gz')}) result = LoadNiftid(**input_param)(test_data) shutil.rmtree(tempdir) for key in KEYS: self.assertTupleEqual(result[key].shape, expected_shape)
num_seg_classes=1, channel_dim=-1) n = nib.Nifti1Image(im, np.eye(4)) nib.save(n, os.path.join(tempdir, 'im%i.nii.gz' % i)) n = nib.Nifti1Image(seg, np.eye(4)) nib.save(n, os.path.join(tempdir, 'seg%i.nii.gz' % i)) images = sorted(glob(os.path.join(tempdir, 'im*.nii.gz'))) segs = sorted(glob(os.path.join(tempdir, 'seg*.nii.gz'))) val_files = [{'img': img, 'seg': seg} for img, seg in zip(images, segs)] # Define transforms for image and segmentation val_transforms = transforms.Compose([ LoadNiftid(keys=['img', 'seg']), AsChannelFirstd(keys=['img', 'seg'], channel_dim=-1), Rescaled(keys=['img', 'seg']) ]) val_ds = monai.data.Dataset(data=val_files, transform=val_transforms) device = torch.device("cuda:0") net = UNet( dimensions=3, in_channels=1, out_channels=1, channels=(16, 32, 64, 128, 256), strides=(2, 2, 2, 2), num_res_units=2, ) net.to(device)
"/workspace/data/medical/ixi/IXI-T1/IXI584-Guys-1129-T1.nii.gz", "/workspace/data/medical/ixi/IXI-T1/IXI253-HH-1694-T1.nii.gz", "/workspace/data/medical/ixi/IXI-T1/IXI092-HH-1436-T1.nii.gz", "/workspace/data/medical/ixi/IXI-T1/IXI574-IOP-1156-T1.nii.gz", "/workspace/data/medical/ixi/IXI-T1/IXI585-Guys-1130-T1.nii.gz" ] # 2 binary labels for gender classification: man and woman labels = np.array([0, 0, 1, 0, 1, 0, 1, 0, 1, 0]) val_files = [{ 'img': img, 'label': label } for img, label in zip(images, labels)] # Define transforms for image val_transforms = transforms.Compose([ LoadNiftid(keys=['img']), AddChanneld(keys=['img']), Rescaled(keys=['img']), Resized(keys=['img'], output_spatial_shape=(96, 96, 96)) ]) # Create DenseNet121 net = monai.networks.nets.densenet3d.densenet121( in_channels=1, out_channels=2, ) device = torch.device("cuda:0") def prepare_batch(batch, device=None, non_blocking=False): return _prepare_batch((batch['img'], batch['label']), device, non_blocking)