【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读

这篇具有很好参考价值的文章主要介绍了【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

英语积累

  1. Machine learning systems that operate in the real openworld invariably encounter test-time data that is unlike training examples, such as anomalies or rare objects that were insufficiently or even never observed during training. invariably:一贯的
  2. … can be crisply formulated as … 可以被很清晰的定义/表述为
  3. an elegant idea is to… 一个绝佳的方法是…

为什么使用GAN系列网络进行开放集检测

综述:Applications of Generative Adversarial Networks in Anomaly Detection: A Systematic Literature Review

  1. GAN网络可以学习数据分布
    GAN的基本思想是通过让两个神经网络相互对抗,从而学习到数据的分布。其中一个神经网络被称为生成器(Generator),它的目标是生成与真实数据相似的假数据;另一个神经网络被称为判别器(Discriminator),它的目标是区分真实数据和假数据。两个网络相互对抗,不断调整参数,从而最终生成具有高质量和多样性的假数据。

  2. GAN网络有产生新数据的能力,可以大大缓解新颖类检测中缺少新颖类别数据的情况。

摘要

开放集现阶段两大方法:

  1. 利用一些例外(异常)数据作为开放集,训练一个闭集VS开放集的二分类检测器
  2. 使用GAN网络无监督学习闭集数据分布,使用该判别器作为开放集的似然函数

两个方法的缺陷:

  1. 作为开放集使用的异常数据无法穷尽现实世界的所有可能的未知值
  2. GAN网络训练过程不稳定

解决: 提出OpenGAN

  • 使用对抗合成的假数据填充可用的真实开放集训练数据
  • 闭集k-ways的特征基础上建立判别器

1. 前言

【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读,模型详解与复现,论文阅读

算法演变过程:

  1. 使用GAN网络生成fake data,训练一个判别 close data 和 fake data 的二分类判别器;
  2. 在训练时使用一些真实世界中的离群数据(outlier data) 可以增强网络性能,即训练一个判别close data和open data的判别器;
  3. O p e n G A N p i x OpenGAN^{pix} OpenGANpix: 结合GAN产生的fake data并且使用真实世界中的outlier data来训练判别器
  4. O p e n G A N f e a OpenGAN^{fea} OpenGANfea : 不再使用图片的RGB像素进行训练,而是使用off-the-shelf (OTS) features来对GAN网络的训练;

off-the-shelf (OTS) features: 通过闭集检测的网络计算出来的特征

2. 相关工作

开集检测

一般来说,异常数据不会在训练阶段出现。

通用方法:

  1. 在闭集数据上训练k-ways闭集分类器,然后用于开放集检测
  2. 开发集成模型: 在闭集数据上训练k-ways闭集分类器 + 训练时使用合成的fake data进行开集检测,会牺闭集检测的准确率

基于GAN网络的开集检测

基于暴露异常数据的开集检测

3. OpenGAN

开放集检测步骤:

  1. 把测试数据先分类:是开集还是闭集 (关键步骤)
  2. 对闭集进行K-ways分类

一般的开放集检测都会在训练时设置开放集数据不可见,但是有研究证明在训练阶段将一些异常数据作为开放集数据进行训练可以有限的提升检测性能;

但是由于很难产生覆盖开放世界的训练集数据,而且分类器可能会在异常数据上发生过拟合,因此提出OpenGAN

OpenGAN优势:使用GAN网络产生假数据作为开放集数据的训练集去欺骗分类器

3.1 公式建模

3.1.1 二分类方法

给定一个二元分类器D,它的训练目标是将输入样本分为闭集(closed-set)和开集(open-set)两个类别。

D c l o s e d ( x ) D_{closed}(x) Dclosed(x):在闭集上的数据分布
D o p e n ( x ) D_{open}(x) Dopen(x):在开放集上的数据分布(不属于闭集)

