深度学习图像增强介绍

目录

  • 一、引言
  • 二、常用数据增广方法
  • 三、图像变换类
    • 3.1 AutoAugment
    • 3.2 RandAugment
  • 四、图像裁剪类
    • 4.1 Cutout
    • 4.2 RandomErasing
    • 4.3 HideAndSeek
  • 五、图像混叠
    • 5.1 Mixup
    • 5.2 Cutmix
  • 六、结论

一、引言

在图像分类任务中,图像数据的增广是一种常用的正则化方法,主要用于增加训练数据集,让数据集尽可能的多样化,使得训练的模型具有更强的泛化能力,常用于数据量不足或者模型参数较多的场景。除了 ImageNet 分类任务标准数据增广方法外,还有8种数据增广方式非常常用,这里对其进行简单的介绍和对比,大家也可以将这些增广方法应用到自己的任务中,以获得模型精度的提升。这8种数据增广方式在ImageNet上的精度指标如 下图所示。

在这里插入图片描述

二、常用数据增广方法

在ImageNet 分类任务中,训练阶段的标准数据增广方法为以下几步:

  1. 图像解码:简写为 ImageDecode
  2. 随机裁剪到长宽均为 224 的图像:简写为 RandCrop
  3. 水平方向随机翻转:简写为 RandFlip
  4. 图像数据的归一化:简写为 Normalize
  5. 图像数据的重排,[224, 224, 3] 变为 [3, 224, 224]:简写为 Transpose
  6. 多幅图像数据组成 batch 数据,如 batch-size[3, 224, 224] 的图像数据拼组成 [batch-size, 3, 224, 224]:简写为 Batch

相比于上述标准的图像增广方法,研究者也提出了很多改进的图像增广策略,这些策略均是在标准增广方法的不同阶段插入一定的操作,基于这些策略操作所处的不同阶段,我们将其分为了三类:

  1. RandCrop (上述的阶段2)后的 224 的图像进行一些变换: AutoAugment,RandAugment
  2. Transpose (上述的阶段5)后的 224 的图像进行一些裁剪: CutOut,RandErasing,HideAndSeek,GridMask
  3. Batch(上述的阶段6) 后的数据进行混合: Mixup,Cutmix

增广后的可视化效果如下图所示。

在这里插入图片描述

下文将介绍这些策略的原理与使用方法,其中,每种数据增广策略的参考论文与参考开源代码均在下面的介绍中列出。

以 下图为测试图像,第三节将基于测试图像进行变换,并将变换后的效果进行可视化。

由于RandCrop是随机裁剪,变换前后的图像内容可能会有一定的差别,无法直观地对比变换前后的图像。因此,本节将 RandCrop 替换为 Resize
在这里插入图片描述

三、图像变换类

图像变换类指的是对 RandCrop 后的224 的图像进行一些变换,主要包括:

  • AutoAugment
  • RandAugment

3.1 AutoAugment

不同于常规的人工设计图像增广方式,AutoAugment 是在一系列图像增广子策略的搜索空间中通过搜索算法找到的适合特定数据集的图像增广方案。针对 ImageNet 数据集,最终搜索出来的数据增广方案包含 25 个子策略组合,每个子策略中都包含两种变换,针对每幅图像都随机的挑选一个子策略组合,然后以一定的概率来决定是否执行子策略中的每种变换。

结果如下图所示。
在这里插入图片描述

3.2 RandAugment

AutoAugment 的搜索方法比较暴力,直接在数据集上搜索针对该数据集的最优策略,其计算量很大。在 RandAugment 文章中作者发现,一方面,针对越大的模型,越大的数据集,使用 AutoAugment 方式搜索到的增广方式产生的收益也就越小;另一方面,这种搜索出的最优策略是针对该数据集的,其迁移能力较差,并不太适合迁移到其他数据集上。

RandAugment 中,作者提出了一种随机增广的方式,不再像 AutoAugment 中那样使用特定的概率确定是否使用某种子策略,而是所有的子策略都会以同样的概率被选择到,论文中的实验也表明这种数据增广方式即使在大模型的训练中也具有很好的效果。

结果如下图所示。
在这里插入图片描述

四、图像裁剪类

图像裁剪类主要是对Transpose 后的 224 的图像进行一些裁剪,并将裁剪区域的像素值置为特定的常数(默认为0),主要包括:

  • CutOut
  • RandErasing
  • HideAndSeek

图像裁剪的这些增广并非一定要放在归一化之后,也有不少实现是放在归一化之前的,也就是直接对 uint8 的图像进行操作,两种方式的差别是:如果直接对 uint8 的图像进行操作,那么再经过归一化之后被裁剪的区域将不再是纯黑或纯白(减均值除方差之后像素值不为0)。而对归一后之后的数据进行操作,裁剪的区域会是纯黑或纯白。

