                        for k, v in retval.items()})
          return retval
  
      @staticmethod
      def _separate_target_mask(size_list_of_batches):
          """ Return the batch and the batch of final masks
  
          Returns the targets as a list of 4-dimensional ``numpy.ndarray`` s of shape (`batchsize`,
          `height`, `width`, 3). If the :attr:`batch` is 4 channels, then the masks will be split
          from the batch, with the largest output masks being returned in their own item.
 
</s> remove         targets = [batch[..., :3] for batch in size_list_of_batches]
        if size_list_of_batches[-1].shape[-1] == 4:
            masks = [size_list_of_batches[-1][..., 3:]]
 </s> add         batch = [tgt.astype("float32") / 255.0 for tgt in batch]
        if all(tgt.shape[-1] == 4 for tgt in batch):
            logger.trace("Batch contains mask")
            sizes = [item.shape[1] for item in batch]
            mask_batch = np.expand_dims(batch[sizes.index(max(sizes))][..., -1], axis=-1)
            batch = [item[..., :3] for item in batch]
            logger.trace("batch shapes: %s, mask_batch shape: %s",
                         [tgt.shape for tgt in batch], mask_batch.shape)
            retval = dict(targets=batch, masks=mask_batch) </s> remove             the format (`batchsize`, `height`, `width`, `1`).
 </s> add             the format (`batchsize`, `height`, `width`, `1`). **NB:** This item will only exist \
            in the ``dict`` if a batch of 4 channel images has been passed in :attr:`batch` </s> remove             the format (`batchsize`, `height`, `width`, `1`).
 </s> add             the format (`batchsize`, `height`, `width`, `1`). **NB:** This item will only exist \
            in the ``dict`` if the :attr:`mask_type` is not ``None`` </s> remove             masks = [np.ones((size_list_of_batches[-1].shape[:-1] + (1,)), dtype='float32')]
        retval = dict(targets=targets, masks=masks)
 </s> add             logger.trace("Batch has no mask")
            retval = dict(targets=batch) </s> remove         filename:   Filename of alignments file excluding extension. If a
 </s> add         filename:   Filename of alignments file. If a
    def _separate_target_mask(batch):
                        for k, v in retval.items()})
          return retval
  
      @staticmethod
    def _separate_target_mask(batch):
          """ Return the batch and the batch of final masks
  
          Returns the targets as a list of 4-dimensional ``numpy.ndarray`` s of shape (`batchsize`,
          `height`, `width`, 3). If the :attr:`batch` is 4 channels, then the masks will be split
          from the batch, with the largest output masks being returned in their own item.
keep keep keep keep replace keep keep keep keep keep
 Serialize masks to alignments file

- Add new serializers (npy + compressed)
- Remove Serializer option from cli
- Revert get_aligned call in scripts/extract
- Default alignments to compressed
- Size masks to 128px and compress
- Remove mask thresholding/blur from generation code
- Add Mask class to lib/faces_detect
- Revert debug landmarks to aligned face
- Revert non-extraction code to staging version 
lib/training_data.py