【局部自动数据增强】YOCO:将图片一分为二,各自增强后拼合为一

【自动数据增强】YOCO:将图片一分为二,各自增强后拼合为一

    • 核心思想
      • 好在哪里?
      • 切哪里、切几次?
      • 何时用?
    • 总结

 


核心思想

论文:https://arxiv.org/pdf/2201.12078.pdf

代码:https://github.com/JunlinHan/YOCO.git
 

YOCO将一张图片分割成两个相等的部分,可以是在高度或宽度方向上。

然后在每个部分内独立执行相同的数据增强操作。

增强后的部分再拼接回一个完整的增强后的图像。

上方的例子显示了YOCO应用于“颜色抖动(Color jitter)”增强的结果,两个部分都进行了增强,生成了一个多样化的完全增强后的图像。

  • 就像把一张照片撕成两半,每半上做不同的变化,这样电脑就能学会怎么分辨图片的不同部分。

下方的例子展示了YOCO应用于“水平翻转(Horizontal flip)”,只有左侧部分进行了增强,生成了一个部分增强的图像。

  • 就好比我们不只从一个方向看一个苹果,而是转来转去看看它的每一面。

通过这种方式,YOCO增加了单个样本的增强多样性,并鼓励神经网络从部分信息中识别对象。

好在哪里?

YOCO 这种数据增强方法好在哪里呢?

现有的数据增强方法大多在图像级别进行,而标准的图像级数据增强忽略了局部区域的特征。

就像所有的食材全都放在一个大碗里搅拌,这样每一口吃上去味道都差不多,整张图片都做一样的变化。

  • 解法:YOCO方法,局部增强应用。
    • 介绍: YOCO通过在非图像级别(片段级别)上执行相同的增强,提高了样本的局部区域多样性,促进神经网络从部分信息中识别对象,从而提高鲁棒性。

YOCO作为一种新的数据增强方法,它的目的是通过在图像的不同部分独立进行增强来提高数据的多样性,这对于提高模型在识别部分信息时的性能特别有用。

加入随机性

  • 这就像咱们在每次做菜时,把食材分成两份,然后在两个小碗里。
  • 这次咱们可能在一个碗里多放点盐,在另一个碗里多加点醋,或者一个碗里用辣椒,另一个不用。
  • 这样一来,每个碗里的食材都有自己独特的味道,最后咱们再把它们混在一起,每一口的味道都有惊喜,就好比YOCO在不同片段上应用不同的随机增强,让模型学会认识更多样化的图片。

多次切割

  • 而如果咱们把食材切得更细,分成更多的小碗,每个小碗里都调整不同的味道,那么最后混合起来的菜肴就更加丰富多彩了。
  • 这就像YOCO在图像的不同方向上多次切割,然后在每一小块上都做不同的调整,这样模型就能从更多角度学习到图像的信息,就像咱们尝到了更多层次的美味一样。

所以,用YOCO的方式做数据增强,就像做了一道口味丰富,层次分明的大餐,让电脑在识别图片的时候,不仅能看到表面,还能品味到每一小块带来的不同信息,这样学到的就更全面,处理问题的能力也就更强了。

 

切哪里、切几次?

YOCO就好像是在做蛋糕时决定要怎么切它,以便在每一块上都涂上不同的奶油。

问题一,切哪里好呢?

就像咱们决定是从中间切开还是随便切一刀。

YOCO用的方法就像扔硬币,让机会来决定切哪里。

为什么这么做呢?

因为有时候切在中间可能让蛋糕两边的味道更均衡,有时候随机切又能带来意外的惊喜。

这就是为什么他们用随机的方式来决定切割位置,想看看哪种方法能让蛋糕(也就是数据)更有味道。

 
问题二,切几刀好呢?

这就像是咱们决定是切成两块、三块还是四块。

开始的时候,他们试了切一刀、两刀和三刀,看看哪种方式能让蛋糕(数据)变得更有趣。

