引言:\color{#FF3030}{引言:}引言:
数据增广在深度学习领域已经被证明是个极为有效的提高模型效果和泛化能力的措施。一般默认的数据增广方式有:
1.图片水平、竖直翻转
2.图片旋转(如90、180、270度旋转)
3.图片缩放
4.图片裁剪(如中心裁剪,随机裁剪等方式)
5.图片加噪声(如高斯)
…
最新提出的数据增广方法有,如上图:
1.CutOut,随机在图片上找一个矩形区域丢掉
2.MixUp,将两张图片按照一定比率进行像素融合,融合后的图带有两张图片的标签
3.CutMix,与CutOut类似,不同的地方是将这个矩形区域填充为另一张图片的像素,本人亲测,稳定有涨点!
4.本文中AugMix,在下面详细说
创新点:\color{#FF3030}{创新点:}创新点:
操作来说如上图,将一张原图进行变换、旋转、多色调3个分支的并行操作,然后按照一定比例融合,最后与原图按照一定比率融合。
上图是算法流程,大概流程就是对原图进行k个数据增广操作,然后使用k个权重进行融合得到aug图像。最终与原图进行一定比率融合得到最终augmix图像。Jensen-Shannon Divergence Consistency Loss这个损失函数是用来计算augmix后图像与原图的JS散度,需要保证augmix图像与原图的相似性。
代码:\color{#FF3030}{代码:}代码:
1.AugMix:
def aug(image, preprocess):
"""Perform AugMix augmentations and compute mixture.
Args:
image: PIL.Image input image
preprocess: Preprocessing function which should return a torch tensor.
Returns:
mixed: Augmented and mixed image.
"""
ws = np.float32(np.random.dirichlet([1] * args.mixture_width))
m = np