m a x D E x ∼ D c l o s e d [ l o g D ( x ) ] + λ o ⋅ E x ∼ D o p e n [ l o g ( 1 − D ( x ) ) ] max_D E_{x∼D_{closed}} [logD(x)] + λo · E_{x∼D_{open}} [log(1−D(x))] maxDExDclosed[logD(x)]+λoExDopen[log(1D(x))]

  • D ( x ) D(x) D(x):这表示分类器D对于给定输入样本x的输出。它表示样本属于闭集类别的概率。也就是说,D(x)是模型对于输入样本属于闭集的估计概率。

  • E x ∼ D c l o s e d [ l o g D ( x ) ] E_{x∼D_{closed}} [logD(x)] ExDclosed[logD(x)]:这是第一项,表示对于从闭集数据中抽取的样本x,将其输入到分类器D中,并计算其对数概率logD(x),然后对所有闭集样本取平均。这一项鼓励分类器正确地对闭集样本进行分类,即将闭集样本的概率估计尽可能地提高。

  • E x ∼ D o p e n [ l o g ( 1 − D ( x ) ) ] E_{x∼D_{open}} [log(1−D(x))] ExDopen[log(1D(x))]:这是第二项,表示对于从开集数据中抽取的样本x,将其输入到分类器D中,并计算其对数概率log(1−D(x)),然后对所有开集样本取平均。这一项鼓励分类器正确地将开集样本排除在闭集之外,即将开集样本的概率估计尽可能地降低。

  • λ o λo λo:这是一个超参数,用于调节第二项(开集样本)相对于第一项(闭集样本)的权重。通过调整λo的值,可以控制分类器在训练过程中对于闭集和开集样本的重视程度。

存在问题

二分类方法的有效性取决于开集训练样本是否能够代表分类器在测试时遇到的开集数据。 如果开集训练样本不能充分涵盖开放世界数据中的变化和多样性,那么分类器在面对未见过的开集样本时可能表现不佳。

如何解决

使用GAN网络生成数据。

3.1.2 使用合成数据

  • G ( z ) G(z) G(z) : 一个可以生成图像的生成网络,生成器网络 G 接收从高斯正态分布中随机采样得到的噪声输入 z,并使用这个噪声向量生成合成的图像。
    这些合成图像可以被视为额外的负例或开放集样本,然后将它们添加到用于训练分类器D的训练数据池中。

  • D ( D i s c r i m i n a t o r ) D(Discriminator) D(Discriminator): 判别器,负责判断输入的数据是真实的还是生成的。

为防止生成器网络 G 合成的图片过于简单,使用对抗性训练(adversarial training)的方法来训练生成器网络 G,以生成具有欺骗性的困难示例,使分类器 D 难以将其分类为开放集数据。

GAN的损失如下所示:
m i n G E z ∼ N [ l o g ( 1 − D ( G ( z ) ) ) ] min_G E_{z∼N} [ log (1 - D(G(z))) ] minGEzN[log(1D(G(z)))]

该损失函数的意思是,生成器G最小化判别器D对生成的合成数据不是开放集数据的分类概率;也就是说,生成器G试图生成合成数据,使得判别器D将其误判为开放集数据的概率最大化。 通过这个过程,生成器G学会生成更难以分辨的合成数据,从而提高了判别器D在面对开放集数据时的性能和鲁棒性。

存在问题

开放集判别是指判别器 D 能够正确识别已知类别的图像,并将未知类别的图像标记为“未知”或“开放集”。然而,如果生成器 G 生成的图像与已知类别的图像非常相似,判别器 D 可能会错误地将其分类为已知类别(close-set),而无法准确识别为开放集。

如何解决

设计一些技术或方法,使得生成器 G 不仅生成逼真的图像,还能生成具有一定挑战性的图像,使判别器 D 能够有效地进行开放集判别。
这样,判别器 D 就能够准确地将开放集的数据标记为“未知”,而不是错误地将其分类为已知类别。

3.1.3 OpenGAN

通过使用真实的开放集和封闭集数据,以及生成的开放集数据,对判别器D和生成器G进行联合训练。