上述的裁剪变换思路是相同的,都是为了解决训练出的模型在有遮挡数据上泛化能力较差的问题,不同的是他们的裁剪方式、区域不太一样。

4.1 Cutout

Cutout 可以理解为 Dropout 的一种扩展操作,不同的是 Dropout 是对图像经过网络后生成的特征进行遮挡,而 Cutout 是直接对输入的图像进行遮挡,相对于Dropout,Cutout 对噪声的鲁棒性更好。作者在论文中也进行了说明,这样做法有以下两点优势:(1) 通过 Cutout 可以模拟真实场景中主体被部分遮挡时的分类场景;(2) 可以促进模型充分利用图像中更多的内容来进行分类,防止网络只关注显著性的图像区域,从而发生过拟合。

结果如下图所示。

在这里插入图片描述

4.2 RandomErasing

RandomErasingCutout 方法类似,同样是为了解决训练出的模型在有遮挡数据上泛化能力较差的问题,作者在论文中也指出,随机裁剪的方式与随机水平翻转具有一定的互补性。作者也在行人再识别(REID)上验证了该方法的有效性。与Cutout不同的是,在RandomErasing中,图片以一定的概率接受该种预处理方法,生成掩码的尺寸大小与长宽比也是根据预设的超参数随机生成。

结果如下图所示。

在这里插入图片描述

4.3 HideAndSeek

HideAndSeek论文将图像分为若干块区域(patch),对于每块区域,都以一定的概率生成掩码,不同区域的掩码含义如下图所示。

在这里插入图片描述

结果如下图所示。
在这里插入图片描述

五、图像混叠

图像混叠主要对 Batch 后的数据进行混合,包括:

  • Mixup
  • Cutmix

前文所述的图像变换与图像裁剪都是针对单幅图像进行的操作,而图像混叠是对两幅图像进行融合,生成一幅图像,两种方法的主要区别为混叠的方式不太一样。

5.1 Mixup

Mixup 是最先提出的图像混叠增广方案,其原理简单、方便实现,不仅在图像分类上,在目标检测上也取得了不错的效果。为了便于实现,通常只对一个 batch 内的数据进行混叠,在 Cutmix 中也是如此。

如下是 imaug 中的实现,需要指出的是,下述实现会出现对同一幅进行相加的情况,也就是最终得到的图和原图一样,随着 batch-size 的增加这种情况出现的概率也会逐渐减小。

结果如下图所示。

在这里插入图片描述

5.2 Cutmix

Mixup 直接对两幅图进行相加不一样,Cutmix 是从一幅图中随机裁剪出一个 ROI,然后覆盖当前图像中对应的区域。

结果如下图所示。

在这里插入图片描述

六、结论

  • 在使用数据增广后,由于训练数据更难,所以训练损失函数可能较大,训练集的准确率相对较低,但其拥有更好的泛化能力,所以验证集的准确率相对较高。

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

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

相关文章

MySQL导入.sql文件后数据库乱码问题

问题分析: 当导入.sql文件后,发现数据库中的备注出现乱码,通常是由于一下原因导致: 字符集不匹配:.sql文件、MySQL服务器、客户端连接使用的字符集不一致。备注内容编码问题:备注内容本身的编码格式与数据…

云数据库 RDS

云数据库 RDS(Relational Database Service,关系型数据库服务)是由阿里云提供的一种托管的关系型数据库服务,旨在简化数据库的部署、管理和维护工作,帮助用户快速构建、部署和管理关系型数据库。RDS 提供了包括 MySQL、…

图社区发现算法-Louvain算法

Louvain社区发现算法出自2008年的论文《Fast unfolding of communities in large networks》,其名字是根据作者所在的城市来命名的。它基于模块度优化来实现社区划分。 准备知识 模块度(modularity)是用来衡量社区内部的链接密度相比社区之间的链接密度的介于-1和…

Elasticsearch之索引的增删改查(6.x版本)-yellowcong

1. 节点信息查看 #查看集群健康情况 curl -X GET localhost:9200/_cat/health?v&pretty#查看节点信息 curl -X GET localhost:9200/_cat/nodes?v&pretty 2. 索引管理 在es中,索引就相当于是mysql中的库了。 #查看索引列表 curl -X GET localhost:9200/…

技术栈4:Docker入门 Linux入门指令