但他们发现切得太多了,蛋糕(数据)就变得太复杂,每块都有不同的味道,反而让人难以享受(学习)。

所以,最后他们发现,通常切一刀就够了,这样能保持蛋糕(数据)的多样性,又不至于太复杂。

总的来说,YOCO就像是在做蛋糕时找到最好的切割方法。

通过实验,他们发现随机选择切割位置并且只切一刀,是最好的方式。

这样做的蛋糕(数据)既有趣味性又不会太乱,让电脑(吃蛋糕的人)更容易学习和享受。

 

何时用?

何时好用:

  1. 在多样性重要的情况下: 如果你的数据集包含多样化的图像,或者你需要模型从不完整或部分信息中学习识别对象,那么YOCO是一个很好的选择。

    因为YOCO通过在不同部分的图像上应用增强,能增加数据的多样性,帮助模型更好地理解和处理各种场景。

  2. 在需要高泛化能力的场景中: 当你的目标是提高模型在各种条件下的表现,特别是在未见过的或者变化大的数据上时,使用YOCO可以提高模型的泛化能力。

    这是因为YOCO能让模型接触到更多变化的数据样本,从而更好地适应新情况。

何时不太好用:

  1. 在特定类型的图像上: 对于一些特定类型的图像,比如结构固定、容易识别的对象图像(比如一些数据集中的标志性物体),使用YOCO可能不是最佳选择。

    例如,在进行水平翻转的增强时,如果图像是一个标志性的物体占据了大部分画面,使用YOCO可能会破坏图像的结构和一致性,导致模型学习效果变差。

  2. 在裁剪比率固定的数据集上: 如果数据集中的图像都有固定的裁剪比率,这意味着图像中的对象位置和大小相对固定,这时使用YOCO可能不会带来额外的好处。

    因为YOCO的优势在于处理多样性和不确定性较高的数据,而在这种情况下,标准的图像级增强可能就足够了。

在需要提高数据多样性和模型泛化能力的场景下,YOCO是一个强大的工具。

但在处理结构简单、容易识别的对象或者裁剪比率固定的数据集时,不如传统数据增强。

 


总结

YOCO 组成:

  1. 子问题1:如何增强数据,使神经网络能从部分信息中学习并识别对象?
    • 子解法1:图像分割与独立增强。
      • 介绍: YOCO通过将图像分割成两部分,并在每部分上单独进行数据增强,从而提高样本的多样性。这种方法使神经网络能够更好地从部分信息中学习和识别对象。

· 假设有一张狗的照片。

· 使用YOCO,我们将这张照片分割成两半。

· 在一半上,我们可能加入颜色变化,而在另一半上,我们可能增加模糊效果。

· 这样,神经网络在训练时就不仅仅关注整张图片,而是学习从每个片段中提取有用信息,比如即使只看到狗的一半或者在图像不清晰的情况下也能识别出狗。

  1. 子问题2:如何处理图像级别的增强方法,可能导致的泛化能力和鲁棒性不足的问题?

    • 子解法2:片段级别的数据增强。
      • 介绍: YOCO在非图像级别(即片段级别)进行数据增强,能够在局部区域和整体图像级别上提高多样性,增强模型的泛化能力和鲁棒性。

     
    一组多样化的风景照片。

    如果我们仅在整张照片上应用数据增强(如调整亮度),可能会忽略图片中特定区域的细节。

    但如果使用YOCO,我们可以对图片的一部分进行亮度调整,而对另一部分应用不同的增强,比如对比度增强。

    这样的处理提高了整个数据集在不同增强效果下的表现能力,从而增强了模型在多种环境条件下的适应性。

  2. 子问题3:如何在对比性自监督学习中,提高表示的强度和转移能力?

    • 子解法3:YOCO在对比性预训练中的应用。
      • 介绍: 在对比性自监督学习中应用YOCO,可以产生更强大的表示,这些表示更容易转移到不同的任务中,如分类、检测和分割。

     
    假设我们正在使用自监督学习模型来学习交通标志的表示。

    通过YOCO的应用,模型可能会接触到部分是增强过的交通标志图片,

    比如一半是正常颜色,另一半是更暗的色调。

    这种训练方式使模型能够学习到更丰富和强大的特征表示,从而当它被应用于实际的交通标志检测任务时,无论交通标志处于何种光照或背景条件下,模型都能更准确地进行识别。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySql的使用方法