OpenGAN方法采用了一种类似GAN的最小最大优化过程,同时优化判别器D和生成器G。 公式如下所示。

m a x D m i n G E x ∼ D c l o s e d [ l o g D ( x ) ] + λ o ⋅ E x ∼ D o p e n [ l o g ( 1 − D ( x ) ) ] + λ G ⋅ E z ∼ N [ l o g ( 1 − D ( G ( z ) ) ) ] max_D min_G E_{x∼D_{closed}} [logD(x)] + λ_o · E_{x∼D_{open}} [log(1−D(x))] + λ_G · E_{z∼N} [log(1 − D(G(z)))] maxDminGExDclosed[logD(x)]+λoExDopen[log(1D(x))]+λGEzN[log(1D(G(z)))]

  • E x ∼ D c l o s e d [ l o g D ( x ) ] E_{x∼D_{closed}} [logD(x)] ExDclosed[logD(x)] : 表示使用封闭集数据训练判别器D,使其正确区分封闭集数据。
  • E x ∼ D o p e n [ l o g ( 1 − D ( x ) ) ] E_{x∼D_{open}} [log(1−D(x))] ExDopen[log(1D(x))]:表示使用真实的开放集数据训练判别器D,使其将开放集数据识别为开放集。
  • E z ∼ N [ l o g ( 1 − D ( G ( z ) ) ) ] E_{z∼N} [log(1 − D(G(z)))] EzN[log(1D(G(z)))]:表示使用生成器G生成的假开放集数据训练判别器D,使其能够正确区分生成的假开放集数据。
  • λ o λ_o λo 控制了真实开放集数据对于训练的贡献,而 λ G λ_G λG 控制了生成器G生成的假开放集数据对于训练的贡献。

当没有真实的开放集训练样本时( λ o = 0 λ_o=0 λo=0),上述最小最大优化问题仍然可以训练一个用于开放集分类的判别器D。在这种情况下,训练OpenGAN等效于训练一个普通的GAN,并使用其判别器作为开放集的似然函数。

3.1.4 模型验证

由于对抗生成训练会导致判别器D无法区分闭集中的真实数据和由生成器G产生的fake image,因此需要使用真实的异常数据来进行模型的验证,用于评估判别器D在开放集与封闭集分类准确性上的表现。
选择具有最佳开放集与封闭集分类准确性的判别器D作为最终模型。

3.2 先前基于GAN方法的总结

3.2.1 生成器vs判别器

之前的方法中主要是利用生成器生成图像来扩充训练集,但是该方法主要是利用判别器来判别闭集图像和开集图像。

不需要训练一个单独的模型来进行开放集识别,而是直接使用已经训练好的判别器模型来评估图像的开放集归属。

通常情况下,对于封闭集分类任务,我们会训练一个模型,比如一个卷积神经网络(CNN),来对已知类别进行分类。这个模型会经过训练,学习如何识别封闭集中的各个类别。然而,在开放集识别中,我们面临的挑战是要识别出封闭集中未知类别的样本。传统的方法是训练一个单独的模型来处理开放集识别,这个模型通常包括一个分类器和一个开放集检测器。

但是,使用已经训练好的判别器模型作为开放集的似然函数时,我们可以绕过训练一个单独的模型,直接使用判别器模型来评估一个给定图像属于封闭集中已知类别的概率。

判别器在训练过程中已经学习到了区分真实图像和生成图像的能力。因此,我们可以通过将一个图像输入到判别器模型中,得到判别器对该图像属于封闭集已知类别的似然度。如果判别器给出的似然度低于某个阈值,我们可以将该图像判定为开放集中的未知类别。

这种方法的优势在于利用了已经训练好的判别器模型,无需额外训练一个专门的模型来处理开放集的识别。我们可以直接使用判别器模型来评估图像的开放集归属,从而简化了模型的设计和训练过程。

3.2.2 Features vs. Pixels

