来源:CVPR2019
下载链接:https://arxiv.org/abs/1902.09720
本文目的:为了减少图片中多标签标注的成本,提出了一种训练模型的方式:训练模型的样本使用标签没有标注完整的图片;
作者的贡献:
1)比较了多标签数据集的标注方法,作者的方法证明了使用部分标注的所有图片效果好于标注了所有标签的小数据集;
2)提出了一种scalable方法用于ConvNet去学习部分标签(使用了binary cross-entropy loss);
3)提出了一种预测丢失标签的方法,使用基于模型的课程学习预测丢失了的标签,并将其加入训练集。该方法提升了模型的预测能力,同时使用GNN去推理训练样本之间的内在关系;
3.Learning with Partial Labels
说明:C:the number of categories(所有的标签类别);N:the number of training examples(训练样本总数)
训练数据:,是第i个图片,
对于每一个样例i和c,分别代表的是标签存在(不存在和不清楚(unknown label));
3.1 对于partial labels的二值交叉熵(binary cross-entropy,BCE)
作者认为常规的BCE loss 使用类别数进行归一化, 在partial labeled数据反传时,梯度很小(这里不太理解)。所以提出了partial-BCE loss:
上式中:是已知标签的比例,g代表的是归一化函数,上式中忽略了不清楚的标签。在标准的BCE中,。
归一化函数g:
为了满足当所有数据都标注了全部标签时的计算,所以将partial loss设计成下面的样子:
上式中, 都是超参数,当alpa = 1,gama = -1,beita = 0时,函数的权值就与已知标注标签的比例成反比例(inversely proportional),作者在的限制条件下,进行了gama值的分析,如图2所示:
通过文章第四部分的分析,g的作用就等同于batch normalization。
3.2 使用GNN的多标签分类
作者将GNN用在ConvNet上,使用GNN用于多标签分类:
对于GNN网络结构,输入图像是一张图,V代表节点(nodes)集合,而代表边缘(edges)的集合。对于每一个节点:输入特征矢量为,在时间t时特征矢量的隐形表征(hidden representation)。表示与节点v邻近的节点;GNN网络的更新包括两步:信息更新(message update)和隐状态更新(hidden state)。信息更新步骤结合节点v接收到的信息进入单个信息矢量:
上式中,M代表的信息更新函数。在隐状态更新步骤中,在每个节点的隐状态的更新是基于,
上式中,F代表隐状态的更新函数。
GNN用于多标签分类:
对于多标签分类,每一个节点代表了一项内容(我的理解是C类) ,边缘(edges)代表了内容(每个类别)之间的联系。节点的隐状态使用ConvNet的输出进行初始化。
Message update function M:作者使用了以下的更新函数:
代表多层感知机(a multi-layer perceptron(MLP))。
Hidden state update function F:
上式中GRU代表gated recurrent unit(门循环单元),隐状态更新就是一句输入信息和先前的隐状态;
3.3 对于未知标签的预测
作者结合课程学习(a curriculum learning strategy)进行丢失label的预测,用于优化以下目标函数:
总体算法一:
作者分析了各种添加新标签的方法:
【a】Score thresh strategy. 通过分类的score(ConvNet),设定阈值,当W固定后,优化V源于:
上式中结果是第c类的第i个样本的特征矢量,得到预测的标签:
【b】Score proportion strategy。与【a】相似,唯一不同是,对于每一个mini-batch进行打分后,降序排列,保留
作为丢失的标签。
【c】 Predict only positive labels与【a】相似,但是只预测正样本,优化后的特征矢量v为:
【d】Ensemble score threshold strategy。该策略就是和【a】一样,但是作者使用了多个模型进行置信度打分,然后将所有置信度的均值作为最后的置信度score。当w固定时,优化v:
上式中是组合模型的score vector,最终的预测结果:
【e】Bayesian uncertainty strategy。作者使用贝叶斯不确定性估计内容-样例(category-example)对,由于easy pair会拥有很小的不确定性。当w固定时,优化v:
上式中就是第i个样例的内容c的贝叶斯不确定性,这种方法与【d】很相似,唯一的不同就是使用方差(variance)来代替均值。
4.实验
实验数据集:Pascal VOC 2007,MS COCO和NUS-WIDE。
度量方法:mean Average Precision(MAP),0-1 exact match,Macro-F1,Micro-F1,per-class precision,per-class recall,overall precision,overall recall。
补充信息:使用employ ResNet-WELDON作为分类的网络,主干网络是ResNet-101.深度学习框架是PyTorch。partial-BCE loss函数中的参数:
,预测missing labels,使用的贝叶斯不确定性策略。
4.1 what is the best strategy to annotation a dataset?
探索了标注数据集的三种策略:
Partial lables.所有图片都有标注,但是标签标注的不完整,每张图的标注标签不完全相同;
Complete image labels or dense labels:所有数据集合中只有小部分数据集进行了标注,标签标注完整。
Noisy labels:所有图片都进行了标签的完整标注,但是有一部分标签标注错误。
实验结果如图3所示:
通过图3得到的结论:
1)Partial lables训练的结果好于dense labels;原因:模型在Partial lables中训练时,可以“sees”更多的图片,所以拥有更好的泛化性能;
2)Partial lables和dense labels训练的结果好于Noisy labels:可以查看第一行的第二个图表的信息;
Noisy web labels:
作者通过多标签中的正标签去产生noisy dataset。然后得到的结果如表1:
通过table1.可以得出的结论:webly-supervised 数据集训练结果没有复杂场景/多标签图片训练结果好,因为webly-supervised 数据集中的noisy labels严重影响了泛化性能。
4.2 learning with partial labels
本节分析了标准BCE和partial-BCE,同时分析了GNN的重要性
通过表3可以得知,partial-BCE在label proportion值越小时,结果越好。通过Figure3同时也可以看出partial-BCE的效果优于BCE的效果;
GNN
研究GNN的效果,如图4所示:
通过图4MS COCO数据集可以看出,使用了GNN后每一个性能都得到提升。
表3 可以看出GNN的对于性能的影响。 同时这也说明了多标签类别之间的关系的重要性。
4.3 What is the best strategy to predict missing labels?
实验结果如Table2所示:
Table2也说明了整个在missing labels所实现的策略,各种方法的对比。当没有基于课程的策略进行2steps预测时,结果是最差的,同时也可以看出贝叶斯不确定性策略是表现最好,同时GNN也对结果影响较大。
4.4 Method analysis
分析partial-BCE的超参数,同时在MS COCO进行消融实验。
Partial-BSE analysis。
通过图5:
可以看出,当在标签比例在10%时,进行normalization 结果改变,可以发现当值为1(BCE)时,结果最差,当值在【3,50】中间波动时,map值都比值为1好。这说明均值化函数的结果是很具有鲁棒性和重要性的。
r值对map的影响:
当给定限制条件时:,结果如图6所示:
通过图6可以看出:r=-1,均值话结果与标签成反比时,效果最差。
Ablation study:
效果如图4所示:
通过table4:1)可以看出微调对于结果的影响;2) GNN和relabel对实验结果的影响;
5.Conclusion
Partial-BCE loss,GNN和relabeling对于本文结果很重要;
细节回想:
1)对于partial-BCE公式的理解:
作者是直接使用了多个类别的二分类,而预测使用的是sigmoid函数,loss使用的是标准的二值交叉熵,另外加了一个归一化函数g。回忆一下sigmod函数(参考:sigmoid二分类函数,softmax归一化多分类函数 损失函数_wzw12315的专栏-CSDN博客_分类函数):
sigmoid二分类函数:将得分结果转换为概率进行分类。输入x属于任意实数值,输出范围是0到1.
标准的BCE函数(二分类问题的交叉熵函数和多分类问题的交叉熵函数_fendon@l的博客-CSDN博客_交叉熵损失函数),对于样本(x,y)来讲,x为样本 y为对应的标签。在二分类问题中,其取值的集合可能为{0,1},我们假设某个样本的真实标签为yt,该样本的yt=1的概率为yp,则该样本的损失函数为:
作者在文中由于共有C个类别,所以对于每个类别进行了二分类的计算,然后进行了C类loss的加和平均,另外加入了归一化函数g,就出现了partial-BCE。若g=1,就是多个类别的标准二分类函数。
2.为什么提出了partial-BCE。
在对partial-BCE的理解上说明,partial-BCE与标准的BCE就是差一个归一化函数g,而g的加入是为了将loss值变大,变大loss值的原因是,由于很多目标标签的缺失,很多目标就没有参加loss值的计算,而整体分母C不变,会导致标准loss相较于lable全部标出情况下计算出的loss值小,所以回传的梯度就小,为了弥补这一问题,作者加了个归一化函数g,实质是一个增大loss值的系数。
3.什么是贝叶斯不确定性策略
文中提到训练过程中对图片做预测,得到部分遗失标签的预测标签,然后将这部分增加的标签数据加入训练样本进行训练,作者提到使用贝叶斯不确定性策略,这种方法我的理解就是使用贝叶斯定律计算遗失标签的目标的标签(具体的操作我也不会,只是原理我是这样理解的),可以参考一下贝叶斯在分类预测方面的使用,参考:贝叶斯分类(这个讲的比较清晰,一看就明白)_a925907195的专栏-CSDN博客_什么是贝叶斯分类(要是有哪位理解很透彻的或在深度学习模型训练中使用过这种策略的,可以留言,给我解惑,先谢谢)
4.为什么使用GNN网络结构?
GNN(Graph Neutral Network):本质上是通过神经网络对聚合节点及其邻居节点的特征信息做非线性变换
GNN目前的应用方向主要分为四个方向(链接:https://www.zhihu.com/question/307086081/answer/560642725):
1)风控领域,这个是最多的,特别是金融企业已经开始在试水。
2)推荐系统
3)生物医疗,一些高分子天然是Graph Data,所以GNN应用于生物上也是理所当然的。
4)还有一些个例,比如用GCN进行图像分类的,做语言什么的。
CNN和GNN不同的地方是,CNN的数据是线性数据,比如音频、图片。GNN的数据主要是关系型数据。所以CNN和GNN处理问题的侧重是不一样的;
5.文中多标签的测试结果衡量标准
mean Average Precision(MAP)(平均精确度):
recall = TP/(TP+FN),precision = TP/(TP+FP),每一类都可以根据recall和precision绘制P-R曲线,AP就是该曲线下的面积。而mAP就是所有类AP的平均值;
(其他阅读论文)
6.WELDON:Weakly Supervised learning of deep convolutional Neural Networks.
作者使用的网络结构是res101-WELDON,查阅了相关的资料,(稍微看了下)WELDON就是提取highest scoring regions,主要包括两部分:Feature extraction network和prediction network。predition network 先将卷积层提取的feature,传入一个conv,产生n*n*4096的向量,然后经过fully connected layer,产生预测结果,然后通过spatial pooling,得到最后的预测结果;参考论文中提到的文献《WELDON: Weakly Supervised Learning of Deep Convolutional Neural Networks》(我有点断章取义,有深入研究的朋友可以留言);