《Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-grained Image Recognition》是CVPR2017的Oral文章,针对细颗粒度(fine-grained)的分类。
概述
该算法主要分为定位区域和从区域中提取特征两步,对于区域选择在过去的算法中有应用人工手动定义或者通过非监督学习获取特征,但这两种方法选择的区域可能不适合模型分类的区域。其次对于人工选择的很小的特征在训练时很难训练。基于这个原因作者提出了RA-CNN算法,RA-CNN算法能够在多尺度的图像中定位感兴趣区域。多尺度的网络参数共享,每一尺度的网络包括包含一个分类网络和注意力模型,这样可以保证很好的定位到需要着重考虑的位置。第二从高分辨率的图像中定位到小特征区域块后放大应用专注力模型来提取更多的特征。第三循环网络通过softmax loss 来优化分类,应用inter-scale softmax loss 来优化注意力模型。
上图为RA-CNN的模型结构,多尺度的图像处理的方式相同,从全图获取需要关注的区域
和
,首先不同scale的图像被送入卷积层(
到
)来提取区域内的特征。第二通过全连接和softmax(
到
)和注意力模型(
,
)来进行预测。RA-CNN的优化采用分类模型的softmax和ranking loss。
算法原理
对于输入图像X,首先应用预训练的卷积层提取特征。提取的特征可以表示为,*表示卷积,池化和激活,
表示参数的权重值。通过网络计算的结果有两个输出,一部分是预测概率的分布
,计算的概率分布为:
表示全连接层,这个是用来预测类别概率的。
第二是预测下一个scale的注意力模型获取的区域,矩形区域的三个参数,可以表示为:
其中表示矩形中心x和y的坐标,而
表示半个矩形的长度。
表示两个堆叠的全连接层,输出的参数就是注意力的区域。APN与RPN(region proposal network)相比,RPN是强监督模型,而APN是弱监督模型。
当确定了感兴趣区域,需要截取和放大该区域来获取更详细的特征。为了优化APN,作者提出了二维boxcar函数作为注意力mask。mask在前向传播时选择最明显的区域(分类最具有辨识度的区域),在后向传播时对参数进行优化。
注意力模型的区域可以通过
计算。表示裁剪的感兴趣区域,M()表示注意力任务,M函数的形式为:
其中h()函数的表示为:
k足够大,h()函数可以看为是回归函数,该回归函数可以被认为是一个阶跃函数和二维boxcar函数。boxcar函数有两个好处,首先,boxcar函数能够很好的估计裁剪区域。其次,boxcar函数通过后向传播能够很好的优化box参数。
虽然定位到了区域但面积小从区域中获取特征值还是挺困难的,因此需要放大区域,文中作者采用双线性插值来计算放大输出,通过从最近的四个输入
插值计算,通过公式:
其中,
是上采样参数。
参数优化
优化过程包括优化分类损失函数和inter-scale ranking 损失,通过优化来不断的产生精确的关注区域并且学习更多的特征。具体的优化函数如下:
·
其中s表示每一个scale,和
表示预测的标签和真正的标签。
表示分类的损失函数,在上图中是
到
和
到
。
表示scale预测的类别t的概率。ranking的损失函数呗定义为:
具体的训练策略
- 采用利用ImageNet预训练的VGG网络参数初始化上图中的
到
和
到
;
- 感兴趣区域的获取,矩形区域在原图中通过搜索的方式获得,在最后的卷积层中获取值最高的区域,在第二个scale选择时也应用同样的方式,利用注意力模型的卷积特征图到计算
;
- 不断优化上面两步中的参数,具体实现过程是保持APN参数不变,计算三个scale优化损失函数。然后固定分类层,调节ranking损失函数优化两个APN,这两个过程是不断循环,直到两个损失不再改变。注:
不能小于之前
的三分之一。