(翻译,解读)TWO-STAGEPOOLING OF DEEP CONVOLUTIONAL FEATURES FOR IMAGE RETRIEVAL

本文提出一种双层局部平均池化方法(PMP),用于构建紧凑且高辨识度的全局特征,以改进传统CNN图像检索中存在的内存消耗大、特征抓取不充分等问题。该方法能在多个基准数据集上显著提升检索性能。

TWO-STAGEPOOLING OF DEEP CONVOLUTIONAL FEATURES FOR IMAGE

RETRIEVAL

TianchengZhi, Ling-Yu Duan, Yitong Wang, Tiejun Huang



(这是一篇翻译文章,我自己读了这篇文章,顺便写了点自己的理解,和大家交流下里面的内容)

摘要:

CNN(卷积神经网络)基于图片表征在图像检索方面已经取得可相当高的成绩。然而,传统的CNN不是基于全局特征就是采用高维的特征,这会消耗大量的内存和计算资源,或者有价值的特征抓取的不充分,导致CNN抓取特征能力不足。为了改善这些问题,我们提出了“双层局部平均池化法(PMP)”去构建紧凑且高辨识度的全局特征。希望基于“碎片层(patch-level)”“中层(mid-level)”提取的特征和代表的PMP,能打破传统“最大池化(max-pooling)”和“平均池化(mean-pooling)”的限制。通过在几个公共基准数据集上的实验,我们大大提高了检索能力。


关键词:图像代表,图像检索,CNN,特征池化,compactdescriptor


介绍:

十年来,图像检索在学术界和工业界吸引了广泛的注意。特征代表在图像检索方面是个核心因素,影响着准确率和效率。传统的,手动标注局部特征方式,类似“SIFT”和“SURF”可以利用BoWVLADFV方式计算出全局代表。近几年随着深度学习的高速发展,利用pre-trainedCNN模型去提取特征已经达到了一个很高的水平并且比起传统的手动标注合并来做图像检索(场景检索,地标识别

)要好很多。

老实说,基于图像代表的CNN可以被分为两类,一类利用pre-trianed的模型对于整张图像去获取全局特征。一个简单的方法:从Alexnet/CafeeNetfc6/fc7全连接层去提取高层特征。Howeverthe

rawhigh dimensional CNN features are much less efficient due to timeconsuming similarity distance computing.最近的工作采用了PrincipalComponmentAnalysisPCA)方法去更多的降低特征的尺寸。尽管PCA能够吧特征转为低维度的代表(representation),但是这个转换矩阵(matrix)非常的大,因此会导致一定的时间消耗在减少加工上。值得注意的是,如果卷积或池化的特征被当成公共向量来对待,那么每个卷积或池化featuremap的位置信息会被忽略,但是,特征池化可以解决这个问题。因此,特征池化被考虑基于“middle-level”representationBabenkoet al.使用sumpooling来降低最后一个卷积或者池化层的特征尺寸并且效果不错。然而,图像检索经常会有复杂的场景,很多的不同尺寸,凌乱的背景,很多的类别,这些都是对于全局表征贡献不大的对于整张图片在检索中的必要信息。

为了解决基于全局表征的缺点,第二个方法是利用CNN从原始图像的碎片中提取特征然后融合globalrepresentation。比如,Gongetal.提出了MOP-CNN方案,用VLAD融合来自于不同大小滑动窗口的深度特征。然而,VLAD受到了尺寸的限制,因为全局特征是“patch-level”特征的C倍,C是词汇表的尺寸。MOP-CNN采用PCA去降低特征的尺寸但是之前提到了PCA在尺寸降低上的问题依然存在。一些其他的团队,更喜欢去用一些简单的方法,比如“maxpooling”和“meanpoolingaveragepooling)”去获取简介的全局imagerepresentation。但是,maxpooling很容易收到某些突出信号的影响,meanpooling容易受到背景的影响,从而忽略一些有意义的信号。

基于之前的一些方法的缺点,我们提出了高效率PMP,并且把PMP加入到特征提取框架中去。PMP主要用来去减少maxpoolingmeanpooling带来不利点。在进行特征提取的时候PMP分了两步:1intra-patchpooling从卷积featuremaps中去抓取有意义的信号2intra-patchpooinglevel-patchfeatures合称为全局表征。大量的评测表明PMPmaxpoolingmeanpooling的效果更好。同时,这样的特征提取框架采用小的特征尺寸在一些基准数据集上的准确率也被提高了准确率。

第二章会介绍,intra-patchintra-patchpoling和特征提取框架。后面也有大量的实验结果以及分析,最后在第四章我们作了总结。


2、提出的方法

这一章,基于特征提取框架的PMP的细节可以在图1中清楚看出。我们的框架主要包含了三个阶段:patchdetectionmid-level特征提取和两个阶段的PMP


1:展示了整个体征提取框架。pool5fc6fc7层是CaffeNet的特点,对于VGGNet而言,网络结构会更深但保持类似结构。


2.1 PatchDetection

正如前面提到的,把整张图片放入到提前训练好的CNN中很难解决不同尺寸,嘈杂的背景和无用的目标带来的问题。收到最近用R-CNN来做目标检测的启发,我们也采用了objectproposal algoprithms去检测高目标可能区域的特征。这样的话,在patch-level收到的背景以及其他无用目标的影响将会被减小。当检测到的patchs是这些目标可能性高的区域,而且CNN的特征很容易去描述目标的语义信息时,CNNmid-level特征对于每一个patch都会被提取而且被整合形成全局代表。

