【论文笔记】数据增强系列.1

news2024/11/27 0:17:33

本文介绍简单数据增强、好处以及常见的增强方式,也介绍几篇关于数据增强的工作:

CutMix(ICCV2019),ContrastMask(CVPR2022),BCP(CVPR2023)。

数据增强简介&好处

什么是数据增强?

数据增强是深度学习中的一种技术,它通过从现有数据生成新的训练数据来扩展原数据集。数据增强工具通过操作现有数据的参数,将数据转换为新的、独特的样本。可以对图像、文本、音频和视频输入执行数据增强。有两种类型的数据增强:离线(增强图像存储在驱动器上,然后在训练模型之前与真实数据相结合)和在线(数据增强应用于随机选择的图像并用于训练原始数据)。

数据增强有什么好处?

正确使用数据增强能够带来如下好处:

  • 降低数据采集和数据标记的成本。
  • 通过赋予模型更多的多样性和灵活性来改进模型泛化。
  • 提高模型在预测中的准确性,因为它使用更多数据来训练模型。
  • 减少数据的过拟合。
  • 通过增加少数类中的样本来处理数据集中的不平衡。

常见的数据增强方式:

想了解更多关于数据增强的方式,可参考博客:

深度学习中的各种数据增强_m0_61899108的博客-CSDN博客

自动数据增强方法(附代码)_数据增强代码_m0_61899108的博客-CSDN博客

数据增强方式很多,算法不难,困难在于,如何理解,方法提出的原因与目的(动机),方式是否简单有效,如何与任务关联,如何讲好故事。

CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features, ICCV 2019

论文:https://arxiv.org/abs/1905.04899

代码:https://github.com/clovaai/CutMix-PyTorch

几种常见的数据增强的比较:

  • Mixup:将随机的两张样本按比例混合,分类的结果按比例分配;
  • Cutout:随机的将样本中的部分区域cut掉,并且填充0像素值,分类的结果不变;
  • CutMix:就是将一部分区域cut掉但不填充0像素而是随机填充训练集中的其他数据的区域像素值,分类结果按一定的比例分配。

 上述三种数据增强的区别:

  • cutout和cutmix就是填充区域像素值的区别;
  • mixup和cutmix是混合两种样本方式上的区别:
  • mixup是将两张图按比例进行插值来混合样本,cutmix是采用cut部分区域再补丁的形式去混合图像,不会有图像混合后不自然的情形。

CutMix优点:

  • 在训练过程中不会出现非信息像素,从而能够提高训练效率;
  • 保留了regional dropout的优势,能够关注目标的non-discriminative parts;
  • 通过要求模型从局部视图识别对象,对cut区域中添加其他样本的信息,能够进一步增强模型的定位能力;
  • 不会有图像混合后不自然的情形,能够提升模型分类的表现;
  • 训练和推理代价保持不变。

算法:

 

伪代码: 

实验:

 

ContrastMask: Contrastive Learning to Segment Every Thing, CVPR2022

论文:https://arxiv.org/abs/2203.09775

代码:https://github.com/huiserwang/ContrastMask

部分监督实例分割是一项任务,要求通过在带有注释掩码的有限基本类别上学习,从新类别中分割对象,从而消除繁重的注释负担。解决这一任务的关键是建立一个有效的类不可知掩码分割模型。与以前只在基本类别上学习此类模型的方法不同,本文提出了一种新的方法,称为ContrastMask,该方法在统一的像素级对比学习框架下,在基本类别和新类别上学习掩码分割模型。在该框架中,基本类别的注释掩码和新类别的伪掩码用作对比学习的先验,其中来自掩码区域(前景)的特征被拉到一起,并与来自背景的特征进行对比,反之亦然。(在实例前景与背景的像素之间采样query与keys,进而拉远前景-背景之间的距离,拉近前景-前景或者背景-背景的距离)通过该框架,大大提高了前景和背景之间的特征区分,促进了类不可知掩码分割模型的学习。在COCO数据集上取得好结果。

本文提出了ContrastMask,一种新的部分监督实例分割方法,它在统一的像素级对比学习框架下,在基本类别和新类别上学习类不可知的掩码分割模型。在这个框架中,设计了一种新的查询共享像素级对比损失,以充分利用所有类别的数据。为此,通过类激活映射(CAM)计算的基本类别的注释掩码或新类别的伪掩码用作区域先验,这不仅指示前景和背景分离,还指示共享查询、正密钥和负密钥。相反,给定一个包含基本类别和新类别的训练图像批,建立了两个共享查询:前台查询和后台查询,这两个查询是通过对掩码区域内外的特征进行平均来获得的,分别包括注释掩码和伪掩码。然后,执行一种特殊的采样策略来选择合适的密钥。通过引入所提出的损失,我们期望将掩码区域内/外的键拉向前台/后台共享查询,并将其与掩码区域外/内的键进行对比。最后,通过我们的像素级对比学习框架学习的特征被融合到类不可知的掩码头中,以执行掩码分割。

