论文阅读笔记 SPDA-CNN: Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition

这篇论文来自美国罗格斯大学的 Han Zhang, CVPR2016

1. 简介

         相比于一般的目标识别,细粒度识别具有更大的挑战性。其原因是由于姿态与视角的不同,不同图像之间微小的差异很容易被掩盖。一个直观的思路就是,利用目标的 part  去区分不同的子类。当前,一些 state-of-the-art 的方法都是利用 CNN 去检测 目标的 part regions。 但这些方法都只利用了目标的一些大的 part (比如鸟的头和身体),一些更小的语义 part 却被忽视了(比如,鸟的尾巴和翅膀)。(For example, on the CUB-2011 bird dataset, both methods only localized the head and body, i.e., large parts, and they did not utilize other smaller parts such as the tail and wings although these parts can be very useful for recognition)。对于细粒度图像识别,基于part 的CNN方法(part-based CNN methods)一般做法是:单独地为每一个part 训练一个CNN网络,然后从每个part中提取CNN特征,并将他们级联成一个很长的矢量,最后用这个特征矢量去训练一个分类器(比如SVM)。其中,每个part的CNN的结构是相同的,参数也是共享的。然而,这中方法有几个不足之处:(1)训练和测试是多步骤的处理;(2)限制了整个结构去学习不同part之间的相关性。

        为了解决上面提到的问题,作者提出了一种嵌入了中层part的抽象层(mid-level part abstraction layers)的CNN网络。这个网络主要由两个子网络组成:检测子网络(detection sub-network)   和 分类子网络(recognition sub-network)。

       三个创新点:(1)对于检测子网络,提出了一种新的上-下的方法来生成多个语义part的候选集(A novel top-down proposal method is designed to generate small semantic part candidates for multiple semantic parts detection);(2)对于识别子网络,提出了一种新的基于part层(A new type of part-based layers is proposed in the recognition subnetwork, which provides an abstraction of small semantic parts, extracts part-based features and combines them for recognition.);(3)联合了part的检测是识别,提出了一个端到端的网络结构(We further integrate the part detection and part-based recognition sub-networks into a unified architecture to form an end-to-end system for fine-grained classification)。


2. 网络结构

        整个网络结构如下图所以,它由检测子网络和识别子网络组成,下面将分别介绍。

论文阅读笔记 SPDA-CNN: Unifying Semantic Part Detection and Abstraction for Fine-grained Recognition

2.1  Part Detection Sub-network

      2.1.1 生成带几何约束的part proposals  (Geometrically-constrained Top-down Region Proposals for Small Semantic Parts)

             作者提出的这个生成part proposal的方法 与K-NN类似。首先,给定一个图像,计算 bounding box of object 的 histograms of oriented gradients (HOG特征),基于HOG特征,然后再从训练集中检索出K个最近邻的图像,每个领域图像的part regions 被等比例缩放到和输入的图像一样大小,得到变换后的part bounding boxes,如B = [b11, ..., b1m, b21, ..., b2m, ..., bk1, ..., bkm],m表示每个object中part的个数。为了从变换后的part bounding boxes 生成part region proposals,还需要加入两类先验信息:(1)Strong prior;(2) Weak prior;其区别在于是否考虑part class label and part geometric constraints。

      2.1.2 基于Farst-RCNN的part 检测(Fast RCNN based Part Detection)

          由上一步可以得到很多个part proposals,作者再利用Fast RCNN 去对每个proposal 进行回归处理,并得到其part label信息。


2.2 Part Abstraction and Classification

      这个子网络主要将semantic part 信息加入到一个CNN的分类网络中,分别提取各个semantic part的特征,最后级联成特征矢量。具体细节参考原文吧。