def sample(self): if hasattr(self, '_sample'): return self._sample, self._sample_size self._sample = {} self._sample_size = 0 _, n = self.positive positives = self._positive_expanded n = int(n * self.ratio) TT.debug("Collecting", n, "random samples.") pixels_per_image = int(np.prod(self.image_size)) indices = xrange(len(self.files) * pixels_per_image) ignored = 0 for index in random.sample(indices, n): data_file, label_file = self.files[index / pixels_per_image] if data_file not in self._sample: self._sample[data_file] = [] pixel = index % pixels_per_image p = 0.0 if data_file in positives and pixel in positives[data_file]: p = 1.0 ignored += 1 col, row = pixel_at_index(pixel, self.image_size) self._sample[data_file].append([col, row, p]) self._sample_size += 1 TT.debug(ignored, "samples out of", self._sample_size, "random samples are positive.") self.positive_in_sample = ignored return self.sample
def __iter__(self): for i in xrange(len(self)): col, row = pixel_at_index(i, self.image_size) yield patch_centered_at(self.input, row=row, col=col, size=self.patch_size), self.output[row, col]
def test_pixel_at(): global image size = image_size(image) # 2. pixel index to row, col assert (500, 2) == pixel_at_index(1700, size) # 3. row, col to pixel index assert 1700 == index_at_pixel(500, 2, size) assert 120400 == index_at_pixel(400, 200, size)