B-CNNS
摘要
本文使用了两个CNN提取特征的池化输出来代表图像,并且在一定规则下定位特征交互。但是在工作中发现,双CNN提取的特征有些冗余,可以在精度不下降的前提下减少某些特征,双CNN在其他的分类任务中也是有效的,比如纹理和场景识别。
现存的深度纹理表达有一些缺点,本文的关键方式是纹理表达可以可以写成两种适用网络设计特征的池化输出,网络的结构主要是两个CNN网络提取特征并连接一个bilinear 层以及 一个pooling层,然后后面跟随一个全连接层进行分类。其中bilinear层是量个区别特征组合一起产生输出,这和二阶导数池化的方法非常像,这种池化常常被应用在语义分割中。和其他的与训练模型不同,B-CNN可以从头开始训练,使用不大的计算消耗可以超越其他使用imagenet与训练的网络。
B-CNN可以看成一个特殊的attention model因为输出产品根据一个特征处理另一个特征 ,和对特征交互的attention机制特别的像,尽管这种特征并没有进行直接对比。
纹理表达和二阶特征
二阶特征,在图像分类和语义分割阶段是十分有效的。无序的纹理表达以及深度特征之间的研究是一个非常重要的话题,本文的工作和cross-layer pooling, 就是从不同的卷积层,提取特征。
CNN 的特征的Gram matrix对纹理表达具有很好的效果
gram 矩阵
但是这种在识别的时候非常有效,但是在合成方面没有效果
模型变体与扩展
和以往bilinear模型用于风格迁移相比,本文的bilnear模型用于分类,bilinear feature的缺陷是高维度特征存储显存的开销,比如对于512*512的图像,需要512个高维度限量表示,但是前期的工作发现,所有的表达能够压缩到512*64的维度。在大多数情况下可以降低8-32X 并且没有明显的精度降低。
模型结构
首先看一下B-CNN的结构,然后看一下B-CNNS
B-CNN的结构由四个部分组成,B = (fa, fb, P, C)其中P是池化函数,C是分类函数,其中feature function 是映射f : L x I à R (k*d)其中I是图片, L是locations 输出的大小k*d, 根据定位和大小,每个定位的特征合道一起使用,其中特征通道融合的公式如下
fa 和fb必须有相同的特征维度k, 其中k的值与模型是相关的,pooling层,使用融合所有定位后的特征,或得一个全局的表达表示如下,其中在实验中使用了加和池化。
由于特征的位置在pooling的时候被忽略到,所以bilinear特征是一个无序的表达。如果fa和fb的大小是k*m 和 k*n,那么得到的大小就是m*n 那么这种特征就认为是图像表达,可以并用来做分类。
卷积网络提取特征,这些特征根据图像定位和特征通道索引。
正则化和分类
其中归一化方法
分类方法使用一般是svm或者逻辑回归。
端到端的训练
由于网络结构是有向无环图,可以根据分类误差的反向传播实现。如果两个网络的输出是A和B分别是L*M和L*N那么bilinear feature就是x = M*N。
反向传播一般流程如下
传统问题表达
这一部分主要展示大量的无序纹理可以用于bilinear form获得end-to-end训练表达器。
B-CNNS试验
使用了多种卷积抽取,第一种 使用两个VGG-M网络提取relu5layer
(2) 一个VGG-D, 一个VGG-M 网络分别使用relu5-3层以及relu5层,
(3)使用VGG-D网络,抽取relu5-3层。
输入的图像是448*448 特征提取使用两个CNN 分别生成28*28 以及VGG-M 27*27,所以需要28*28的下采样一次。
微调
微调主要是增加一个k全连接加softmax层,其中k是分类的数量。
线性层的初始化是随机的,使用两步训练过程来训练,首先训练线性层使用逻辑回归,然后在微调整个网络固定的epoch(一般是45-100epoch)学习率是0.001,因为先训练线性链接层可以能提升准确率。
SVM的训练和验证
在所有的试验之前,以及微调后,训练集合验证机是融合到一起的,并且一对多的线性SVMS在提取的特征上,超参Csvm=1的条件下进行训练。我们的特征是L2标准化。
训练分类被校准通过放缩权重变量,比如正样本和负样本的分数,在1和-1之间。
并且使用了图像增强。其中SVM对VGG-D网络是负增长的,但是对VGG-M能够增长1%-3%个百分点,同样图像增强也是对VGG-D网络负增长对VGG-M网络能够增长0.5%.
纹理和背景识别
B-CNN对于纹理的识别是要优于CNN+FV pooling
在纹理上也能够取得相比于其他模型更好的效果
维度缩减
CNN特征的输出生成了非常高维度的图像表达,在早期的工作中发现,特征是高度冗余的,他们的维度可以数量级的递减,在没有精度减少的前提下,早期的工作中,得出高紧凑的表达能够获得。
这一部分主要研究在纹理细粒度分类模型中精度和特征维度之间的关系, 对于B-CNNS来说,它的输出是根据特征x和y计算而来,有多重办法来减少模型特征维度。
( 1 ) 将特征映射到低纬,使用下面公式
其中vec将菊展转化成一个向量的形式,P是一个矩阵。
(2) 将两个特征都降低到较低的维度
(3) 将其中一个feature降低维度
在每一个实例中,每一个方案,可以使用PCA初始化,尽管这中放啊十分直接,但是计算PCA是一个非常巨大的工作。
在早期的研究过程中发现,使用输出两个特征的PCA对精度会有显著的下降,研究发现,只对其中的一个feature进行PCA的话能够有较好的效果,相比于CBP算法,PCA算法的效果相对更差一点,但是它们的速度,是PCA的1.5倍。其中CBP算法是compact Bilinear Polling算法。