(二)开集识别学习 open-set recognition(OSR)

前言:在开集识别的学习中,也是进行的一步步的摸索,一开始发现模型上线后变现不是很好,后来找到原因就是因为线上的图像太复杂了,

没有开集识别的模型是不可靠的,所以就进行了开集识别,接下来记录下学习的记录供大家一起学习,也供自己后续查阅


1、开集识别学习路径

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

2、开集识别的思路(待完善)

以下思路来自:开集识别的综述

 首先综述写道:现实生活中很常见开集识别的场景,但是收集所有的场景图像是不现实的,所以需要开集识别问题的研究,并且开集识别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类,也就是已知不是猫狗类,但是具体是哪一类没有标签。
(二)开集识别学习 open-set recognition(OSR)_第2张图片

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

下面这张图展示了目前OSR领域的不同方向以及进展
(二)开集识别学习 open-set recognition(OSR)_第3张图片
目前这篇文章对目前开集识别的研究了一个综述(这篇文章是2020的survey),所以还是非常有参考意义的。

个人思考:

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

后续的解决方案:(后续博客中持续更新)

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

你可能感兴趣的:(深度学习可解释性)