直接利用features训练GAN网络比使用RGB图像的效果更好。比如说使用分类网络倒数第二层输出的pre-logit特征向量。

off-the-shelf feature: 通用特征,指的是使用现有的、通用的预训练特征提取器提取到的特征,可以节省训练时间和计算资源,并且可以受益于预训练模型在大规模数据上的学习。

4. 实验部分

  • 设置一:把数据集分成闭集和开放集; e.g. 对于MINIST数据集,MNIST digits 0-5 as the closed-set for training, and digits 6-9 as the open-set in testing.
  • 设置二:采用了跨数据集的图像来构建开放集的训练集和测试集。 这样做的目的是确保开放集中的样本与封闭集的样本在数据来源上具有一定的差异,以更真实地模拟实际应用中的开放集场景。
  • 设置三:评估效果。

4.1 具体实现

K-way classification networks under Setup-I and II : 在闭集训练集上训练ResNet18,使用resnet18倒数第二层提取到的特征作为OTS特征,基于OTS特征的基础上训练了 O p e n G A N f e a OpenGAN^{fea} OpenGANfea,为了对比实验,还训练了 O p e n G A N p i x OpenGAN^{pix} OpenGANpix

4.2 Setup-I: Open-Set Discrimination

数据集划分: For each of the first three datasets that have ten classes, we randomly split 6 (4) classes of train/val-sets as the closed (open) train/val-sets respectively. For TinyImageNet that has 200 classes, we randomly split 20 (180) classes of train/val-sets as the closed (open) train/val-set.

结果:

由于训练的时候没有开放集数据的训练参与,所以不能使用训练二分类器的方法来进行分类器训练,此处GAN判别器可以使用模型选择的方法来进行训练;
模型选择是一种通过比较不同模型的性能来选择最佳模型的方法。在训练过程中,作者可能会尝试不同的鉴别器架构或超参数,并选择在验证集上表现最好的鉴别器模型作为OpenGAN-0的开放集可能性函数。

结果证明openGAN表现的是最好的。

【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读,模型详解与复现,论文阅读

讨论
为了证明只构建鉴别器作为似然函数的有效性,作者还使用BiGAN做了对比实验,BiGAN是基于重构误差作为似然函数的网络,因此作者使用重构误差和判别器两种方法分别训练BiGAN,实验结果证明使用判别器的方法更好。

【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读,模型详解与复现,论文阅读

4.3. Setup-II: Cross-Dataset Open-Set Recognition

构建跨数据集来训练,降低数据集层面的偏差;

e.g. 使用MNIST数据集去训练一个模型,使用CIFAR10数据集来测试,从而分析如何将开放集方法推广到不同的数据集中。文章来源地址https://www.toymoban.com/news/detail-780805.html

