Shortcuts

备注

您正在阅读 MMClassification 0.x 版本的文档。MMClassification 0.x 会在 2022 年末被切换为次要分支。建议您升级到 MMClassification 1.0 版本,体验更多新特性和新功能。请查阅 MMClassification 1.0 的安装教程迁移教程以及更新日志

Batch Augmentation

Batch augmentation is the augmentation which involve multiple samples, such as Mixup and CutMix.

In MMClassification, these batch augmentation is used as a part of Classifier. A typical usage is as below:

model = dict(
    backbone = ...,
    neck = ...,
    head = ...,
    train_cfg=dict(augments=[
        dict(type='BatchMixup', alpha=0.8, prob=0.5, num_classes=num_classes),
        dict(type='BatchCutMix', alpha=1.0, prob=0.5, num_classes=num_classes),
    ]))
)

Mixup

class mmcls.models.utils.augment.BatchMixupLayer(*args, **kwargs)[源代码]

Mixup layer for a batch of data.

Mixup is a method to reduces the memorization of corrupt labels and increases the robustness to adversarial examples. It’s proposed in mixup: Beyond Empirical Risk Minimization <https://arxiv.org/abs/1710.09412>

This method simply linearly mix pairs of data and their labels.

参数
  • alpha (float) – Parameters for Beta distribution to generate the mixing ratio. It should be a positive number. More details are in the note.

  • num_classes (int) – The number of classes.

  • prob (float) – The probability to execute mixup. It should be in range [0, 1]. Default sto 1.0.

备注

The \(\alpha\) (alpha) determines a random distribution \(Beta(\alpha, \alpha)\). For each batch of data, we sample a mixing ratio (marked as \(\lambda\), lam) from the random distribution.

CutMix

class mmcls.models.utils.augment.BatchCutMixLayer(*args, **kwargs)[源代码]

CutMix layer for a batch of data.

CutMix is a method to improve the network’s generalization capability. It’s proposed in CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features <https://arxiv.org/abs/1905.04899>

With this method, patches are cut and pasted among training images where the ground truth labels are also mixed proportionally to the area of the patches.

参数
  • alpha (float) – Parameters for Beta distribution to generate the mixing ratio. It should be a positive number. More details can be found in BatchMixupLayer.

  • num_classes (int) – The number of classes

  • prob (float) – The probability to execute cutmix. It should be in range [0, 1]. Defaults to 1.0.

  • cutmix_minmax (List[float], optional) – The min/max area ratio of the patches. If not None, the bounding-box of patches is uniform sampled within this ratio range, and the alpha will be ignored. Otherwise, the bounding-box is generated according to the alpha. Defaults to None.

  • correct_lam (bool) – Whether to apply lambda correction when cutmix bbox clipped by image borders. Defaults to True.

备注

If the cutmix_minmax is None, how to generate the bounding-box of patches according to the alpha?

First, generate a \(\lambda\), details can be found in BatchMixupLayer. And then, the area ratio of the bounding-box is calculated by:

\[\text{ratio} = \sqrt{1-\lambda}\]

ResizeMix

class mmcls.models.utils.augment.BatchResizeMixLayer(alpha, num_classes, lam_min: float = 0.1, lam_max: float = 0.8, interpolation='bilinear', prob=1.0, cutmix_minmax=None, correct_lam=True, **kwargs)[源代码]

ResizeMix Random Paste layer for a batch of data.

The ResizeMix will resize an image to a small patch and paste it on another image. It’s proposed in ResizeMix: Mixing Data with Preserved Object Information and True Labels

参数
  • alpha (float) – Parameters for Beta distribution to generate the mixing ratio. It should be a positive number. More details can be found in BatchMixupLayer.

  • num_classes (int) – The number of classes.

  • lam_min (float) – The minimum value of lam. Defaults to 0.1.

  • lam_max (float) – The maximum value of lam. Defaults to 0.8.

  • interpolation (str) – algorithm used for upsampling: ‘nearest’ | ‘linear’ | ‘bilinear’ | ‘bicubic’ | ‘trilinear’ | ‘area’. Default to ‘bilinear’.

  • prob (float) – The probability to execute resizemix. It should be in range [0, 1]. Defaults to 1.0.

  • cutmix_minmax (List[float], optional) – The min/max area ratio of the patches. If not None, the bounding-box of patches is uniform sampled within this ratio range, and the alpha will be ignored. Otherwise, the bounding-box is generated according to the alpha. Defaults to None.

  • correct_lam (bool) – Whether to apply lambda correction when cutmix bbox clipped by image borders. Defaults to True

  • **kwargs – Any other parameters accpeted by BatchCutMixLayer.

备注

The \(\lambda\) (lam) is the mixing ratio. It’s a random variable which follows \(Beta(\alpha, \alpha)\) and is mapped to the range [lam_min, lam_max].

\[\lambda = \frac{Beta(\alpha, \alpha)} {\lambda_{max} - \lambda_{min}} + \lambda_{min}\]

And the resize ratio of source images is calculated by \(\lambda\):

\[\text{ratio} = \sqrt{1-\lambda}\]
Read the Docs v: latest
Versions
master
latest
1.x
dev-1.x
Downloads
pdf
html
epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.