与以前的方法相比,ContrastMask有几个好处:

  • 它充分利用了训练数据,使来自新类别的训练数据也有助于分割模型的优化过程;
  • 更重要的是,它通过统一的像素级对比学习框架,特别是对基本类别和新类别的共享查询,搭建了一座桥梁,将基本类别的分割能力转移到新类别,从而不断提高基本类别和新颖类别的前地和背景之间的特征区分。

框架:ContrastMask建立在经典的两阶段Mask R-CNN架构上,具有一个额外的“对比学习”头,称为CL Head,它在基本类别和新类别上执行统一的像素级对比学习。CL Head采用RoI特征图和Box Head生成的CAM作为输入。它由像素级对比损失监督,并输出Mask Head的增强特征图。最后,Mask Head预测了一个类别通过将融合的特征图作为输入的不可知分割图。

Contrastive Learning Head (CL Head):CL Head的目标是增加前景和背景之间的特征区分,并减少基本类别和新类别的每个区域(背景或前景)内的特征差异,从而有助于Mask Head学习。通过学习新的像素级对比损失来实现这一点。

图3.对比学习头(CL head)的流程图由编码器和投影仪组成,由像素级对比损失监督。使用真实标签掩码(如果是基本掩码)或从CAM转换的伪掩码(如果新颖掩码)来计算对比损失

Query-sharing Pixel-level Contrastive Loss:新的像素级损失,它能够在统一的对比学习框架下学习基本类别和新类别的掩码分割模型。这种损失函数的核心设计理念是基本类别和新类别共享两个与类别无关的查询,一个用于前台q+,另一个用于后台q−,这样就形成了一个桥梁,将基本类别的细分能力转移到新类别。

图4.用于说明如何获取查询和示例密钥的示意图。对于基本类别,我们使用真实标签掩码来进行划分并提取边来指导采样硬键。对于新的类别,我们首先通过阈值δ对CAM进行二值化,然后进行分区,并基于分区随机采样易密钥和硬密钥。前台查询q+和后台查询q−是通过对一批对象建议的相应分区的特征进行平均来获得的。

 

 Class-agnostic mask head:掩码头的架构和对应的损失函数与mask R-CNN中的架构和相应的损失函数相同,除了三个修改:1)将最后一个卷积层的输出通道从80更改为1,从而产生类不可知的掩码头。2) 将CL头的输出特征图与掩模头的输入特征图连接起来,这使得掩模头输入特征更加独特,并有助于其学习。3) 使用CAM来告诉掩模头应该关注哪个区域。这可以通过将CAM添加到输入特征图中来轻松实现.

图5。类不可知掩码头的输入由增强的featuer映射Y、RoI特征映射X和CAM A组成

 实验:

 

Bidirectional Copy-Paste for Semi-Supervised Medical Image Segmentation, CVPR2023

论文:https://arxiv.org/abs/2305.00673

代码:https://github.com/DeepMed-Lab-ECNU/BCP

在半监督医学图像分割中,标记和未标记的数据分布之间存在经验不匹配问题。如果单独或以不一致的方式处理标记数据和未标记数据,则从标记数据中学到的知识可能会被大量丢弃。

本文提出了一种简单的方法来缓解这个问题——在一个简单的Mean Teacher架构中双向复制粘贴标记和未标记的数据。该方法鼓励未标记的数据从标记的数据中学习向内和向外的全面通用语义。更重要的是,标记和未标记数据的一致学习过程可以在很大程度上缩小经验分布差距。

详细地说,分别将随机裁剪从标记图像(前景)复制粘贴到未标记图像(背景)和未标记图像上。这两个混合图像被馈送到学生网络中,并由伪标签和真实标签的混合监督信号进行监督。论文发现,在标记和未标记数据之间双向复制粘贴的简单机制足够好,并且与各种半监督医学图像分割数据集上的其他现有技术相比,实验收益明显)。

图1。半监督学习设置下的mismatch问题说明。假设训练集是从(a)中的潜在分布中提取的。但少量标记数据和大量未标记数据的经验分布分别为(b)和(c)。很难使用很少的标记数据来构造整个数据集的精确分布。(d)通过使用本文的BCP,标记和未标记特征的经验分布是一致的。(e)其他方法,如SSNet[35]或交叉未标记数据复制粘贴,无法解决经验分布不匹配问题。所有分布都是ACDC中属于心肌类的体素的核密度估计。 

 

