论文阅读:Knowledge Guided Disambiguation for Large-Scale Scene Classification with Multi-Resolution CNNs
场景分类文献阅读目前共有两篇:
(一)论文阅读: Scene recognition with CNNs: objects, scales and dataset bias
(二)论文阅读:Knowledge Guided Disambiguation for Large-Scale Scene Classification with Multi-Resolution CNNs
论文链接:Knowledge Guided Disambiguation for Large-Scale Scene Classification with Multi-Resolution CNNs
这篇文章的作者里面王利民,乔宇都是是场景分类领域的大牛。
1. Introduction
1.1 Issues
那这篇文章主要可以总结为这三大部分,首先,作者提出问题,对于场景分类任务,为什么数据集也有了,网络结构也有了,但是仍然达不到物体分类那么高的准确率呢?这是因为场景分类任务存在一个很大的问题,就是同一个类别的场景图片可能差异特别大,在文中作者称为视觉不一致(Visual inconsistence), 而不同类别间的场景图片可能差异特别小,作者称之为标签混淆(Label ambiguity)。
首先我们来看一下场景分类的面临的一个问题。就是同一个类别内场景差异大,不同类别间场景差异小。
1.1.1 Visual inconsistence
1.1.2 Label ambiguity
因此我们需要更合适的网络结构和整体算法实施方案,来增强模型的泛化能力,适用于更多情况。
1.2 Contribuitions
那作者就提出解决办法,这篇文章有两个主要贡献:
1) 作者提出了一个多分辨率的cnn网络结构,来解决类内差异大的问题。多分辨率的网络结构的话,可以从多个层面捕捉场景图像中的内容和物体之间的空间位置关系和语义关系。那这个多分辨率的网络结构,主要由两个部分组成,一个是coarse resolution cnn,另一个是fine resolution cnn,就是一个是粗糙的,一个是精细的。Coarse resolution cnn提取的是场景图片得全局结构和大尺度的物体;fine resolution cnn提取出来的是局部细节信息和小尺度的物体。那他们俩呢正好是互补的。就可以提取场景图片中更全面的信息,详细的我们会在后面说道。
Multi-resolution CNN architecture = Coarse resolution CNNs + Fine resolution CNNs
2) 作者利用知识迁移的方法,优化类间差异小这个问题。作者提出了两种知识迁移的方法。
Two knowledge guided disambiguation techniques
① 来自混淆矩阵的知识迁移(Knowledge from the confusion matrix),另一个是来自其他网络的知识迁移。来自混淆矩阵的知识迁移是说在数据集的验证集上,计算一个混淆矩阵,这个混淆矩阵代表的是各个类之间的相似程度,从而把一些类间差异小的类合并为一个大的类。
② 来自其他模型的知识迁移(Knowledge of extra networks),他是用其他模型对同一张场景图片预测一个soft label,和主网络的预测结果一起用于优化参数。
2. Multi-resolution CNN architecture
2.1 Coarse resolution CNNs
如上图所示的是原始的bn-inception网络结构,也是本文多尺度网络里的coarse resolution 部分。输入图片尺寸是224*224,首先通过两个卷积层池化层,这个时候feature map的大小是28*28。这么小的尺寸可以在后面的10个inception层处理得更快。那这10个inception层输出的feature map是7*7的,一共有1024个通道,最后用一个全局平均池化层把所有通道整合起来。那最后就是用一个1*1*1024的特征向量来表征这一张场景图片。
那这个coarse resolution的结构主要是提取图片的全局特征和大尺度的物体特征。那他就会丢失掉很多局部细节,而这些局部细节可能对于区分场景类别是很重要的。那我们就还需要一个网络结构来提取局部细节或者小尺度物体的特征,这样就引出了fine resolution cnn。
2.2 Fine resolution CNNs
2.3 Two resolution architectures
两分辨率的这个思想可以拓展到多分辨率。在实验中,他们也对四种分辨率做了实验。
那我们上一篇文章说的是多尺度网络,这个是多分辨率网络。乍一看他们俩是差不多的,但是还是有一些区别的。
多分辨率和多尺度的区别:一般地多尺度网络结构是这样的,输入的图片经过尺度变换,然后裁剪到适合网络结构的大小,送进去训练,对于不同尺度的图片,她的输入尺寸和网络结构都是不变的。而多分辨率网络结构输入的图片尺寸就是不一样的,那随着输入图片尺寸的增加,网络结构也会变化,层数会加深,提取的特征更加细节。那这种多分辨率的网络结构更加适合场景分类图片提取多层信息。
3. Two knowledge guided disambiguation techniques
3.1 Knowledge from confusion matrix
这个方法的思路是重组数据集,把相似的类别融合为一个大类。那融合不同类别的这个过程的关键点,是如何去衡量不同类别间的相似性。因为这是一个比较主观,而且工作量很大的事情,所以不能人工标注。
那来自混淆矩阵的知识迁移呢,是说我们首先用原始的数据集401类,训练一个模型出来。然后用这个模型,在验证集上做预测,把预测结果和数据集原始标签进行对比,计算混淆矩阵。那这个混淆矩阵中的每一个数值表示的是横纵坐标对应的两个类别之间的相似性。然后用下面这个公式计算相似度。那文章里面是取了几个不同的阈值τ,对相似度做判断。阈值τ不同,合并出来的类别数量也就不一样。如果两个类别的相似度大于这个阈值τ,就把他们俩合并为一类。那实验中发现τ取0.5的时候,效果最好,τ等于0.5的时候,是把整个数据集401类融合了为372类,再拿这372类重新训练。那在测试阶段,只对这372类做分类。
3.2 Knowledge from extra networks
左边这一项是主网络的输出,D是训练数据集,y是ground truth标签,p是预测结果。右边这一项是辅助网络的输出,f是预测的soft label,q是对应的soft label的预测概率。中间的来木他用于权衡左右两项所占的权重。K分别是hard label和soft label的维度,就是分类的类别总数。
那么通过利用其他网络的知识迁移,可以有效提升模型的泛化能力,减小过拟合的影响。
4. Experiments
4.1 Evaluation on multi-resolution CNNs
4.1.1 Two-resolution CNNs
测试集的话分别是imagenet和places205,401,365。这后面的数字是说places数据集中的类别数。
那我们可以看到在这几个数据集上,fine resolution的错误率是比coarse resolution低的。这是因为fine resolution提取出来更丰富的视觉信息和局部细节。把两个分辨率模型结合起来,全局特征和局部细节互补,效果又比fine resolution更好一些。
4.1.2 Multi-resolution CNNs
4.2 Evaluation on knowledge guided disambiguation
我们首先看来自混淆矩阵的知识迁移,是表格中的A3,和直接使用coarse resolution模型相比,错误率只降低了0.1%。
另外是来自其他模型的知识迁移,来自物体识别模型的知识迁移是A1,这个用的是在imagenet上预先训练好的模型。来自场景分类模型的知识迁移是A2,这个是在places上预先训练好的模型。我们可以看到A2的错误率,也就是用场景分类的知识迁移的模型,比用物体分类的知识迁移的错误率低了很多。
4.3 Generalization analysis
5. Failure case analysis
另外还有会议室和教室,由于他们相似的布局,也很容易分错。所以说场景分类图片包含了复杂的视觉内容,有时候很难用单一标签来描述这一类图片,那么多标签的场景分类数据集和算法一定是未来场景分类发展的重点之一。从这些失败的例子,我们可以发现场景分类仍然是一个富有挑战性的问题。