OpenGAN:基于开放数据生成的开放集识别

简介

简介:这次学习的OpenGAN主要学习一个思路,跳出传统GAN对于判断真假的识别到判断是已知种类还是未知种类。重点内容不在于代码而是思路,会简要给出一个设计的代码。

论文题目:OpenGAN: Open-Set Recognition via Open Data Generation(基于开放数据生成的开放集识别)

期刊:IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE(if=20.8,超级Top)

摘要:现实世界的机器学习系统需要分析可能与训练数据不同的测试数据。 在K-way分类中,这被清晰地表述为开集识别,其核心是区分K个闭集类之外的开集数据的能力。 开集判别的两个概念是:1)通过利用一些离群数据作为开集判别学习开-闭二元判别器; 2)利用GAN的判别器作为开集似然函数,对闭集数据分布进行无监督学习。 然而,由于对训练异常值的过度拟合,前者对各种开放测试数据的泛化效果较差,而训练异常值不太可能详尽地跨越开放世界。 后者不能很好地工作,可能是由于gan的训练不稳定。 在上述的激励下,我们提出了OpenGAN,它通过将每种方法与几个技术见解相结合来解决每种方法的局限性。 首先,我们证明了在一些真实的离群数据上精心选择的gan鉴别器已经达到了最先进的水平。 其次,我们用对抗合成的“假”数据增强真实开放训练样本的可用集。 第三,也是最重要的,我们在封闭世界K-way网络计算的特征上建立了鉴别器。 这使得OpenGAN可以通过建立在现有K-way网络之上的轻量级鉴别器头来实现。 大量的实验表明,OpenGAN显著优于先前的开集方法。

问题背景的具体例子

想象你要训练一个自动驾驶汽车的视觉系统:

  • 训练数据:汽车、行人、红绿灯、建筑物等19个类别
  • 现实问题:路上突然出现婴儿车、街头小摊等训练时没见过的物体
  • 危险后果:系统可能把婴儿车错误识别为"摩托车",导致不当的避让策略

OpenGAN的具体操作流程

第一步:准备基础设施

1. 已有一个训练好的K类分类器(比如识别19种交通场景物体)
2. 从这个分类器的倒数第二层提取特征(不是直接用原始图片)
3. 收集少量"其他"类别的数据作为已知的异常样本

为什么用特征而不用像素?

  • 原始图片:1024×2048×3 = 600万维度,太复杂
  • 提取的特征:可能只有512维,包含了高级语义信息
  • 就像人类识别物体时关注的是形状、纹理,而不是每个像素点

第二步:构建OpenGAN架构

OpenGAN包含两个核心组件:

判别器D(Discriminator)

  • 输入:特征向量
  • 输出:该特征属于"已知类别"的概率
  • 作用:区分"已知"vs"未知"

生成器G(Generator)

  • 输入:随机噪声
  • 输出:假的"未知类别"特征
  • 作用:生成更多样的"未知"样本来训练判别器

第三步:对抗训练过程

这是核心!OpenGAN使用三种数据同时训练:

# 伪代码展示训练过程
for epoch in training:# 1. 真实的已知类别数据real_closed_features = extract_features(known_class_images)# 2. 真实的未知类别数据(少量)real_open_features = extract_features(outlier_images)# 3. 生成器创造的假未知数据noise = random_noise()fake_open_features = Generator(noise)# 训练判别器:让它学会区分已知和未知d_loss = - log(D(real_closed_features))           # 已知类别应该得高分- λ_o * log(1-D(real_open_features))     # 真实未知应该得低分  - λ_G * log(1-D(fake_open_features))     # 生成未知应该得低分# 训练生成器:让它生成能骗过判别器的"未知"特征g_loss = - log(1-D(Generator(noise)))  # 生成的特征要能骗过判别器

关键参数解释

  • λ_o:控制真实异常数据的重要性
  • λ_G:控制生成假数据的重要性
  • λ_o=0时,就是OpenGAN-0(不使用真实异常数据)

第四步:模型选择的巧妙方法

传统GAN的问题

  • 训练到最后,生成器太强了,判别器分不出真假
  • 判别器失去了区分"已知"和"未知"的能力

OpenGAN的解决方案

  1. 在训练过程中保存多个判别器快照
  2. 用少量真实的异常数据作为验证集
  3. 选择在验证集上表现最好的判别器
# 模型选择过程
best_auroc = 0
best_discriminator = Nonefor checkpoint in training_checkpoints:discriminator = load_checkpoint(checkpoint)auroc = evaluate_on_validation_set(discriminator, validation_outliers)if auroc > best_auroc:best_auroc = aurocbest_discriminator = discriminator# 使用最佳判别器进行最终预测

第五步:实际应用

在测试时

def predict_open_set(test_image):# 1. 提取特征features = pretrained_classifier.extract_features(test_image)# 2. 用OpenGAN判别器打分confidence = best_discriminator(features)# 3. 做决策if confidence > threshold:# 进行正常的K类分类class_prediction = pretrained_classifier(test_image)return class_predictionelse:return "UNKNOWN_OBJECT"  # 未知物体

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

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

相关文章

随机游动算法解决kSAT问题

input:n个变量的k-CNF公式 ouput:该公式的一组满足赋值或宣布没有满足赋值 算法步骤: 随机均匀地初始化赋值 a ∈ { 0 , 1 } n a\in\{0,1\}^n a∈{0,1}n.重复t次(后面会估计这个t): a. 如果在当前赋值下…

企业上线ESOP电子作业指导书系统实现车间无纸化的投入收益数据综合分析