一.什么是MySql MySql是一种数据库管理系统,是用来存储数据的,可以有效的管理数据,数据库的存储介质为硬盘和内存。 和文件相比,它具有以下优点: 文件存储数据是不安全的,且不方便数据的查找和管理&#xf…

Python网络拓扑库之mininet使用详解

概要 网络工程师、研究人员和开发人员需要进行各种网络实验和测试,以评估网络应用和协议的性能,以及解决网络问题。Python Mininet是一个功能强大的工具,它允许用户创建、配置和仿真复杂的网络拓扑,以满足各种实际应用场景。本文…

SQL注入:二次注入

SQL注入系列文章: 初识SQL注入-CSDN博客 SQL注入:联合查询的三个绕过技巧-CSDN博客 SQL注入:报错注入-CSDN博客 SQL注入:盲注-CSDN博客 目录 什么是二次注入? 二次注入演示 1、可以注册新用户 2、可以登录->…

C++ 类与对象(上)

目录 本节目标 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7.类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 8.this指针 8.1 thi…

前言:穿越迷雾,探索C语言指针的奇幻之旅

各位少年,大家好,我是博主那一脸阳光,今天给大家分享指针,内存和地址的使用,以及使用。 前言: 在编程的世界中,若论灵活多变、深邃神秘的角色,非“指针”莫属。如同哈利波特手中的魔…

C++ 数论相关题目 求组合数I

直接按照公式求解会超时。 常用组合数递推式。 因此用递推式先预处理出来&#xff0c;然后查表。 #include <iostream> #include <algorithm>using namespace std;const int N 2010, mod 1e9 7;int c[N][N];void init() {for(int i 0; i < N; i )for(in…

C/C++ - 函数进阶(C++)

目录 默认参数 函数重载 内联函数 函数模板 递归函数 回调函数 默认参数 定义 默认参数是在函数声明或定义中指定的具有默认值的函数参数。默认参数允许在调用函数时可以省略对应的参数&#xff0c;使用默认值进行替代。 使用 默认参数可以用于全局函数和成员函数。默认参…

RDMA技术赋能:构建高速网络基础设施,加速大型模型高效训练

深入剖析RDMA在高速网络环境中的应用价值与实现方式 远程直接内存访问&#xff08;RDMA&#xff09;作为超高速网络内存访问技术的领军者&#xff0c;彻底颠覆了传统程序对远程计算节点内存资源的访问模式。其卓越性能的核心在于巧妙地绕过了操作系统内核层&#xff08;如套接…

npm v10.4.0 is known not to run on Node.js v14.21.3

问题起因 vue项目在打包的时候突然报如下错误&#xff0c;项目原来打包的时候是没问题的。 request to https://registry.npm.taobao.org/acorn failed, reason: certificate然后找到了一篇帖子&#xff0c;淘宝npm镜像地址https证书到期了&#xff0c;发现确实是这个问题。在…

Redis客户端之Redisson(三)Redisson分布式锁

一、背景&#xff1a; 高效的分布式锁设计应该包含以下几个要点&#xff1a; 1、互斥&#xff1a; 在分布式高并发的条件下&#xff0c;我们最需要保证&#xff0c;同一时刻只能有一个线程获得锁&#xff0c;这是最基本的一点 2、防止死锁&#xff1a; 在分布式高并发的条…

骑砍战团MOD开发(41)-LOD渲染技术

