示例#1
0
    def _generateRandomBatches(self):
        'Generates random batches of samples'
        while 1:
            # Generate batches

            X = []
            y = np.zeros([self.batch_size, self.nb_classes])
            imageIdxs = r.sample(range(0, self.nb_images),
                                 self.images_per_batch)
            for idx, imageIdx in enumerate(imageIdxs):
                imageX, imageY = self._generateBatchFromIDs([imageIdx])
                # Variables
                s_idx = 0
                f_idx = min(2, len(imageY))
                nb_bgs = self.nb_samples_per_image - f_idx
                idx = idx * self.nb_samples_per_image
                # Data
                imageMeta = self.imagesMeta[self.dataID[imageIdx]]
                imageXCut = utils.spliceXData(imageX, s_idx, f_idx)
                imageYCut = imageY[s_idx:f_idx, :]
                if nb_bgs > 0:
                    bbs = utils.createBackgroundBBs(imageMeta, nb_bgs,
                                                    self.images_path)
                    imageXBG, imageYBG = self._generateBatchFromBGs(
                        imageMeta, bbs)
                    imageXCmb = utils.concatXData(imageXCut, imageXBG)
                    #                  print(y.shape, idx, self.nb_samples_per_image, len(imageIdxs))
                    imageYCmb = np.append(imageYCut, imageYBG, 0)

                else:
                    imageXCmb = imageXCut
                    imageYCmb = imageYCut
                X = utils.concatXData(X, imageXCmb)
                y[idx:idx + self.nb_samples_per_image, :] = imageYCmb
            yield X, y
示例#2
0
    def _generateIterativeBatches(self):
        'Generates iterative batches of samples'

        while 1:
            imageIdx = 1
            hoiinimageidx = 0
            # Generate batches
            for i in range(self.nb_batches):
                X = []
                y = []
                imgs = []
                imageIdxs = []
                for imageIdx in range(imageIdx - 1, self.nb_images):
                    imageIdxs.append(imageIdx)
                    if self.do_meta:
                        imageX, imageY, imageMeta, img = self._generateBatchFromIDs(
                            [imageIdx])
                    else:
                        imageX, imageY = self._generateBatchFromIDs([imageIdx])
                        img = None
                    s_idx = 0
                    f_idx = len(imageY)
                    if hoiinimageidx > 0:
                        s_idx = hoiinimageidx
                        if hoiinimageidx == len(imageY):
                            hoiinimageidx = 0
                            continue
#                      hoiinimageidx = 0

                    if (len(imageY) -
                            hoiinimageidx) + len(y) >= self.batch_size:
                        hoiinimageidx = hoiinimageidx + len(imageY) - (
                            (len(imageY) + len(y)) - self.batch_size)
                        f_idx = hoiinimageidx
                    else:
                        hoiinimageidx = 0

                    imageXCut = utils.spliceXData(imageX, s_idx, f_idx)
                    X = utils.concatXData(X, imageXCut)
                    y.extend(imageY[s_idx:f_idx, :])
                    imgs.append(img)
                    #                  y.extend([self.dataID[imageIdx] for i in range(s_idx, f_idx)])
                    if len(y) == self.batch_size:
                        break
                imageIdx += 1
                y = np.array(y)

                if self.do_meta:
                    yield X, y, imageMeta, imgs[0]
                else:
                    yield X, y
示例#3
0
    def _generateIterativeImageCentricBatches(self):
        'Generates iterative batches of samples'

        while 1:
            imageIdx = 1
            # Generate batches
            for i in range(self.nb_batches):
                X = []
                y = []
                batchIdx = 0
                for imageIdx in range(imageIdx - 1, self.nb_images):
                    imageX, imageY = self._generateBatchFromIDs([imageIdx],
                                                                batchIdx)
                    X = utils.concatXData(X, imageX)
                    y.extend(imageY)
                    batchIdx += 1
                    if len(y) == self.images_per_batch or True:
                        break

                y = np.array(y)
                yield X, y