def InitFromImgsAndMasks(self,
                             imgs,
                             masks,
                             classes,
                             dirSave,
                             resize=None,
                             preproc=None,
                             imgDataFmt=float,
                             maskDataFmt=int,
                             isMaskOneHot=False):
        self.pathsImg = None
        self.pathsMasks = None

        if resize is not None:
            # Use pure resizing to preserve data matchiing
            imgs = transform.resize(imgs,
                                    resize + (self.imgs.shape[2], ),
                                    order=0,
                                    clip=True,
                                    preserve_range=True,
                                    anti_aliasing=False)
            masks = transform.resize(masks,
                                     resize + (self.masks.shape[2], ),
                                     order=0,
                                     clip=True,
                                     preserve_range=True,
                                     anti_aliasing=False)
            gc.collect()

        if preproc is not None:
            imgs, masks = preproc(imgs, masks, classes)

        gc.collect()

        imgs = imgs.astype(dtype=imgDataFmt)
        masks = masks.astype(dtype=maskDataFmt)

        # One-hot encoding target
        if classes <= 1:
            raise Exception("Class count = 1. Unable to run! ")

        if not isMaskOneHot:
            maxClass = np.max(np.unique(masks))
            if maxClass > classes:
                raise Exception("Not enough classes! MaxClassValue: " +
                                str(maxClass))

            masks = CommonUtil.PackIntoOneHot(masks, classes)
            gc.collect()

        if np.any(np.isnan(imgs)):
            raise Exception("NAN Warning!")
        if np.any(np.isnan(masks)):
            raise Exception("NAN Warning!")

        # Save to npys
        self.__SaveToNPYs(dirSave, imgs, masks)
    def __init__(self,
                 arrImgs,
                 masks,
                 classes,
                 resize=None,
                 preproc=None,
                 imgDataFmt=float,
                 maskDataFmt=int,
                 isMaskOneHot=False):

        self.arrImgs = arrImgs  # ndarray[H, W, Type, Slices]
        self.masks = masks

        if resize is not None:
            # Use pure resizing to preserve data matchiing
            self.arrImgs = transform.resize(self.arrImgs,
                                            (self.arrImgs.shape[0], ) +
                                            resize + (self.arrImgs.shape[3], ),
                                            order=0,
                                            clip=True,
                                            preserve_range=True,
                                            anti_aliasing=False)
            self.masks = transform.resize(self.masks,
                                          resize + (self.masks.shape[2], ),
                                          order=0,
                                          clip=True,
                                          preserve_range=True,
                                          anti_aliasing=False)
            gc.collect()

        if preproc is not None:
            self.arrImgs, self.masks = preproc(self.arrImgs, self.masks,
                                               classes)

        gc.collect()

        self.arrImgs = self.arrImgs.astype(dtype=imgDataFmt)
        self.masks = self.masks.astype(dtype=maskDataFmt)

        # One-hot encoding target
        if classes <= 1:
            raise Exception("Class count = 1. Unable to run! ")

        if not isMaskOneHot:
            maxClass = np.max(np.unique(self.masks))
            if maxClass > classes:
                raise Exception("Not enough classes! MaxClassValue: " +
                                str(maxClass))

            self.masks = CommonUtil.PackIntoOneHot(self.masks, classes)
            gc.collect()

        if np.any(np.isnan(self.arrImgs)):
            raise Exception("NAN Warning!")
        if np.any(np.isnan(self.masks)):
            raise Exception("NAN Warning!")