A GridMixup augmentation, inspired by GridMask and CutMix
pip install git+https://github.com/IlyaDobrynin/GridMixup.git
This simple augmentation is inspired by the GridMask and CutMix augmentations. The combination of this two augmentations forms proposed method.
To run simple examples notebooks, you should install requirements:
pip install -r requirements.txt
Simple examples are here: demo and pipeline demo
TlDr:
from gridmix import GridMixupLoss
gridmix_cls = GridMixupLoss(
alpha=(0.4, 0.7),
hole_aspect_ratio=1.,
crop_area_ratio=(0.5, 1),
crop_aspect_ratio=(0.5, 2),
n_holes_x=(2, 6)
)
images, targets = batch['images'], batch['targets']
images_mixed, targets_mixed = gridmix_cls.get_sample(images=images, targets=targets)
preds = model(images_mixed)
loss = criterion(preds, targets_mixed)
GridMixup loss defined as:
lam * CrossEntropyLoss(preds, trues1) + (1 - lam) * CrossEntropyLoss(preds, trues2)
where:
lam
- the area of the main image(1 - lam)
- area of the secondary image
GridMixupLoss takes follow arguments:
alpha
- parameter define area of the main image in mixed image. Could befloat
orTuple[float, float]
.- if
float
: lambda parameter gets from the beta-dictribution np.random.beta(alpha, alpha); - if
Tuple[float, float]
: lambda parameter gets from the uniform distribution np.random.uniform(alpha[0], alpha[1]).
- if
n_holes_x
- number of holes in crop by X axis.hole_aspect_ratio
- aspect ratio of holes.crop_area_ratio
- parameter define area of the secondary image on a mixed image.crop_aspect_ratio
- aspect ratio of crop.