def process(self): """ Original & LowMem models go with Adjust or Masked converter Note: GAN prediction outputs a mask + an image, while other predicts only an image. """ Utils.set_verbosity(self.args.loglevel) if not self.alignments.have_alignments_file: self.load_extractor() model = self.load_model() converter = self.load_converter(model) batch = BackgroundGenerator(self.prepare_images(), 1) for item in batch.iterator(): self.convert(converter, item) if self.extract_faces: queue_manager.terminate_queues() Utils.finalize(self.images.images_found, self.faces_count, self.verify_output)
def minibatch_ab(self, images, batchsize, side, do_shuffle=True, is_preview=False, is_timelapse=False): """ A Background iterator to return augmented images, samples and targets. The exit point from this class and the sole attribute that should be referenced. Called from :mod:`plugins.train.trainer._base`. Returns an iterator that yields images for training, preview and time-lapses. Parameters ---------- images: list A list of image paths that will be used to compile the final augmented data from. batchsize: int The batchsize for this iterator. Images will be returned in :class:`numpy.ndarray` objects of this size from the iterator. side: {'a' or 'b'} The side of the model that this iterator is for. do_shuffle: bool, optional Whether data should be shuffled prior to loading from disk. If true, each time the full list of filenames are processed, the data will be reshuffled to make sure they are not returned in the same order. Default: ``True`` is_preview: bool, optional Indicates whether this iterator is generating preview images. If ``True`` then certain augmentations will not be performed. Default: ``False`` is_timelapse: bool optional Indicates whether this iterator is generating time-lapse images. If ``True``, then certain augmentations will not be performed. Default: ``False`` Yields ------ dict The following items are contained in each `dict` yielded from this iterator: * **feed** (:class:`numpy.ndarray`) - The feed for the model. The array returned is \ in the format (`batchsize`, `height`, `width`, `channels`). This is the :attr:`x` \ parameter for :func:`keras.models.model.train_on_batch`. * **targets** (`list`) - A list of 4-dimensional :class:`numpy.ndarray` objects in \ the order and size of each output of the model as defined in \ :attr:`model_output_shapes`. the format of these arrays will be (`batchsize`, \ `height`, `width`, `3`). This is the :attr:`y` parameter for \ :func:`keras.models.model.train_on_batch` **NB:** masks are not included in the \ `targets` list. If required for feeding into the Keras model, they will need to be \ added to this list in :mod:`plugins.train.trainer._base` from the `masks` key. * **masks** (:class:`numpy.ndarray`) - A 4-dimensional array containing the target \ masks in the format (`batchsize`, `height`, `width`, `1`). * **samples** (:class:`numpy.ndarray`) - A 4-dimensional array containing the samples \ for feeding to the model's predict function for generating preview and time-lapse \ samples. The array will be in the format (`batchsize`, `height`, `width`, \ `channels`). **NB:** This item will only exist in the `dict` if :attr:`is_preview` \ or :attr:`is_timelapse` is ``True`` """ logger.debug( "Queue batches: (image_count: %s, batchsize: %s, side: '%s', do_shuffle: %s, " "is_preview, %s, is_timelapse: %s)", len(images), batchsize, side, do_shuffle, is_preview, is_timelapse) self._batchsize = batchsize self._processing = ImageAugmentation( batchsize, is_preview or is_timelapse, self._model_input_size, self._model_output_shapes, self._coverage_ratio, self._config) args = (images, side, do_shuffle, batchsize) batcher = BackgroundGenerator(self._minibatch, thread_count=2, args=args) return batcher.iterator()