到了这里,关于【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【论文精读】GPT-NER: Named Entity Recognition via Large Language Models

    【论文精读】GPT-NER: Named Entity Recognition via Large Language Models

    一篇2023年4月26日才挂上arxiv的文章,是我看到的第一篇用LLM解决NER任务的文章,在我看来,LLM才是NER问题的最优解,尤其是小样本场景,具有丰富先验知识的LLM,其涌现能力总能让我叹为观止。 LLM在NER上的表现低于基线,这是因为二者任务不同,前者是文本生成任务,后者是

    2024年02月02日
    浏览(12)
  • 【论文阅读笔记】Emu Edit: Precise Image Editing via Recognition and Generation Tasks

    【论文阅读笔记】Emu Edit: Precise Image Editing via Recognition and Generation Tasks

    Emu edit是一篇 图像编辑Image Editing 的文章,和instruct pix2pix类似,选择了合成数据作为训练数据,不是zero-shot任务,并进一步将多种任务都整合为生成任务,从而提高模型的编辑能力。本篇文章的效果应该目前最好的,在local和global编辑甚至其他代理任务(分割、边缘检测等)

    2024年02月04日
    浏览(21)
  • 论文精读:《BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective 》

    论文精读:《BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective 》

    本文工作: 提出了一种具有透视监督(perspective supervision)的新型鸟瞰(BEV)检测器,该检测器收敛速度更快,更适合现代图像骨干。 现有的最先进的BEV检测器通常与VovNet等特定深度预训练的主干相连,阻碍了蓬勃发展的图像主干和BEV检测器之间的协同作用。 为了解决这一限制

    2024年02月04日
    浏览(8)
  • 《论文阅读》SetGNER:General Named Entity Recognition as Entity Set Generation

    《论文阅读》SetGNER:General Named Entity Recognition as Entity Set Generation

    不知道是不是大模型的流行还是什么其他原因,导致现在网上都没有人来分享NER模型的相关论文了~ 本文方法简单,代码应该也比较简单(但是没见作者放出来)。 推荐指数:★★☆☆☆ 处理三种不同场景的NER 与 sequence-to-sequence NER 方法不同,本模型不需要强制实体按照顺序

    2023年04月21日
    浏览(13)
  • 安卓开发报错解决办法does not have an ActionBar set via setSupportActionBar()

    做安卓应用开发的时候遇到一个奇怪的报错,搜遍了网上都没有,报错代码如下,希望后面遇到此问题的人可以快速定位问题 问题锁定在MainActivity中,后面发现注释掉这句代码就可以正常运行了 怀疑是此句代码隐藏了标题栏导致与setSupportActionBar()发生了冲突?

    2024年02月17日
    浏览(7)
  • face_recognition人脸识别与人脸检测

    1、安装face_recognition库 face_recognition库的人脸识别是基于业内领先的C++开源库dlib中的深度学习模型,安装face_recognition库的同时会一并安装dlib深度学习框架。 2、face_recognition库的使用 1)load_image_file加载要识别的人脸图像 这个方法主要是用于加载要识别的人脸图像,返回的数据

    2024年02月13日
    浏览(6)
  • 【步态识别】GaitSet 算法学习+配置环境+代码调试运行《GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition》

    【步态识别】GaitSet 算法学习+配置环境+代码调试运行《GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition》

    关于GaitSet核心算法,建议直接跳到 “4. 算法核心代码——4.1 gaitset.py” 论文地址: https://ieeexplore.ieee.org/document/9351667 CASIA-B数据集下载地址: http://www.cbsr.ia.ac.cn/china/Gait%20Databases%20CH.asp 代码下载地址: https://github.com/AbnerHqC/GaitSet 1. 确定显卡型号 右键“此电脑”——“管理”

    2023年04月08日
    浏览(11)
  • 视频目标检测paper(三)《Temporal ROI Align for Video Object Recognition》

    视频目标检测paper(三)《Temporal ROI Align for Video Object Recognition》

            这篇文章作为2021年的AAAI视频目标检测类文章,可以说是现在视频目标检测的最新技术之一了,并且已经集成到了MMtracking框架之中,可以说是集合了计算机视觉,深度学习,目标检测,视频检测等知识综合性较强的文章,以小编现在的水平很难融汇贯通,所以说作

    2024年02月02日
    浏览(8)
  • OSPF(Open Shortest Path First,开放最短链路优先)

    OSPF(Open Shortest Path First,开放最短链路优先)

    🚀RIP(Routing Information Protocol,路由信息协议) 🚀EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议) 🚀OSPF的特征、术语、路由器类型、LSA类型、区域类型 **OSPF是一个内部网关路由协议,使用链路状态而不是距离矢量进行路径选择。OSPF传播LSA (链路状态通告

    2023年04月13日
    浏览(7)
  • 设计模式:开放-封闭原则(Open-Closed Principle,OCP)介绍

    开放-封闭原则(Open-Closed Principle,OCP)是面向对象设计原则之一,它指导我们编写可扩展和易维护的代码。该原则的核心思想是: 软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。 也就是说, 我们应该通过扩展现有代码来实现新功能,而不是直接修改现有代码

    2024年04月28日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包