Package: patta
PattaImage Test Time Augmentation with Paddle2.0!Input
             |           # input batch of images 
        / / /|\ \ \      # apply augmentations (flips, rotation, scale, etc.)
       | | | | | | |     # pass augmented batches through model
       | | | | | | |     # reverse transformations for each batch of masks/labels
        \ \ \ / / /      # merge predictions (mean, max, gmean, etc.)
             |           # output batch of masks/labels
           OutputTable of ContentsQuick StartTestPredictUse ToolsTransformsAliasesMerge modesInstallationQuick start (Default Transforms)TestWe support that you can use the following to test after defining the network.Segmentation model wrapping [docstring]:importpattaasttatta_model=tta.SegmentationTTAWrapper(model,tta.aliases.d4_transform(),merge_mode='mean')Classification model wrapping [docstring]:tta_model=tta.ClassificationTTAWrapper(model,tta.aliases.five_crop_transform())Keypoints model wrapping [docstring]:tta_model=tta.KeypointsTTAWrapper(model,tta.aliases.flip_transform(),scaled=True)Note: the model must return keypoints in the formatTensor([x1, y1, ..., xn, yn])PredictWe support that you can use the following to test when you have the static model:*.pdmodel、*.pdiparams、*.pdiparams.info.Load model [docstring]:importpattaasttamodel=tta.load_model(path='output/model')Segmentation model wrapping [docstring]:tta_model=tta.SegmentationTTAWrapper(model,tta.aliases.d4_transform(),merge_mode='mean')Classification model wrapping [docstring]:tta_model=tta.ClassificationTTAWrapper(model,tta.aliases.five_crop_transform())Keypoints model wrapping [docstring]:tta_model=tta.KeypointsTTAWrapper(model,tta.aliases.flip_transform(),scaled=True)Use-ToolsSegmentation model [docstring]:We recommend modifying the fileseg.pyaccording to your own model.pythonseg.py--model_path='output/model'\--batch_size=16\--test_dataset='test.txt'Note: Related topaddlesegAdvanced-Examples (DIY Transforms)Custom transform:# defined 2 * 2 * 3 * 3 = 36 augmentations !transforms=tta.Compose([tta.HorizontalFlip(),tta.Rotate90(angles=[0,180]),tta.Scale(scales=[1,2,4]),tta.Multiply(factors=[0.9,1,1.1]),])tta_model=tta.SegmentationTTAWrapper(model,transforms)Custom model (multi-input / multi-output)# Example how to process ONE batch on images with TTA# Here `image`/`mask` are 4D tensors (B, C, H, W), `label` is 2D tensor (B, N)fortransformerintransforms:# custom transforms or e.g. tta.aliases.d4_transform()# augment imageaugmented_image=transformer.augment_image(image)# pass to modelmodel_output=model(augmented_image,another_input_data)# reverse augmentation for mask and labeldeaug_mask=transformer.deaugment_mask(model_output['mask'])deaug_label=transformer.deaugment_label(model_output['label'])# save resultslabels.append(deaug_mask)masks.append(deaug_label)# reduce results as you want, e.g mean/max/minlabel=mean(labels)mask=mean(masks)Optional TransformsTransformParametersValuesHorizontalFlip--VerticalFlip--Rotate90anglesList[0, 90, 180, 270]ScalescalesinterpolationList[float]"nearest"/"linear"Resizesizesoriginal_sizeinterpolationList[Tuple[int, int]]Tuple[int,int]"nearest"/"linear"AddvaluesList[float]MultiplyfactorsList[float]FiveCropscrop_heightcrop_widthintintAliases (Combos)flip_transform (horizontal + vertical flips)hflip_transform (horizontal flip)d4_transform (flips + rotation 0, 90, 180, 270)multiscale_transform (scale transform, take scales as input parameter)five_crop_transform (corner crops + center crop)ten_crop_transform (five crops + five crops on horizontal flip)Merge-modesmeangmean (geometric mean)summaxmintsharpen (temperature sharpenwith t=0.5)InstallationPyPI:# Use pip install PaTTA$pipinstallpattaor# After downloading the whole dir$gitclonehttps://github.com/AgentMaker/PaTTA.git
$pipinstallPaTTA/Run tests# run test_transforms.py and test_base.py for testpythontest/test_transforms.py
pythontest/test_base.py