【Open Set Recognition】Open Set Learning with Counterfactual Images in ECCV 2018 个人理解

文章介绍了在ECCV2018会议上提出的OpenSetRecognition方法,通过Encoder-DecoderGAN生成反事实图像,使模型能识别已知类并检测未知类。模型训练包括两部分:传统分类器训练和加入反事实样本的新分类器训练,旨在提高对未知类样本的识别能力。

一、简介

题目: Open Set Learning with Counterfactual Images
会议: ECCV 2018
任务: 开放集识别(Open Set Recognition, OSR),要求模型能够正确识别训练期间见过的类(已知类),同时能检测或拒绝没见过的类(未知类)。换句话说就是将测试集中属于已知类的样本正确分类,将属于未知类的样本(可能来自多个未知类)统一归为一个额外的类。
Idea:
(1)使用编解码生成对抗网络(Encoder-Decoder Generative Adversarial Network, Encoder-Decoder GAN)生成一些反事实样本(Counterfactual Images)使它们处于已知类和未知类的边界之间,这些反事实样本根据已知类生成,与已知类相似,但不属于已知类;
(2)使用训练集样本(来自K个已知类)和这些反事实样本(作为第K+1类)训练分类器,使分类器具有OSR能力。

摘要图
图中, ∙ \color{green}\bullet 为已知类样本, × \color{red}\bm\times ×为反事实样本, + \color{blue}\bm+ +为未知类样本。

二、详情

1. 分类器训练

传统的分类器训练操作,以交叉熵(Cross-Entropy, CE)损失在训练集上拟合卷积神经网络(Convolutional Neural Network, CNN)分类器,记为 C K C_K CK,其中 K K K是已知类的类别数量。

2. 生成模型训练

Encoder-Decoder GAN模型主要包括三个组件:编码器 E ( x ) E(x) E(x)、生成器 G ( z ) G(z) G(z)、判别器 D D D

判别器 D D D的目的是将真样本和生成的假样本区分开来,以如下带梯度惩罚的Wasserstein critic为损失:

其中, D D D识别出 G ( E ( x ) ) G(E(x)) G(E(x))为假时 D ( G ( E ( x ) ) ) = 0 D(G(E(x)))=0 D(G(E(x)))=0,所以希望 D ( G ( E ( x ) ) ) D(G(E(x))) D(G(E(x)))尽可能小;D识别出 x x x为真时 D ( x ) = 1 D(x)=1 D(x)=1,所以希望 − D ( x ) -D(x) D(x)尽可能小; P ( D ) = λ ( ∥ ∇ x ^ D ( x ^ ) ∥ 2 − 1 ) P(D)=\lambda(\|\nabla_{\hat{x}}D(\hat{x})\|_2-1) P(D)=λ(x^D(x^)21),即希望 ∥ ∇ x ^ D ( x ^ ) ∥ 2 \|\nabla_{\hat{x}}D(\hat{x})\|_2 x^D(x^)2尽可能接近1,它被用来解决GAN中的参数二值化和训练难调节两大问题。

编码器和生成器(或称解码器)的目的是使生成的假样本尽可能接近真实样本, E ( x ) E(x) E(x) G ( z ) G(z) G(z)被联合训练,损失如下:

其中, ∥ x − G ( E ( x ) ) ∥ 1 \|x-G(E(x))\|_1 xG(E(x))1表示生成样本 G ( E ( x ) ) G(E(x)) G(E(x))和真实样本 x x x的接近程度,希望其尽可能小; D D D识别出 G ( E ( x ) ) G(E(x)) G(E(x))为假时 D ( G ( E ( x ) ) ) = 0 D(G(E(x)))=0 D(G(E(x)))=0,否则为 1 1 1,为让 D D D信以为真,则希望 − D ( G ( E ( x ) ) ) -D(G(E(x))) D(G(E(x)))尽可能小。

3. 反事实样本生成

该部分的目的是生成反事实样本,使其与真实(已知类)样本相似却不属于已知类。

在介绍其方法之前需明确一个假设:如果一个样本喂入分类器后,其SoftMax输出中最大的概率值(或称置信度)越低,则该样本越可能属于未知类

于是,在使用训练好的Encoder-Decoder GAN模型生成反事实样本时,可优化如下目标函数:

需要注意的是,这是优化 z z z的过程, E ( x ) E(x) E(x) G ( z ) G(z) G(z)保持不变。其中,第一项的目的是使 z z z不要发生过大的变化,由此保证所生成的反事实样本与真实样本相似;第二项的目的是使训练好的分类器 C K C_K CK的SoftMax输出中最高的概率值尽可能低,即希望在已知类上训练好的分类器 C K C_K CK对生成的反事实样本 G ( z ) G(z) G(z)的置信尽可能低,由此保证所生成的反事实样本不属于已知类。

4. 新的分类器训练

传统的分类器训练操作,与1. 分类器训练不同的是,这里使用原训练集样本(来自K个已知类)和在3. 反事实样本生成中生成的反事实样本(作为第K+1类)训练分类器。仍以CE为损失,拟合出的新的分类器记为 C K + 1 C_{K+1} CK+1

这样当测试集中出现训练期间没见过的类的样本时, C K + 1 C_{K+1} CK+1会分配更大的值给SoftMax中第 K  ⁣ +  ⁣ 1 K\!+\!1 K+1个值,由此实现OSR。

open Set recognition(OSR,开集识别)和out of distribution(OOD,分布外检测)都是处理未知类别样本的技术,但二者有明显区别。 在任务目标上,开集识别旨在识别已知类别(KKCs),同时将未知类别(UUCs)样本检测出来,并拒绝分类到已知类别中,重点在于已知类别分类和未知类别区分;而分布外检测更关注检测出与训练数据分布不同的样本,强调样本分布差异的检测,不局限于类别概念,只要样本分布和训练数据不同就视为分布外样本 [^1]。 从应用场景来说,开集识别常用于图像分类、人脸识别等领域,在图像分类中,模型需识别已知类别的图像,同时能将未知类别的图像识别为未知;分布外检测在自动驾驶、医疗诊断等安全关键领域应用广泛,自动驾驶中,检测出与训练场景分布不同的异常情况,如罕见的道路状况或物体,以保障行车安全 [^1]。 在技术方法方面,开集识别有多种经典方法,如OpenMax沿着其技术线探索开放集文本分类;深度开放分类器(DOC)用sigmoids的1 - vs - rest最后一层替换SoftMax层;竞争过完全输出层(COOL)神经网络避免在远离训练数据区域过度泛化;开放集识别的tWiSARD算法基于无权重神经网络的类距离计算等 [^4]。分布外检测常用基于密度估计、似然比检验等方法,通过判断样本在训练数据分布中的概率密度或似然比,确定是否为分布外样本。 ```python # 简单示意开集识别判断函数 def open_set_recognition(sample, known_classes): # 这里只是简单示意,实际需要复杂模型和算法 if sample in known_classes: return "Known Class" else: return "Unknown Class" # 简单示意分布外检测判断函数 def out_of_distribution_detection(sample, training_distribution): # 这里只是简单示意,实际需要复杂模型和算法 if sample not in training_distribution: return "Out of Distribution" else: return "In Distribution" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fulin_Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值