DeepCAMP: Deep Convolutional Action & Attribute Mid-Level Patterns
CVPR 2016
本文提出一种 分割图像 patch 的方法,因为细粒度的分类问题,如:行人动作识别 和 行人属性识别等等。
Appearance Overview
本文提出一种利用 mid-level 深度视觉模式 进行动作和属性分类,这是属于细粒度分类任务。我们的一个想法是:一个较好的 embedding 可以改善聚类算法的质量。我们设计了一种迭代算法,在每次迭代中,我们通过训练一个新的 CNN 来对上一次迭代得到的 cluster labels 进行分类,以此来改善 embedding。此外,我们相信结合人物整体的信息和 context 以及 图像 patch 的特定动作和属性标签可以改善 mid-level elements 的clusters。所以,我们从 AlexNet 网络结构上进行改进,以结合 patch 和 global image 的 feature。实验表明,利用这种新的结构学到的 embedding 性能超过了仅仅使用 patch images 微调后的 AlexNet 网络结构。
此外,在每次迭代过程中,我们通过移除 poorly scored patches 来改善 clusters。作者提到本文的两个贡献点为:
1). design an iterative algorithm contains an expert patch CNN to improve the embedding ;
2). proposing new patch CNN architecture training to use context in clustering the patches.
Pipeline Details
1. Initial feture extraction and clustering.
第一个模块 利用 MDPM 对image patches 进行 聚类。
2. Train patch clusters CNN.
我们主要的意识认为 图像 patches 的表示在聚类上扮演了重要的角色。假设初始的聚类是合理的,在这个模块,我们训练一个新的 CNN 来改善表示。训练这个新的 CNN 的目的就是当给定图像 patch的时候,可以预测 cluster 的 label。这里就和之前的那个 CNN 区别开来,之前的那个是为了 classify bounding box images to different action categories. 我们相信利用判别性的 patch cluster CNN results 学习这个细粒度的分类可以得到一个更好的聚类表示。
Updating clusters
既然已经用新训练的 CNN 学习了表示,那么我们利用 MDPM算法再一次的更新 clusters 以得到一个更好的 clusters 的集合来匹配新的表示。由于在 MDPM 中进行 mid-level clusters 的填充是非常耗时的,我们固定住 第一层的聚类,然后通过重复 re-clustering 和 利用新的表示融合来更新 clusters。这个可以得到更好的聚类,最后,我们训练新的 LDA 分类器来检测 clusters。为了进行 re-clustering而改进的 MDPM在 4.1节进行了描述。
Harvesting patches.
为了改善 clusters 的纯度,我们通过移除不适合任何 cluster的patches来清理 clusters。我们通过阈值化 LDA 分类器为每一个cluster产生的置信值来达到此效果。最终,we pass the new patches with associate cluster labels to learn a new CNN based representation.
3. Mid-level Deep Patterns Network
说实话,感觉看到这里,感觉整个流程写的挺混乱的。我哩个去。。。让我先整理下思路。。。懵逼了。。。
Experience
我的感受:
夜深了,我要入睡了。。。
明天再 bb