open-set recognition(OSR)开集识别

news2025/8/13 14:36:35

开集识别

闭集识别

​ 训练集中的类别和测试集中的类别是一致的,最常见的就是使用公开数据集进行训练,所有数据集中的图像的类别都是已知的没有未知种类的图像。传统的机器学习的算法在这些任务上已经取得了比较好的效果。
(训练集和测试集的类别是一致的)

开集识别描述

开集识别是一个在现实世界中最常见的问题,但是这个问题只有你在真正实施项目的时候才会遇到,使用公开数据集是不会遇到这个问题的。

所谓的开集识别

白话说就是 在一个开放的数据集中进行识别,更为准确的说就是:测试集中含有训练集中没有的类别,而在使用测试集进行测试的时候,输入一张不属于训练集中已知类别的图像,由于Softmax的输出特性,模型有可能会将其以较高的置信度分为某一类,显然这是错误的。所以就产生了开集识别这个问题
(测试集中含有训练集中没有的类别)
开集识别旨在解决:输入一张已知种类的图像,输出具体的某个类别,输入一张未知种类的图像,输出为unknown,或者以较低的置信度输出。
在这里插入图片描述

开集识别举例

示例、猫狗识别模型,输入一张荷花或者大象的图像,模型可能会告诉你80%的概率为猫。
想要的结果:输入不为猫狗的图像,模型输出为未知类别,输入猫狗图像,模型输出对应具体的类别

开集识别学习路径

开始根据自己的遇到的情况进行查询,发现开放长尾识别问题中的开放问题就是目前自己遇到的问题,下面这张图很清晰的展示常见任务的划分标准,后续查询到了自己遇到的问题可以更为具体的归属为开集识别的问题,所以后续一直查询开集识别的一些问题,Google Youtube找到了一些资料,思路清晰了很多。

在这里插入图片描述

开集识别的思路

首先综述写道:现实生活中很常见开集识别的场景,但是收集所有的场景图像是不现实的,所以需要开集识别问题的研究,并且开集识别OSR和zero-shot, one-shot (few-shot) recognition/learning techniques, classification with reject option 问题挺接近的,但是仔细对比可以发现,OSR更难,比如和 one-shot对比,OSR不仅要识别具体的种类还要对未知的类别进行拒绝,下图为几种任务之间的区别,主要就是根据数据的不同分布来制定不同的解决方案。
在这里插入图片描述
其中在开集识别中可以把数据分KKCS (known known classes)、 KUCS(known unknown classes)、 UKCS 、 UUCS四种,其中可以简单的认为 OSR就是想根据KKCS拒绝 UUCS.
其中大家可能在看KUCS 的时候比较有争议或者疑问,这部分数据首先归类为已知数据,但是没有具体的标签,比如我们要做一个猫狗识别的模型,我们还有另外的一些数据比如手机、大象等等,我们统一的将这些图像归为other类,也就是已知不是猫狗类,但是具体是哪一类没有标签

在这里插入图片描述
 OSR开集识别可以分为两种大的模型,基于判别模型和基于生成模型,其中基于判别模型的又可以分为基于 ML 和 基于 DNN ,其中基于ML的方式就是聚类类似或者使用1VSall的方式;基于DNN的方式就是使用卷积神经网络,其中又分为是否使用EVT方式。基于生成模型就是利用数据生成的手段进行处理,常见的一种方式就是生成虚假的未知类别图像对模型进行feed

下图展示了OSR领域目前不同方向以及进展
在这里插入图片描述

个人思考

就我目前的情况来说,本人更加偏向使用基于DNN的方式,一是卷积神经网络相对于传统机器学习模型拥有更强大的特征表达能力,二是生成模型生成的数据的可信度和用生成的数据feed模型得到的结果存疑,最好的数据还是真实的数据,只有数据较少且目前的解决方案无法解决目前的问题的时候才可以考虑生成方式(本人的研究方向非生成方向,所以不甚了解)。
所以后续的开集识别的解决方案还是基于卷积的操作
开集识别方案与广义零样本方案是一样的,这是说识别的目标是不同的。然后构建出的两种不同类别式的学习。

后续解决方案

* 基于 feature 的度量学习(聚类,改loss,改model等操作)
 * 基于较为经典的 Openmax 的实现方式(参照openmax提出的paper)

基于ML方式

  • SVM based
  • Sparse Representation based (待展开)
  • Distance based (待展开)
  • Margin Distribution based

基于CNN的方式

前言:目前基于CNN方式的开集识别的方案最为经典的要数openmax方法,但是目前所能查到的资料对openmax解读的资料实在是太少,所以这里通过对openmax的实现过程进行讲解以达到理解的目的

以下是对个人的理解和对问题的解读

softmax是分类网络中最常见的最后一层的激活函数,用于概率值的生成,但是之前的文章说到过因为softmax的特性,导致不太适用于开集识别,所以这篇文章中提到了openmax,其可以认为是softmax的一个替代,但是在模型训练后的进行的处理,不可以简单的认为是创建了一个新的layer。由于整个文章主要就是提出openmax,所以整篇文章都是在对openmax的可行性做解释,接下来暂时不对整个文章做处理,只是对openmax以及其实现进行说明:
 (Softmax用于概率值生成)

Openmax是什么

openmax是通过对softmax前一层特征的处理,也就是dense层的处理(这里的dense层不加任何的激活函数,和激活函数是分开的两层

具体实现

过看文章和看这些伪代码,能够大概知道openmax的计算原理,但是具体代码实现的时候面对这么多的参数,可能有的参数不知道如何计算得到,所以下面就用白话对该过程进行一个讲解。
Al1: 进行EVT拟合:
在这里插入图片描述
Al2: 进行Openmax的计算
在这里插入图片描述
白化opennax的实现:
下面是具体处理和计算的流程:只计算并保留所有预测样本正确样本(预测错误(预测值和真实label不符)输出的舍弃)的特征值(特征值的长度就是类别的长度,比如最后的类别数量为3,那么这个特征就是长度为3的向量,而不是之前一层的向量),求出所有预测正确样本的向量,根据不同的类别(真实label)将这些向量对应分开,然后分别计算每个类别对应向量的均值作为该类别的中心(可认为类别的中心点,和聚类的中心点类似)。然后分别计算每个类别中每个样本对应向量和其类别中心的距离,然后对这些距离进行排序,针对排序后的几个尾部极大值进行极大值理论分析,这些极大值的分布符合weibull分布,所以使用weibull分布(libmr中的fithigh方法)来拟合这些极大的距离,得到一个拟合分布的模型,这时候基本上已经完成了上述的Algrithms 1。
 当我们来了一个新的测试图像的时候,这时候输入模型,先得到其对应的dense向量(softmax的前一层的),然后针对该向量分别针对每个类别计算与其之间的距离(共得到N(类别数量)个距离),然后针对上述得到的每个距离分别使用每个类别对应的拟合模型对其进行预测,最后会分别得到一个分数FitScores,这个分数就是指得是该测试图像特征值归属于其对应类别的的概率,所以一共是有N个分数的。然后根据该图像的最终输出(此处为softmax的输出),根据该概率分数的输出继进行排序,然后计算w的值(该值的计算就是根据采用tail的个数(即阿尔法的值)来计算的,比较简单就是一个固定的式子)

f o r , i = 1 , ⋯ α , w = 1 − F i t S c o r e s × ( α − i ) α for,i = 1,\cdots \alpha ,w = 1 - FitScores \times\frac{ (\alpha - i) }{\alpha} fori=1,α,w=1FitScores×α(αi)

然后将该向量分别针对每个类别计算与其之间的距离与上述得到的 W W W相乘,后续在进行类似Softamx操作,最终得到两个分数,一个是openmax后的分数,一个是unknown的分数。注意,这里得到的openmax的类别比Softmax类别多一个类别,也就是unknown的类别。
作者想要得到的结果是:如果输入时已知类别,那么openmax的输出是已知的具体某个类别,如果测试时输入的为未知类别,那么最终的输出就是unknow.这也i就是开集识别最终想要得到的结果,根据作者在minist数据集上的测试结果感觉还可以,使用汉字和孟加拉字母的话可以正确的识别为未知类。
 该文章中很多的配图都是为了说明其设计的初衷和有效性,再看这篇文章的时候还有很多的理论不是很理解,比如weibull分布**,EVT理论等等,所以为了更好的理解和复现**就找了很多的资料,以此记录。

极值理论(EVT)

每过一段时间**,小概率时间就会发生**,比如巨大的台风,或者跳高记录被打破。但是到底这样的事件有多极端?极值理论可以回答这个问题。利用以往的记录,比如说500年来的洪水记录,极值理论就可以预测将来发生更大洪水的可能性

极值理论关注风险损失分布的尾部特征,通常用来分析概率罕见的事件,它可以依靠少量样本数据,在总体分布未知的情况下,得到总体分布中极值的变化情况,具有超越样本数据的估计能力。

相关定义

  • 开放空间风险
    在这里插入图片描述

  • 开放集识别问题

  • 在这里插入图片描述

开集识别的解决方案

在这里插入图片描述

总结

先大致了解以下OSR识别问题,然后做技术用到的时候找相关论文再去研究一下,全部将其搞定都行啦的回事与打算。
先大致了解以下开集识别是干什么的,然后再慢慢的开始研究OSR模型,用到啥,全部将其搞定都行啦的理由与打算。

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

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

相关文章

简述供应商管理SRM系统

简道云SRM管理系统供应商关系管理(SRM系统),是企业可以用来对供应商的优势和能力进行系统的、全行业范围的评估,涉及企业整体的商业战略,供应商寻源、采购审批、比价、招投标管理、订单执行、库存可视化管理、财务支付审批对账、供应商绩效评…

java--并发

并发1.java的线程状态(1)sleep wait的区别和联系2.线程池的核心参数3.lock 和 synchronized4.volatile能否保证线程安全5.java中的悲观锁和乐观锁6.Hashtable和ConcurrentHashMap7.对ThreadLocal1.java的线程状态 new 新建:普通的类&#xf…

流媒体技术基础-流媒体服务与框架

一、开源流媒体服务器 38款 流媒体服务器开源软件 主流的开源流媒体服务器及框架如下: 1.Live555 [RTSP拉流] 一个为流媒体提供解决方案的跨平台的C开源项目,它实现了对标准流媒体传输协议如 RTP/RTCP、RTSP、SIP等的支持。 实现了对多种音视频编码格…

【毕业设计】机器学习的溢油特征提取与识别

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

城市内涝地埋式积水监测系统解决方案

一、方案背景 近 20 年来,我国城市化进程加快,城市地区由于人口密集,物资财产密度不断加大等特点,高强度暴雨积水形成的洪涝灾害对城市化地区产生的威肋和带来的狠失愈来愈大。由于城市的不断扩建,使工业区、商业区和居…

dos2unix和unix2dos

一 单次转换 用于转换Windows和UNIX的换行符&#xff0c;通常在windows系统中开发的源码文件&#xff0c;换行符是\r\n,二linux中的文件的换行符是\n。如果不转行可能会出错。在windows记事本写一个hello world源码. #include <stdio.h>int main(void) {printf("h…

Jmeter快速入门

Jmeter依赖于JDK&#xff0c;所以必须确保当前计算机上已经安装了JDK&#xff0c;并且配置了环境变量。 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具&#xff0c;用于对软件做压力测试。 JMeter 最初被设计用于 Web 应用测试&#xff0c;但后来扩展到了其他测试…

【Python百日进阶-WEB开发-冲進Flask】Day182 - Flask蓝图与模板继承

文章目录一、day02项目环境和结构搭建1.1 项目根目录创建apps包1.2 项目模板目录templates创建user子目录二、后端知识要点2.1 蓝图Blueprint基础知识2.1.1 为什么需要蓝图2.1.2 什么是蓝图2.1.3 蓝图的属性2.1.4 蓝图使用的步骤2.1.4.1 创建一个蓝图的包,例如user,并在view.py…

蓝牙耳机什么牌子音质最好?音质超好的蓝牙耳机推荐

蓝牙耳机在便捷性上&#xff0c;没有线材的蓝牙耳机&#xff0c;日常通勤、运动、平时走路佩戴&#xff0c;那种因为无线而带来的无缠绕感觉都是有线耳机无法媲美的&#xff0c;但是音质很多人都会觉得有线的好&#xff0c;由于近几年耳机市场的不断进步&#xff0c;很多蓝牙耳…

《痞子衡嵌入式半月刊》 第 67 期

痞子衡嵌入式半月刊&#xff1a; 第 67 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻&#xff0c;农历年分二十四节气&#xff0c;希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly)&#xff0c;欢迎提交 issue&#xff0c…

8-Arm PEG-Azide,8-Arm PEG-N3,八臂-聚乙二醇-叠氮多臂PEG衍生物供应

1、名称 英文&#xff1a;8-Arm PEG-Azide&#xff0c;8-Arm PEG-N3 中文&#xff1a;八臂-聚乙二醇-叠氮 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Azide PEG Multi-arm PEGs 4、分子量&#xff1a;可定制&#xff0c;八臂-peg 5k-叠氮、八臂PEG 2k叠氮、叠氮-…

卷积神经网络

Datawhale开源学习&#xff0c;机器学习课程&#xff0c;项目地址&#xff1a;https://github.com/datawhalechina/leeml-notes Convolutional Neural Network 本节内容学习了什么是CNN卷积神经网络&#xff0c;相比于全连接网络&#xff0c;它每次只提取部分内容作为整个网络…

专利如果申请?成功率如何提高?

问题一&#xff1a;专利如何申请&#xff1f;​ 1、整理技术方案&#xff0c;整理一套属于你的创新技术方案&#xff1b; 2、专利检索&#xff0c;确保你的创新没有被别人申请过&#xff1b; 3、撰写专利申请书&#xff0c;为了快速审查&#xff0c;做好长期专利布局&#x…

珈创生物上市再次失败:先后折戟科创板、创业板,郑从义为董事长

第二次冲刺上市之旅&#xff0c;珈创生物再次以失败而告终。 11月23日&#xff0c;深圳证券交易所创业板披露的信息显示&#xff0c;因武汉珈创生物技术股份有限公司&#xff08;即“珈创生物”&#xff09;提交了撤回首次公开发行股票并在创业板上市申请文件的申请&#xff0…

医院微信预约挂号小程序开发_分享医院做预约挂号小程序的可以实现什么功能

小程序有 60入口&#xff0c;在微信生态链中无处不在&#xff0c;只要客户是微信用户&#xff0c;他们可以根据搜索、二维码朋友圈找到你的小程序。哪怕是医药行业&#xff0c;也可以做个医院小程序来提高预约和经营运转的效率&#xff0c;解放人力。 1.医院微信预约小程序怎么…

ubuntu下个人觉得必备,好用的应用软件

ubuntu下个人觉得必备&#xff0c;好用的应用软件 本文基于ubuntu20.04 进行讨论。 之前用了很久ubuntu14.04&#xff0c; 因为apt安装依赖的问题&#xff0c;导致系统重装&#xff0c;才被动升级到了20.04. 结果升级后发现了新大陆。 很多原来只能在windows下使用的软件&…

【多目标进化优化】 Pareto 最优解集的构造方法

1. 构造 Pareto 最优解的简单方法 1.1 Deb 的非支配排序方法 \quad\quad设进化群体为 PPP&#xff0c;同时设置一个构造集 P′PP′。算法开始时将第一个个体放人构造集 P′PP′ 中&#xff0c;依次将进化群体 PPP 中的个体 p&#xff08;p∉P′&#xff09;p&#xff08;p∉P&…

护航“东数西算”工程 | 安全狗云原生安全能力亮相2022南京软博会

11月23日&#xff0c;2022中国&#xff08;南京&#xff09;国际软件产品和信息服务交易博览会&#xff08;简称“2022南京软博会”&#xff09;下的“东数西算”助力数字经济协同发展论坛在南京国际博览中心顺利举办。安全狗也收到邀请出席此次活动。 据悉&#xff0c;此次活…

Flink 结合 HyperScan 问题记录

最近工作需要对公司业务大规模日志进行处理&#xff0c;需要进行通过正则预先匹配出符合条件的日子&#xff0c;经过调研Hyperscan符合预期。 如何提高大规模正则匹配的效能_360技术的博客-CSDN博客 Hyperscan是一款来自于Intel的高性能的正则表达式匹配库。它是基于X86平台以P…

SystemFunction032函数的免杀研究

什么是SystemFunction032函数&#xff1f; 虽然Benjamin Delphi在2013年就已经在Mimikatz中使用了它&#xff0c;但由于我之前对它的研究并不多&#xff0c;才有了下文。 这个函数能够通过RC4加密方式对内存区域进行加密/解密。例如&#xff0c;ReactOS项目的代码中显示&…