该方法的出处:《Random Erasing Data Augmentation》

论文链接:https://arxiv.org/pdf/1708.04896v2.pdf

代码链接:https://github.com/zhunzhong07/Random-Erasing

1.该方法操作后的效果图

在进行擦除过程中,在目标区域位置选择一个矩形区域,使用随机的像素值代替原始像素值,这样就对目标区域起到了一定的遮挡作用;

2.该方法的代码

from __future__ import absolute_importfrom torchvision.transforms import *import numpy as np
import torchclass RandomErasing(object):def __init__(self, EPSILON = 0.5, sl = 0.02, sh = 0.4, r1 = 0.3, mean=[0.4914, 0.4822, 0.4465]):self.EPSILON = EPSILONself.mean = meanself.sl = slself.sh = shself.r1 = r1def __call__(self, img):if random.uniform(0, 1) > self.EPSILON:return imgfor attempt in range(100):area = img.size()[1] * img.size()[2]target_area = random.uniform(self.sl, self.sh) * areaaspect_ratio = random.uniform(self.r1, 1/self.r1)h = int(round(math.sqrt(target_area * aspect_ratio)))w = int(round(math.sqrt(target_area / aspect_ratio)))if w < img.size()[2] and h < img.size()[1]:x1 = random.randint(0, img.size()[1] - h)y1 = random.randint(0, img.size()[2] - w)if img.size()[0] == 3:#img[0, x1:x1+h, y1:y1+w] = random.uniform(0, 1)#img[1, x1:x1+h, y1:y1+w] = random.uniform(0, 1)#img[2, x1:x1+h, y1:y1+w] = random.uniform(0, 1)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]#img[:, x1:x1+h, y1:y1+w] = torch.from_numpy(np.random.rand(3, h, w))else:img[0, x1:x1+h, y1:y1+w] = self.mean[1]# img[0, x1:x1+h, y1:y1+w] = torch.from_numpy(np.random.rand(1, h, w))return imgreturn img

3.适用场景

在原始论文中,作者将该方法分类,目标检测和行人重识别上,效果都很好;

分类任务中的效果:

目标检测中的效果:

在行人重识别上的效果:

目前,pytorch中已经可以直接调用

import torchvision.transforms as T
T.RandomErasing(p=rea_prob, value=rea_value)

数据增强:随机擦除Random erasing相关推荐

  1. 数据增强实测之Random Erasing

    Random Erasing是2017年与cutout同时期提出的另一种数据增强方法,两种方法的思想非常相似.Random Erasing的论文在网上可以找到两个版本:2017年arXiv的版本和20 ...

  2. 数据增强 - Cutout、Random Erasing、Mixup、Cutmix

    文章目录 0. 前言 1. Cutout 1.1. 要解决什么问题 1.2. 用了什么方法 1.3. 效果如何 1.4. 还存在什么问题&可借鉴之处 2. Rand Erasing 2.1. ...

  3. 论文阅读九:yolov4的各种数据增广技术random erasing、cutout、mixup、cutmix、mosaic等

       yolov4的发布,让很多做工程的都很兴奋,但其实静下来仔细研究,发现yolov4其实是一个成功的调参例子,作者用到了大量前人的技术,加以组合,实现了速度和精度的完美平衡,读yolov4的论文会 ...

  4. 目标检测的Tricks | 【Trick8】数据增强——随机旋转、平移、缩放、错切、hsv增强

    如有错误,恳请指出. 在之前使用opencv就介绍使用过一些常用的数据增强的实现方法,见:<数据增强 | 旋转.平移.缩放.错切.HSV增强>,当时介绍了旋转.平移.缩放.错切.HSV增强 ...

  5. tensorflow实现数据增强(随机裁剪、翻转、对比度设置、亮度设置)

    数据增强(Data Augmentation):是指对图片进行随机的旋转.翻转.裁剪.随机设置图片的亮度和对比度以及对数据进行标准化(数据的均值为0,方差为1).通过这些操作,我们可以获得更多的图片样 ...

  6. 总结 62 种在深度学习中的数据增强方式

    数据增强 数据增强通常是依赖从现有数据生成新的数据样本来人为地增加数据量的过程 这包括对数据进行不同方向的扰动处理 或使用深度学习模型在原始数据的潜在空间(latent space)中生成新数据点从而 ...

  7. 数据增强实测之Hide-and-Seek

    Hide-and-Seek是2017年发表在ICCV上的一种数据增强方法,主要思想是将图像划分成若干个patch,然后对每个patch执行随机擦除操作.会议扩充版看格式有可能是投到TPAMI上了,从时 ...

  8. python 离线数据增强(扩充数据集)

    增强方式包括: # (一) 针对像素的数据增强 # 1. 改变亮度 # 2. 加噪声 # (二) 针对图像的数据增强 # 3. 裁剪(需改变bbox) # 4. 平移(需改变bbox) # 5. 镜像 ...

  9. 数据增强语义分割和作物杂草分类

    卷积神经网络(CNN)等深度学习方法已成为解决农业机器人中作物和杂草分类问题的流行方法.然而,为了获得满意的性能并避免过拟合,训练深度神经网络通常需要数千幅标记图像.这导致了语义分割中繁琐的像素标记. ...

最新文章

  1. C++11中std::tuple的使用
  2. 关于比特币现金升级问题讨论不断升温
  3. asp.net中关于点击页面一个控件,弹出框的制作
  4. __main代码分析
  5. 野火IMJAVA开发的即时通讯系统源码
  6. jQuery.unique引发一个血案
  7. html5 textarea 限制字数,如何限制textarea的字符数为225?
  8. Linux操作环境下配置MMIX环境
  9. 易之风门诊收费系统 v1.0 官方
  10. Java之非对称加密
  11. 奥斯汀计算机专业排名,德克萨斯大学奥斯汀分校计算机工程类专业排名
  12. 初学者如何从零开始搭建一个阿里云数据库
  13. 《学Unity的猫》——第十章:Unity的物理碰撞,流浪喵星计划
  14. 连上WiFi就能打电话?“手机营业厅”中的神奇功能火了
  15. 外贸独立站怎么提高转化率
  16. YYText实现文本与下划线,删除线偏移
  17. 世界杯小组赛频繁爆冷?这或许是强队的谋略 一分钟带你了解2022卡塔尔世界杯赛制
  18. STM32 ES8266上阿里云IOT MQTT实践【第一章】:物联网简介(什么是物联网)
  19. 我们要如何给自己的笔记本买内存条??
  20. 关于.NET技术前途问题的讨论

热门文章

  1. macOS 非 PC, 为何一定要绑定AD?
  2. MyBatisPlus(个人笔记)
  3. 格林威治时间(GMT) 字符串转Date
  4. selenium三种等待时间之显示等待
  5. 【学习教程】DSSAT作物模型建模方法及实践技术应用
  6. 希尔薇android+游戏,LOL战争女神希维尔详细攻略 飘逸的ADC
  7. batik详解(6) 转载
  8. [转载]Flash场景之间相互跳转的方法
  9. 研究员 vs Nervos
  10. 二次元的正确打开方式