Learn by attention, learn with confusion.
先引用几段魏秀参大神的论述「见微知著」——细粒度图像分析进展综述
细粒度物体的差异仅体现在细微之处。如何有效地对前景对象进行检测,并从中发现重要的局部区域信息,成为了细粒度图像分类算法要解决的关键问题。对细粒度分类模型,可以按照其使用的监督信息的多少,分为“基于强监督信息的分类模型”和“基于弱监督信息的分类模型”两大类。
……略过一万字,建议自己去看……
一种对Bilinear CNN模型的解释是,网络A的作用是对物体/部件进行定位,即完成前面介绍算法的物体与局部区域检测工作,而网络B则是用来对网络A检测到的物体位置进行特征提取。两个网络相互协调作用,完成了细粒度图像分类过程中两个最重要的任务:物体、局部区域的检测与特征提取。另外,值得一提的是,bilinear模型由于其优异的泛化性能,不仅在细粒度图像分类上取得了优异效果,还被用于其他图像分类任务,如行人重检测(person Re-ID)。
不多解释,直接开始正文了,建议先读上面这篇综述吧。
Bilinear CNN[1][3]
先放网络架构图镇楼:
网络架构很简单,主要就是用外积(matrix outer product)来组合两个CNN(A和B)的feature map (当然也可以不用CNN),bilinear layer如下:
其中位置l 涵盖了位置和尺度,I 是图像。f 的维度是(K,D)。D是指channel。如果A和B输出的特征维度分别是(K,M)和(K,N),经过bilinear后维度变为(M,N)。用求和池化函数(sum pooling)来综合不同位置的特征,得到一个全局的图片表示: