IlyaDobrynin / GridMixup

A GridMixup augmentation, inspired by GridMask and CutMix

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GridMixup

A GridMixup augmentation, inspired by GridMask and CutMix

Easy install

pip install git+https://github.com/IlyaDobrynin/GridMixup.git

Overview

This simple augmentation is inspired by the GridMask and CutMix augmentations. The combination of this two augmentations forms proposed method.

Example

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) 

Before

After

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

Parameters

GridMixupLoss takes follow arguments:

  • alpha - parameter define area of the main image in mixed image. Could be float or Tuple[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]).
  • 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.

About

A GridMixup augmentation, inspired by GridMask and CutMix

License:MIT License


Languages

Language:Python 100.0%