根据一些关于目标目标提取算法的调查,BING有着最低的计算复杂度(整个检测程序在一个2.6GHz的单CPU电脑上只需要10ms)因为有着搞笑的特征提取,我们采用了BING作为我们的patch检测算法。

值得注意的是,MOP-CNN采用了不同尺寸滑动窗口来解决尺度变化。但是,尽管patchs通过pre-determined的尺寸和滑动步长被提取出来,但是不能保证这些patchs能够抓取到有意义的目标在一个合适的sizes中,比如,两个明显不同的目标可能会在同一个patch中,这样CNN就不能产生很好的特征。所以我们不喜欢MOP-CNN


2.2Mid-level Feature Extraction

如图1所示,给了一个pre-trainedCNN模型,对于每一个imagepatch我们提取了最后一个卷积/池化蹭的featuremaps来作为mid-levelfeature。特别的,这个pool5层的特征是来自于CaffeNetVGGNet16层)。我们打算对提取自CaffeNetVGGNetpool5的信号在每一个featuremap中进行降序排序。我们的实验表明了排序后的特征比未加工的特征更好描述。

直觉上来说,排序的mid-levelfeatures防止了避免了明确的硬编码的位置信息,从而处理位置方差比原始特征更好。对于不同位子有意义的目标,排序能够更好的检测到他们,所以相似距离的计算能够跟好不受到目标位子变化的影响。举个例子,对于在CaffeNetpool5层的256feature maps都是用6*6的矩阵来表示的,每一个矩阵的元素都包含了明确的信息。为了抓取pool5这一层的结构信息,我们可以依次连接36元素反应,但位置的不变性很难被满足。所以,我们的mid-level特征提取对信号进行了排序以减少特征对于位置变化的敏感度。

我们已经经验验证,mid-levelpooling features,不包括明确的位置信息注入,超越high-levelfc feature。表格1,比较了排序的CaffeNetpool5features和其他featuresHoliday在检索上的表现。可以看出,排序的pool5比其他传统的pool5更好,而且超越了类似fc6/fc7这样的高层。




相比较于全连接层特征方式,利用卷积/池化层可以明显的减少内存和计算时间消耗,因为在特征提取时减少了大型矩阵的乘法运算。

但是,对于检索而言,排序了的mid-levelfeatures依然拥有太高的维。所以,我们用两个阶段的PMP去构建较有辨别力的简洁的features


2.3.Two-stage Partial Mean Pooling

这两个阶段的PMP,被利用到了patch-levelfeatures去形成简洁的代表。

Intra-patchPooling这个Intra-patchpooling用来从featuremaps中提取有辨识度的信号并且把feature转换成低维的representation。作为一种量化,PMP是基于intra-patchpooling能够移除位置变化在featurerepresentation中的不利影响。下面有对intra-patchpooling的公式说明。


我们采用


请等待后续更新~~~






### 方法概述 在高光谱图像分类任务中,超像素图卷积网络的应用主要依赖于图结构的构建方式。具体而言,该方法首先将图像分割成多个超像素区域,这些区域作为图中的节点参与后续的训练过程。每个超像素节点的特征可以通过其内部所有像素点的平均值或其他统计特性来表示,从而有效地减少了数据冗余并保留了重要的空间信息。 ### 模型结构 Graph-in-Graph Convolutional Network的设计旨在通过多层次的图结构来捕捉高光谱图像中的复杂空间关系。该模型的核心在于其独特的双层图卷积机制:内层图卷积负责处理单个超像素内部的信息传递,而外层图卷积则关注于不同超像素之间的相互作用。这种设计使得模型能够在不同尺度上同时提取特征,进而提高分类精度。 此外,为了进一步增强模型的表现力,研究者们还引入了注意力机制,允许模型在处理每个节点时能够自适应地调整对邻居节点的关注程度。这种方法不仅有助于突出重要的局部特征,还能有效抑制噪声干扰。 ### 应用场景 Graph-in-Graph Convolutional Network在高光谱图像分类中的应用展现了其在处理具有复杂空间分布特性的数据方面的优势。例如,在农业监测、城市规划以及环境评估等领域,此类模型能够提供更为准确的土地覆盖类型识别结果,支持决策者做出更加科学合理的判断。 ### 代码示例 以下是一个简化的模型构建示例,用于展示如何利用PyTorch框架实现基本的图卷积操作: ```python import torch from torch_geometric.nn import GCNConv class GIGNet(torch.nn.Module): def __init__(self, num_features, hidden_dim, num_classes): super(GIGNet, self).__init__() self.conv1 = GCNConv(num_features, hidden_dim) self.conv2 = GCNConv(hidden_dim, num_classes) def forward(self, data): x, edge_index = data.x, data.edge_index x = self.conv1(x, edge_index) x = torch.relu(x) x = self.conv2(x, edge_index) return torch.log_softmax(x, dim=1) ``` 此代码片段定义了一个简单的两层GCN模型,适用于处理已经构建好的图数据。其中,`num_features`代表输入特征的维度,`hidden_dim`为隐藏层的大小,`num_classes`则是输出类别数。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值