论文笔记(五) C-MIL: Continuation Multiple Instance Learning for Weakly Supervised Object Detection

血红的双手。 提交于 2020-01-28 03:08:35

论文笔记(五) C-MIL: Continuation Multiple Instance Learning for Weakly Supervised Object Detection

这是cvpr2019的oral,还是一篇基于弱监督的目标检测论文。
关于弱监督目标检测的定义在上一篇笔记中已经讲过了 传送门 。与上一篇论文中要缓解的问题一样,即弱监督的损失局部极小问题,但是这篇论文的处理方法更为理论化,而不是对模型架构进行调整。

introduction

问题定义

BB表示图片的集合,BiB_i表示第ii张图片。y=1,1y={1, -1}yiyy_i\in y表示BiB_i中是否包含样本。j1,2,...,Nj\in {1,2,...,N},N表示目标的数量Bi,jB_{i,j}yi,jy_{i,j}表示图片BiB_i中的目标和目标的标签,ww表示网络所需要训练的参数。

局部极小问题

在上一篇论文中是从模型架构的角度来缓解这个问题,所以一笔带过了。而在这篇论文中,作者是从优化的角度来缓解此问题。
MIL网络中,一般分为两部分,即一个选择器和一个检测器,选择器负责将所有候选框分为正样本和负样本,是一个二分类问题,损失函数采用的是hinge loss
Ff(B,w)=max(0,1yimaxif(Bi,j,wf))F_f(B,w)=\max(0, 1-y_i\max_if(B_{i,j},w_f))
检测器负责对所有正样本的类别进行分类,其损失函数为交叉熵损失:
Fg(Bi,Bi,j,wg)=zjδz,yi,jloggz(Bi,j,wg)F_g(B_i,B_{i,j^*},w_g)=-\sum_z \sum_j \delta_{z,y_{i,j}}log g_z(B_{i,j},w_g)
可以看到,当yi=1y_i=-1时,选择器的损失函数为凸函数,而当yi=1y_i=1时是非凸的,所以就导致了在训练正样本时会陷入一个局部的极小值。笼统的来说,选择器会选择物体的一部分(比如猫的头)就作为该目标的location,而不是整个物体(如下图所示)。
在这里插入图片描述

平滑和延续方法

平滑(smoothing)是一种常见的优化方法,其目的时让优化目标的变化不那么陡峭。
延续方法(continuation)是一种思想,就是面对复杂而难以优化的问题时,把其分为若干个易于优化的子问题进行求解

Contribution

通过前面的铺垫,后面就轻松很多了
本文的主要贡献有三个:
1.提出了一个新奇的C-MIL方法,用一系列的平滑损失函数来近似原始损失函数,缓解多实例学习中的非凸性问题
2.为目标子集的分割提出了一种参数策略,并于深度神经网络结合来激活目标的全部范围。
3.sota

C-MIL方法

由上可知,局部极小的根源在于选择器损失函数的非凸性,那么怎么优化此损失函数来缓解该问题呢?
作者通过将每张图片中的实例划分为子集来处理其非凸性和平滑性。具体做法:
由前面的定义可得,我们要优化的目标为权重ww

w=argminwF(B,w)w=\arg \min_w F(B,w)

其中F(B,w)F(B,w)为模型总损失,定义一系列λ,0=λ0<λ1<...<λT=1\lambda, 0=\lambda_0<\lambda_1<...<\lambda_T=1,在C-MIL中将该损失函数从(w0,0)(w^0,0)(w,1)(w^*,1)不断更新,刚开始当λ=0\lambda=0时优化目标为w0w^0,其最终的优化目标就为:

w=argminwF(B,w,λ)=argminwf,wgiFf(Bi,Bi.J(λ),wf)+Fg(Bi,Bi,J(λ),wg)w^*=\arg \min_w F(B,w,\lambda)=\arg \min_{w_f,w_g}\sum_i F_f(B_i,B_{i.J(\lambda)},w_f)+F_g(B_i,B_{i,J(\lambda)},w_g)

其中Bi,J(λ)B_{i,J(\lambda)}取决于λ\lambda,代表了目标的子集。
在这里插入图片描述
那么怎么根据λ\lambda来分割子集呢?

子集划分策略

本文中的子集有如下特征:
1.空间相关,即彼此重叠且交并比够大
2.类别相关,即拥有相似的类别分数
所以有如下子集划分策略:
1.选择得分最高但是还未属于任何一个实例子集的实例建立一个新的实例子集;
2.将哪些与上述得分最高的实例交并比大于等于λ\lambda的实例归入该实例子集
重复以上两个步骤以获得每一次迭代的实例子集。
由此可知,当λ=0\lambda=0时,只有一个实例子集且该子集包含所有实例;当λ=1\lambda=1时,每个实例都是一个子集,该损失函数即为不进行延续处理的损失函数。
并且每个实例子集的分数定义为:
f(Bi,J(λ))=1Bi,J(λ)jf(Bi,j,wf)f(B_{i,J(\lambda)})=\dfrac{1}{|B_{i,J(\lambda)}|}\sum_j f(B_{i,j},w_f)
Bi,J(λ)|B_{i,J(\lambda)}|表示该子集中实例的个数。
模型框架图:

在这里插入图片描述该论文在框架上没有创新,主要是对损失函数上对其进行了平滑处理,缓解了其非凸性。

实验结果

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!