企业上线ESOP电子作业指导书系统实现车间无纸化的投入收益数据综合分析 一、成本节约:无纸化直接降低运营成本 纸张与耗材费用锐减 o 杭州科创致远案例:某汽配企业引入无纸化系统后,年节省纸张耗材费用超50万元。通过电子化替代传统纸质文档…

高并发抽奖系统优化方案

引子 最近接触了一个抽奖的项目,由于用户量比较大,而且第三方提供的认证接口并发量有限,为了保证服务的高可用性,所以对高并限制发有一定的要求。经过一系列研究和讨论,做出了以下一些优化方案。 需求分析 根据用户量…

STM32八股【10】-----stm32启动流程

启动流程 1.上电复位 2.系统初始化 3.跳转到 main 函数 启动入口: cpu被清空,程序从0x00000000开始运行0x00000000存放的是reset_handler的入口地址0x00000000的实际位置会变,根据不同的启动模式决定启动模式分为: flash启动&a…

LLMTIME: 不用微调!如何用大模型玩转时间序列预测?

今天是端午节,端午安康!值此传统佳节之际,我想和大家分享一篇关于基于大语言模型的时序预测算法——LLMTIME。随着人工智能技术的飞速发展,利用大型预训练语言模型(LLM)进行时间序列预测成为一个新兴且极具…

在VirtualBox中打造高效开发环境:CentOS虚拟机安装与优化指南

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、为何选择VirtualBox CentOS组合? 对于程序员而言,构建隔离的开发测试环境是刚需。VirtualBox凭借其跨平台支持(W…

LeeCode 98. 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 提示: 树中节…

Python简易音乐播放器开发教程

📚 前言 编程基础第一期《12-30》–音乐播放器是日常生活中常用的应用程序,使用Python和pygame库可以轻松实现一个简易的音乐播放器。本教程将详细讲解如何开发一个具有基本功能的音乐播放器,并解析其中涉及的Python编程知识点。 &#x1f6e…

ssh连接断开,保持任务后台执行——tmux

目录 **核心用途****基础使用方法**1. **安装 tmux**2. **启动新会话**3. **常用快捷键(需先按 Ctrlb 前缀)**4. **会话管理命令**5. **窗格操作进阶** **典型工作流****注意事项****配置文件(~/.tmux.conf)** tmux( …

3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云

目录 3D Gaussian splatting 01: 环境搭建3D Gaussian splatting 02: 快速评估3D Gaussian splatting 03: 用户数据训练和结果查看3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云3D Gaussian splatting 05: 代码阅读-训练整体流程3D Gaussian splatting 06: 代码…

每日c/c++题 备战蓝桥杯(P1204 [USACO1.2] 挤牛奶 Milking Cows)

P1204 [USACO1.2] 挤牛奶 Milking Cows - 详解与代码实现 一、题目背景 三个农民每天清晨[……](简要介绍题目背景,与官网描述类似) 二、问题分析 输入要求 :读取 N 个农民的挤奶时间区间,计算两个值:最…

保持本地 Git 项目副本与远程仓库完全同步

核心目标: 保持本地 Git 项目副本与 GitHub 远程仓库完全同步。 关键方法: 定期执行 git pull 命令。 操作步骤: 进入项目目录: 在终端/命令行中,使用 cd 命令切换到你的项目文件夹。执行拉取命令: 运行…

Flutter 4.x 版本 webview_flutter 嵌套H5

踩坑早期版本 使用 WebView 代码如下 import package:flutter/material.dart; import package:webview_flutter/webview_flutter.dart;class HomePage extends StatelessWidget {const HomePage({super.key});overrideWidget build(BuildContext context) {return Scaffold(ap…

rtpinsertsound:语音注入攻击!全参数详细教程!Kali Linux教程!

简介 2006年8月至9月期间,我们创建了一个用于将音频插入指定音频(即RTP)流的工具。该工具名为rtpinsertsound。 该工具已在Linux Red Hat Fedora Core 4平台(奔腾IV,2.5 GHz)上进行了测试,但预…

跑步前热身动作

跑前热身的核心目标是升高体温、激活肌肉、预防损伤 ,同时通过动态动作提升运动表现。热身(步骤关节→肌肉→心肺)和针对性动作(如抱膝抬腿)能有效降低受伤风险,建议每次跑步前严格执行。 推荐跑前热身动作…

GIT命令行的一些常规操作

放弃修改 git checkout . 修改commit信息 git commit --amend 撤销上次本地commit 1、通过git log查看上次提交的哈希值 2、git reset --soft 哈希值 分支 1.创建本地分支 git branch 分支名 2.切换本地分支 git checkout mybranch; 3.创建一个新分支并…

RAGFlow从理论到实战的检索增强生成指南

目录 前言 一、RAGFlow是什么?为何需要它? 二、RAGFlow技术架构拆解 三、实战指南:从0到1搭建RAGFlow系统 步骤1:环境准备 步骤2:数据接入 步骤3:检索与生成 四、优化技巧:让RAGFlow更精…

软件工程方法论:在确定性与不确定性的永恒之舞中寻找平衡

当我们谈论“软件工程”时,“工程”二字总暗示着某种如桥梁建造般的精确与可控。然而,软件的本质却根植于人类思维的复杂性与需求的流变之中。软件工程方法论的发展史,并非线性进步的凯歌,而是一部在确定性的渴望与不确定性的现实…

Python打卡训练营Day41

DAY 41 简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 →…

开源版 PyMOL 如何绘制 Galidesivir 分子结构 ?

参阅:开源版PyMol安装保姆级教程 百度网盘下载 提取码:csub pip show pymol 简介: PyMOL是一个Python增强的分子图形工具。它擅长蛋白质、小分子、密度、表面和轨迹的3D可视化。它还包括分子编辑、射线追踪和动画。 先从 www.python.org 下载 python-…