在半监督医学图像分割中,标记和未标记的数据来自相同的分布(图第1(a)段)。但在现实世界中,很难从标记数据中估计精确的分布,因为它们的数量很少。因此,在大量未标记数据和极少量标记数据之间总是存在经验分布不匹配(图第1(b)和(c)段)。半监督分割方法总是试图以一致的方式对称地训练标记和未标记的数据。但大多数现有的半监督方法在不同的学习范式下使用标记和未标记的数据。因此,它经常导致丢弃从标记数据中学习的大量知识,以及标记数据和未标记数据之间的经验分布不匹配(图第1(e)段)。

为了缓解标记数据和未标记数据之间的经验不匹配问题,一个成功的设计是鼓励未标记数据从标记数据中学习全面的共性,同时通过标记数据和非标记数据的一致学习策略来进一步实现分布对齐。本文通过提出一种简单但非常有效的双向复制粘贴(BCP)方法来实现这一点,该方法在Mean Teacher框架中实例化。具体来说,为了训练学生网络,通过将随机裁剪从标记图像(前景)复制粘贴到未标记图像(背景)上来增加输入,反之,将随机裁剪从不标记图像(前台)复制粘贴在标记图像上(背景)。学生网络由生成的监督信号通过来自教师网络的未标记图像的伪标签和标记图像的标签图之间的双向复制粘贴来监督。这两个混合图像有助于网络双向对称地学习标记数据和未标记数据之间的公共语义。

框架:

图3。Mean Teacher架构中的双向复制粘贴框架概述,使用2D输入图像,以实现更好的可视化。学生网络的输入是通过以所提出的双向复制粘贴方式混合两个标记和两个未标记的图像来生成的。然后,为了向学生网络提供监督信号,我们通过相同的双向复制粘贴将教师网络生成的真实标签和伪标签组合为一个监督信号,以实现来自真实标签的强监督,帮助来自伪标签的弱监督。

流程描述: 

 

算法:

 

 

 

 

实验:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx缓存优雅清除缓存

1.Nginx缓存 前面我们知道Nginx可以对浏览器缓存进行配置,让一些静态资源缓存到用户本地存储,以提高页面的响应速度,也能降低服务端的压力。浏览器执行缓存的流程如下: 试想一下,如果用户主动清空了本地的浏览器缓存&…

HNU-操作系统-讨论课6

讨论题目: 以一种程序设计语言为例,如 Java、C、Python等介绍其为实现并发控制提供的各种锁机制

doxygen: 在Windows上源码编译(施工中)

文章目录 1. 目的2. 思路3. 安装 Chocolatey4. 用 choco 安装 bison 和 flex安装 gs:安装 libiconv 5. 编译报错 1. 目的 在 windows 上源码编译 doxygen, 改代码加功能。 2. 思路 doxygen 依赖 flex 和 bison, 手动编译 flex 和 bison 很麻烦可以用…

【华为OD机试c++】九宫格游戏【2023 Q1 A卷|200分】

■ 题目描述 九宫格是一款广为流传的游戏,起源于河图洛书。 游戏规则是:1到9九个数字放在33的格子中,要求每行、 每列以及两个对角线上的三数之和都等于15. 在金麻名著《射雕英雄传》中黃蓉曾给九宫格的一种解法,口诀: 戴九恩一,左三右七,二四有肩,八六为足,五居…

通过命令行体验长安链

通过命令行体验长安链 1 、概述2、环境依赖2.1、硬件依赖2.2、软件依赖2.3、git安装2.4、golang安装2.5、gcc 3、环境搭建3.1、源码下载3.2、 源码编译3.3、编译及安装包制作3.4、启动节点集群3.5、查看节点启动使用正常 官方文档 https://docs.chainmaker.org.cn/v2.3.1/html/…

亿信BI专有名词讲解

数据库连接池主题域/主题集/主题表维/ 维表报表模板组件容器布局计算参数分析区浮动门户EasyOlap领导驾驶舱(Dashboard) 1.数据库连接池 连接池就是存储资源和数据的地方。BI一定会有一个缺省连接池,BI服务器的系统表都是在缺省连接池下面,初次部署BI服…

30.SSM框架整合