一.LOD技术 LOD技术&#xff0c;即Level Of Details&#xff0c;是一种在3D图形渲染中常用的技术&#xff0c;主要用于优化渲染性能。 通过在建模时添加LOD模型(低模模型,面数较少),游戏引擎通过计算模型的远近和光照等情况选择性加载原模型(高模)/LOD模型(低模),实现游戏…

D3485——+5V工作电压,内置失效保护电路等功能高达10Mbps的传输速率,可应用在智能电表,安防监控等产品上

D3485 是一款 5V 供电、半双工的 RS-485 收发器&#xff0c;芯片内部包含一路驱动器和 一路接收器。D3485 使用限摆率驱动器&#xff0c;能显著减小 EMI 和由于不恰当的终端匹 配电缆所引起的反射&#xff0c;并实现高达10Mbps 的无差错数据传输。 D3485 内置失效保 护电路&…

小红树上染色

记忆化深搜 #include <iostream> #include <string> #include <stack> #include <vector> #include <queue> #include <deque> #include <set> #include <map> #include <unordered_map> #include <unordered_set&g…

详解OpenHarmony各部分文件在XR806上的编译顺序

大家好&#xff0c;今天我们来谈一谈编程时一个很有趣的话题——编译顺序。我知道&#xff0c;一提到编译可能大家会感到有点儿头疼&#xff0c;但请放心&#xff0c;我不会让大家头疼的。我们要明白&#xff0c;在开始写代码之前&#xff0c;了解整个程序的编译路径是十分有必…

【MySQL】补充和navicat的一些简单使用

文章目录 前言在这里插入图片描述 事情起因因为这个articlecount的c是小写了&#xff0c;我想改成大写 一、修改二、navicat的使用步骤1.连接2.建库&#xff0c;建表 三.填写数据总结 前言 事情起因因为这个articlecount的c是小写了&#xff0c;我想改成大写 提示&#xff1a;…

C语言数据结构(4)——线性表其三(双向链表)

欢迎来到博主的专栏——C语言数据结构 博主ID&#xff1a;代码小豪 文章目录 链表的种类头结点循环链表双向链表带头双向循环链表带头双向循环链表的定义与初始化 空链表尾插法打印双向链表头插法查找指定数据项的节点在指定位置之后插入节点指定位置的删除双向链表的销毁 顺序…

东北老铁带你总结《Java IO 模型》

东北老铁带你总结《Java IO 模型》 文章目录 东北老铁带你总结《Java IO 模型》前言I/O何为 I/O?有哪些常见的 IO 模型? Java 中 3 种常见 IO 模型BIO (Blocking I/O)NIO (Non-blocking/New I/O)AIO (Asynchronous I/O) IO 模型这块确实挺难理解的&#xff0c;需要太多计算机…

漏洞原理linux操作系统的SqlMap工具的使用

漏洞原理linux操作系统的SqlMap工具的使用 Linux操作系统基础操作链接: 1024一篇通俗易懂的liunx命令操作总结(第十课)-CSDN博客 kali的IP地址:192.168.56.1 实操 # kali中使用sqlmap http://192.168.56.1/ sqlmap -u http://192.168.56.1/news/show.php?id46 sqlmap -u …

IT界含金量高的证书,除了软考证书,还有这15种

文章目录 计算机技术与软件专业技术资格考试全国计算机信息高新技术考试思科认证微软认证&#xff1a;华为认证IBM认证国家信息安全水平考试注册信息安全专业人员注册信息安全渗透测试工程师项目管理专业人士资格认证Red Hat认证CompTIA 认证CISSP认证Oracle认证Sun认证AWS认证…

sqli.labs靶场(8-17关)

8、第八关&#xff08;布尔盲注&#xff09; id1显示You are in...........&#xff0c;id1单引号不显示&#xff0c;id1 --显示正常 这个应该是单引号闭合&#xff0c;接下来就和第七关差不多上脚本 爆库名长度&#xff1a;id1%27%20and%20length(database()){i}%20-- 爆库…