【ReID】【skimming】Random Erasing Data Augmentation

著名的随机擦除方法,2017年挂的arvix,好像中了2020年的AAAI。文章提出了一种数据增强方法——随机擦除(Random Erasing),将图像随机位置选择一块随机大小的矩形区域,将其中的值赋予为没有意义的常数(或者随机数,或者0)。这样的方法主动消除了图像中的一些信息,从而起到防止模型过拟合,增强模型鲁棒性的效果,也使得识别任务检测任务的模型表现更好。

论文一览:

痛点

很多网络被涉及的过于复杂,拥有过多的参数量,往往泛化能力差,容易发生过拟合现象。网络学习到的可能是一些不重要的noise,而不是我们关心的feature的分布。这就表现在有些网络在training set上表现很好,但是到了test set中表现会异乎寻常的差。为了提高网络泛化能力,数据增强是一个很重要的方向,
诸如随机裁剪,翻转等等已经成为非常常用的方法。

对于网络泛化能力而言。遮挡是一个重要的影响因素。就如行人重识别中的遮挡数据集,考验的是网络能否关注整体和局部细节,和网络对于带遮挡对象的泛化能力。带遮挡也是ReID场景中非常常见的场景,也是制约ReID技术落地一大难点之一。

文章提出的随机擦除,通过主动引入遮挡作为一种数据增强方法,从而提高模型泛化能力,提高模型鲁棒性,且简单易用,能够兼容绝大多数的模型和应用场景。

模型

随机擦除(Random Erasing)实例如图:

模型谈不上,主要是一种数据增强方法,伪代码如图:

具体部署建议看源码:

https://github.com/zhunzhong07/Random-Erasing

我的代码注释如下:

class RandomErasing(object):
    """ Randomly selects a rectangle region in an image and erases its pixels.
        'Random Erasing Data Augmentation' by Zhong et al.
        See https://arxiv.org/pdf/1708.04896.pdf
    Args:
         probability: The probability that the Random Erasing operation will be performed.
         sl: Minimum proportion of erased area against input image.
         sh: Maximum proportion of erased area against input image.
         r1: Minimum aspect ratio of erased area.
         mean: Erasing value.
    """

    def __init__(self, probability=0.5, sl=0.02, sh=0.4, r1=0.3, mean=(0.4914, 0.4822, 0.4465)):
        self.probability = probability
        self.mean = mean
        self.sl = sl  # 初始化可选择的擦除区域面积设置的最小比例
        self.sh = sh  # 初始化可选择的擦除区域面积设置的最大比例
        self.r1 = r1  # 初始化最小长宽比

    def __call__(self, img):

        if random.uniform(0, 1) >= self.probability:
            return img

        for attempt in range(100):
            area = img.size()[1] * img.size()[2]

            target_area = random.uniform(self.sl, self.sh) * area  # 面积范围[sl, sh]*area=[0.02*area, 0.4*area]
            aspect_ratio = random.uniform(self.r1, 1 / self.r1)  # 长宽比范围[r1, 1/r1]=[0.3. 3.333...]

            h = int(round(math.sqrt(target_area * aspect_ratio)))  # 擦除区域高度(height)
            w = int(round(math.sqrt(target_area / aspect_ratio)))  # 擦除区域宽度(width)

            if w < img.size()[2] and h < img.size()[1]:
                x1 = random.randint(0, img.size()[1] - h)  # 随机起始点纵坐标(height方向)
                y1 = random.randint(0, img.size()[2] - w)  # 随机起始点横坐标(width方向)
                if img.size()[0] == 3:  # RGB图
                    img[0, x1:x1 + h, y1:y1 + w] = self.mean[0]  # 将擦除区域全部赋予预设小数
                    img[1, x1:x1 + h, y1:y1 + w] = self.mean[1]
                    img[2, x1:x1 + h, y1:y1 + w] = self.mean[2]
                else:  # 灰度图
                    img[0, x1:x1 + h, y1:y1 + w] = self.mean[0]
                return img
        return img

实验

目标检测的随机擦除示例:

随机擦除和随机裁剪的结合示例:

在category classification测的SOTA:

对random erasing的超参数实现概率,面积比和长宽比的分离试验如下:

擦除区域的赋值分离试验如下:

与dropout的随机噪声比较:

与随机翻转,随机裁剪的结合对比:

遮挡程度与test error的关系:

目标检测测的SOTA:

ReID测的提升对比如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nmbkpLV-1589682176663)(https://user-gold-cdn.xitu.io/2020/5/17/172204b455bbf837?w=1184&h=472&f=png&s=147443)]

market1501数据集测的SOTA如下:

DukeMTMC-reID测的SOTA如下:

CUHK03测的SOTA如下:

参考文献

[1] Zhong Z, Zheng L, Kang G, et al. Random erasing data augmentation[J]. arXiv preprint arXiv:1708.04896, 2017.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锥栗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值