目录 一、SSM框架整合。 (1)核心笔记。 (1.1)Spring、SpringMVC、MyBatis三者的配置。 (1.2)请求字符集格式与响应字符集格式。 (2)原始方式整合。 (2.1&#xff…

路径规划算法:基于郊狼算法的路径规划算法- 附代码

路径规划算法:基于郊狼优化的路径规划算法- 附代码 文章目录 路径规划算法:基于郊狼优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法郊狼…

带你实现初阶扫雷小游戏—【C语言】

目录 1. 扫雷游戏实现的思路 注意点1 注意点2 2. 函数实现扫雷功能 2.1 初始化棋盘 2.2 显示棋盘 2.3 设置雷 2.4 排查雷 2.5 返回附近雷的个数 3.源码 3.1 game.h 3.2 game.c 3.3 test.c 1. 扫雷游戏实现的思路 注意点1 我们这里拿9*9的棋盘(其中…

Java的基操,基操(二)

🔥常量(Constant)🔥基本数据类型(primitive data type)🔥整型🔥浮点型(Floating Point Number)🔥字符型🔥布尔型(boolean)🔥运算符(operator)🔥逻辑运算符🔥数据类型的转…

【C++初阶】:动态管理

动态管理 一.new和delete(一般使用)二.operator new与operator delete函数(底层)三.new和delete的实现原理四.定位new(placement-new)五.malloc和new的区别 前置知识(堆区)&#xff…

什么样的项目适合UI自动化测试?

我们在考虑做自动化测试之前,一定要先分析一下,这个项目到底适不适合做自动化测试,避免在不太适合自动化测试的项目中痛苦挣扎,既浪费了大量的人力和时间,又收效甚微。下面简单列举一下评估一下项目是否适合做自动化的…

【JavaEE初阶】网络编程

文章目录 网络编程基础网络资源网络编程网络编程中的基本概念发送端和接收端请求和响应客户端和服务端常见的客户端服务端模型 Socket套接字了解UDP和TCPUDP数据报套接字编程DatagramSocket APIDatagramPacket APIInetSocketAddress APIUDP版本的客户端服务器程序 TCP流套接字编…

try catch finally 里面有return的执行顺序

目录 实例结论 实例 1.try和catch中有return时,finally里面的语句会被执行吗 我们可以来分别看看 (1)执行try中的return时 public class Solution {public static int show() {try {return 1;}finally{System.out.println("finally模块被执行");}}publi…

第7章链接:如何动态连接共享库、从应用程序中加载和链接共享库

文章目录 7.10 动态链接共享库静态库的缺点何为共享库共享库的"共享"的含义动态链接过程 7.11 从应用程序中加载和链接共享库运行时动态加载和连接共享库的接口 dlopen函数 dlsym函数 dlclose函数 dlerror动态加载和链接共享库的应用程序示例 7.10 动态链接共享库 静…

强化学习路线规划之深度强化学习代码

虽然说很多代码都有问题,但是不管它们,我不是为了去debug,紧盯住自己的目标,目标是整理出一条通常的强化学习之路,让自己以及看到这些博客的大家在学习的时候能够少走一些弯路。所以从q-learning和Sarsa开始&#xff0…

buuctf9

目录 web [ZJCTF 2019]NiZhuanSiWei misc [BJDCTF2020]认真你就输了 刷新过的图片 crypto 篱笆墙的影子 RSA web [ZJCTF 2019]NiZhuanSiWei 1.启动环境 <?php $text $_GET["text"]; $file $_GET["file"]; $password $_GET["password…

UE4与MATLAB联合仿真环境配置中遇到的问题及解决办法

UE4与MATLAB联合仿真环境配置中遇到的问题及解决办法 目录 UE4与MATLAB联合仿真环境配置中遇到的问题及解决办法前言问题及解决办法1. The following modules are missing or built with a different engine version: MathWorksAerospace MathWorksSimulation MathWorksUAV Eng…

IMX6Ull内核移植详细过程讲解

文章目录 一、安装相应依赖包二、下载相应的内核版本库&#xff08;1&#xff09;讲解官网内核分支&#xff08;2&#xff09;下载内核版本库&#xff08;3&#xff09;内核目录文件讲解 三、开始内核移植过程&#xff08;1&#xff09;步骤一、修改默认架构和默认交叉编译器&a…

modbus协议与nodejs modbus-serial实现

nodejs可通过modbus-serial库来实现modbus协议 npm install modbus-srial 安装完后在examples目录下有例子说明如何使用&#xff0c;本文主要讲述作为客户端的使用方式。 polling_RTU是使用485串口来实现modbus通信&#xff0c; polling_TCP和 polling_UDP则使用TCP/UDP来实现…