示例#1
0
    def __getitem__(self, i):

        # get random sample
        input, target = sample_labeled_input(self.data, self.labels,
                                             self.input_shape)

        # perform augmentation if necessary
        if self.transform is not None:
            input = self.transform(input)

        if self.target_transform is not None and len(target) > 0:
            target = self.target_transform(target)

        if self.mode == 'image-level':
            target = target[target.shape[0] // 2, target.shape[1] // 2,
                            target.shape[2] // 2]
            if self.input_shape[0] > 1:  # 3D data
                return input[np.newaxis, ...], target
            else:
                return input, target
        else:  # image-level labels as default weak labels
            target = target[target.shape[0] // 2, target.shape[1] // 2,
                            target.shape[2] // 2]
            if self.input_shape[0] > 1:  # 3D data
                return input[np.newaxis, ...], target
            else:
                return input, target
示例#2
0
    def __getitem__(self, i):

        # get random sample
        if self.n_samples is not None:
            input = self.samples_x[self.iter_in_epoch]
            target = self.samples_y[self.iter_in_epoch]
            self.iter_in_epoch += 1
            if self.iter_in_epoch == self.n_samples:
                self.iter_in_epoch = 0
                data = list(zip(self.samples_x, self.samples_y))
                shuffle(data)
                self.samples_x, self.samples_y = zip(*data)
        else:
            input, target = sample_labeled_input(self.data, self.labels, self.input_shape)

        # perform augmentation if necessary
        if self.transform is not None:
            input = self.transform(input)

        if self.target_transform is not None and len(target)>0:
            target = self.target_transform(target)
        target = int(target.sum()>0)
        if self.input_shape[0] > 1: # 3D data
            return input[np.newaxis, ...], target
        else:
            return input, target
示例#3
0
    def __getitem__(self, i):

        # get random sample
        input, target = sample_labeled_input(self.data, self.labels, self.input_shape)

        # perform augmentation if necessary
        if self.transform is not None:
            input = self.transform(input)

        if self.target_transform is not None and len(target)>0:
            target = self.target_transform(target)
        if self.input_shape[0] > 1: # 3D data
            return input[np.newaxis, ...], target[np.newaxis, ...]
        else:
            return input, target
示例#4
0
 def __init__(self, input_shape, len_epoch=1000, preprocess='z', transform=None, target_transform=None, n_samples=None):
     super(EPFLPixelTestDataset, self).__init__(os.path.join('../data', 'epfl', 'testing.tif'),
                                                 os.path.join('../data', 'epfl', 'testing_groundtruth.tif'),
                                                 input_shape,
                                                 len_epoch=len_epoch,
                                                preprocess=preprocess,
                                                 transform=transform,
                                                 target_transform=target_transform)
     self.n_samples = n_samples
     self.iter_in_epoch = 0
     if n_samples is not None:
         self.len_epoch = n_samples
         # extract samples
         self.samples_x = []
         self.samples_y = []
         for n in range(n_samples):
             input, target = sample_labeled_input(self.data, self.labels, self.input_shape)
             self.samples_x.append(input)
             self.samples_y.append(target)
示例#5
0
    def __getitem__(self, i):

        # get random sample
        r = random.randint(0,len(self.input_shapes)-1)
        orientation = self.orientations[r]
        input_shape = self.input_shapes[r]
        input_shapes = (input_shape[orientation[0]],
                        input_shape[orientation[1]],
                        input_shape[orientation[2]])
        input, target = sample_labeled_input(self.data, self.labels, input_shapes)
        input = np.transpose(input, (orientation.index(0), orientation.index(1), orientation.index(2)))
        target = np.transpose(target, (orientation.index(0), orientation.index(1), orientation.index(2)))

        # perform augmentation if necessary
        if self.transform is not None:
            input = self.transform(input)

        if self.target_transform is not None and len(target)>0:
            target = self.target_transform(target)
        if input_shape[0] > 1: # 3D data
            return input[np.newaxis, ...], target[np.newaxis, ...]
        else:
            return input, target
示例#6
0
    def __init__(self, input_shape, len_epoch=1000, preprocess='z', transform=None, target_transform=None, split=0.5, n_samples=None):
        super(MEDPixelTestDataset, self).__init__(os.path.join('../data', 'med', 'data.tif'),
                                                  os.path.join('../data', 'med', 'labels.tif'),
                                                  input_shape,
                                                  len_epoch=len_epoch,
                                                  preprocess=preprocess,
                                                  transform=transform,
                                                  target_transform=target_transform)

        s = int(split * self.data.shape[2])
        self.data = self.data[:, :, s:]
        self.labels = self.labels[:, :, s:]

        self.n_samples = n_samples
        self.iter_in_epoch = 0
        if n_samples is not None:
            self.len_epoch = n_samples
            # extract samples
            self.samples_x = []
            self.samples_y = []
            for n in range(n_samples):
                input, target = sample_labeled_input(self.data, self.labels, self.input_shape)
                self.samples_x.append(input)
                self.samples_y.append(target)