目录 1.Linux系统目录结构 2.处理目录的常用命令 3.Docker概述 4.Docker历史 5.Docker基本组成 6.Docker底层原理 7.Docker修改镜像源 8.Docker基本命令 在学习docker之前我们先要熟悉Linux系统,推荐阅读:Linux笔记(狂神说&#xff0…

UFS文档导航

目录 1、UFS系统模型 2、UFS子系统实现架构 3、Host Controller 4、M-PHY 5、UFS Device 1、UFS系统模型 2、UFS子系统实现架构 3、Host Controller 模块 文档名称 文档描述 Host Controller JESD223D 协议文档,UFS Host Controller Interface DWC_ufshc…

北斗系统:构建天地一体化的高精度定位服务

随着北斗卫星导航系统的全面建成,中国在全球卫星导航领域迈出了坚实的一步。北斗系统不仅提供了全天候、全天时的全球覆盖服务能力,更通过天地一体化的高精度增强服务系统技术,将民用定位精度提升到了新的高度。 北斗系统的高精度服务 北斗…

论文阅读:Omnidirectional Image Super-resolution via Bi-projection Fusion

对于全景图像(ODIs)的超分辨率的技术有:等矩投影(ERP)但是这个没有利用 ODIs 的独特任何特性。ERP提供了完整的视场但引入了显著的失真,而立方体映射投影(CMP)可以减少失真但视场有限…

汽车总线协议分析-FlexRay总线

随着汽车智能化发展,汽车增加安全性和舒适体验的功能增多,用于实现这些功能的传感器、ECU的数量也在持续上升,严重阻碍了线控技术的发展。常用的CAN、LIN等总线由于缺少同步性、确定性和容错性不能满足汽车线控系统(X-by-Wire)的要求。因此&a…

《算法导论》英文版前言To the teacher第4段研习录:有答案不让用

【英文版】 Departing from our practice in previous editions of this book, we have made publicly available solutions to some, but by no means all, of the problems and exercises. Our Web site, http://mitpress.mit.edu/algorithms/, links to these solutions. Y…

AI Agent工作流程:关于是使用 LangGraph 还是 LangChain 进行构建的完整指南

深入了解同一创建者 LangChain 和 LangGraph 的两个库:它们的关键构建块、它们如何处理其功能的核心部分,以及为您的用例在它们之间做出决定 语言模型为用户如何与 AI 系统交互以及这些系统如何通过自然语言相互通信开启了可能性。 在本文中&#xff0c…

qt QPrinter详解

1、概述 QPrinter类是Qt框架中用于打印输出的绘图设备。它表示打印出来的一系列页面,并提供了一组附加功能来管理特定于设备的特性,比如方向和分辨率。QPrinter可以生成PDF文档,也可以将内容发送到打印机进行实际打印。它继承自QPagedPaintD…

腾讯面试:如何解决哈希冲突?

我们面试时经常被问到HashMap是怎么解决哈希冲突的,很多同学对其含糊其词、一知半解。因此小编对相关知识进行了总结,希望帮助读者加深对其理解。 哈希表就是通过散列函数将键映射到定值,简单来说就是一个键对应一个值。 而通过散列函数映射…

数组中的四个函数(数组实现)

strlen&#xff08;输出长度&#xff09; #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) { char str[100]; int count 0; // 提示用户输入字符串 printf("请输入一个字符串: &qu…

大数据-241 离线数仓 - 电商核心交易 业务数据表结构 订单、产品、分类、店铺、支付表

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

Linux-命令

文章目录 一. Linux的目录1. Linux的目录结构2. Linux的路径的描述方式3. home目录,当前工作目录4. 栗子 二. Linux命令入门1. 什么是命令,命令行2. Linux命令基础格式 三. 目录相关命令1. ls:展示当前工作目录下的内容2. cd:切换工作目录3. pwd:输出当前所在的工作目录4. 相对…

SpringBoot该怎么使用Neo4j - 优化篇

文章目录 前言实体工具使用 前言 上一篇中&#xff0c;我们的Cypher都用的是字符串&#xff0c;字符串拼接简单&#xff0c;但存在写错的风险&#xff0c;对于一些比较懒的开发者&#xff0c;甚至觉得之间写字符串还更自在快速&#xff0c;也确实&#xff0c;但如果在后期需要…

旋转图像

旋转图像 ​ 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 ​ 你必须在** 原地** 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,…

3D数据大屏实现过程,使用echarts、Next.js

&#x1f4dc; 本文主要内容 数据大屏自适应方案动效 echarts&#xff1a; 3D 立体柱状图动态流光折线图 3D 地球&#xff08;飞线、柱状图&#xff09;无限滚动列表 &#x1f50d; 大屏效果 数据大屏&#xff1a; 点击预览 &#x1f579; 运行条件 next 12.3.4echarts 5.4…

长文 | RAG的实战指南及探索之路

今天给大家带来一篇知乎孙鹏飞 的关于RAG实战的文章。 作者&#xff1a;孙鹏飞 知乎&#xff1a;https://zhuanlan.zhihu.com/p/6822534961. 背景介绍 RAG&#xff08;Retrieval Augmented Generation&#xff0c;检索增强生成 &#xff09;方法是指结合了基于检索的模型和生…