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!")