Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Image Test Time Augmentation with PyTorch!
| Date | Stars |
|---|---|
| 2026-07-24 | 1030 |
| 2026-07-25 | 1030 |
| 2026-07-28 | 1030 |
| 2026-07-30 | 1030 |
| 2026-08-06 | 1030 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# TTAch
Image Test Time Augmentation with PyTorch!
Similar to what Data Augmentation is doing to the training set, the purpose of Test Time Augmentation is to perform random modifications to the test images. Thus, instead of showing the regular, “clean” images, only once to the trained model, we will show it the augmented images several times. We will then average the predictions of each corresponding image and take that as our final guess [[1](https://towardsdatascience.com/test-time-augmentation-tta-and-how-to-perform-it-with-keras-4ac19b67fb4d)].
```
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
Output
```
## Table of Contents
1. [Quick Start](#quick-start)
2. [Transforms](#transforms)
3. [Aliases](#aliases)
4. [Merge modes](#merge-modes)
5. [Installation](#installation)
## Quick start
##### Segmentation model wrapping [[docstring](ttach/wrappers.py#L8)]:
```python
import ttach as tta
tta_model = tta.SegmentationTTAWrapper(model, tta.aliases.d4_transform(), merge_mode='mean')
```
##### Classification model wrapping [[docstring](ttach/wrappers.py#L52)]:
```python
tta_model = tta.ClassificationTTAWrapper(model, tta.aliases.five_crop_transform())
```
##### Keypoints model wrapping [[docstring](ttach/wrappers.py#L96)]:
```python
tta_model = tta.KeypointsTTAWrapper(model, tta.aliases.flip_transform(), scaled=True)
```
**Note**: the model must return keypoints in the format `torch([x1, y1, ..., xn, yn])`
## Advanced Examples
##### Custom transform:
```python
# 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)
```python
# 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)
for transformer in transforms: # custom transforms or e.g. tta.aliases.d4_transform()
# augment image
augmented_image = transformer.augment_image(image)
# pass to model
model_output = model(augmented_image, another_input_data)
# reverse augmentation for mask and label
deaug_mask = transformer.deaugment_mask(model_output['mask'])
deaug_label = transformer.deaugment_label(model_output['label'])
# save results
labels.append(deaug_mask)
masks.append(deaug_label)
# reduce results as you want, e.g mean/max/min
label = mean(labels)
mask = mean(masks)
```
## Transforms
| Transform | Parameters | Values |
|----------------|:-------------------------:|:---------------------------------:|
| HorizontalFlip | - | - |
| VerticalFlip | - | - |
| Rotate90 | angles | List\[0, 90, 180, 270] |
| Scale | scales<br>interpolation | List\[float]<br>"nearest"/"linear"|
| Resize | sizes<br>original_size<br>interpolation | List\[Tuple\[int, int]]<br>Tuple\[int,int]<br>"nearest"/"linear"|
| Add | values | List\[float] |
| Multiply | factors | List\[float] |
| FiveCrops | crop_height<br>crop_width | int<br>int |
## Aliases
- flip_transform (horizontal + vertical flips)
- hflip_transform (horizontal flip)
- d4_transExcerpt of 4,702 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:2d529382cb58d1de, topic:deep-learning, topic:pytorch
matched fp:2d529382cb58d1de, topic:computer-vision