论文提要“Hypercolumns for Object Segmentation and Fine-grained Localization”

动机:
CNN网络的最后一层对类别层的语义信息比较敏感,而对扰动(姿态,光照,关节和位置)不敏感。细粒度的分析包括目标分割,姿态分析等,直接使用最后一层不是最优的选择。
最后一层的特征在空间上比较粗糙,对准确定位有影响。文章提出了超列(Hypercolumn),即对应像素的网络所有节点的激活串联作为特征,进行目标的细粒度定位:同时定位和分割SDS,关键点定位和组件标记。超列的原理图如下所示:

原理:
1. 问题提出
对每个任务,扩展bbox并预测一个对应的heatmap,对于分割,heatmap编码的是对应位置在物体内部的概率;对于组件标记,每个组件预测一个heatmap,对应每个位置属于该组件的概率;对于关键点预测,每个关键点有一个heatmap,对应该该关键点在特定区域内的概率。
对以上三种情况,预测一个50*50的heatmap,之后缩放到与bbox同样大小,问题转化为对50*50个位置进行分类,文章使用超列进行分类。
2. 计算超列
对每个位置,使用图1的方法提取对应点某些层上的输出作为特征。由于特征图大小不一,将特征图使用双线性插值缩放到统一大小。特征图F上采样到f,i位置的特征向量为:
fi=kαikFk (1)
3. 网格分类器
获得对应位置的分类器,简单的方法是对50*50的位置分别训练分类器。考虑到速度和临近关系,文章训练 K×K 的分类器,K=5,10。每个分类器是一个函数 g(k),g(k)的输入是特征向量输出是0,1。与(1)类似,插值实现网格附近的预测:
hi()=kαikgk() (2)
如果i位置的特征向量是 fi ,则对应的得分是
pi=kαikgk(fi)=kαikpik (3)
pik 是i位置第k个分类器的概率输出,测试时,对每个像素运行 K2 个分类器,之后使用(3)式对所有的分类结果进行线性组合。
每个特征图对应多个通道,i位置特征 fi 在第j个特征图的特征段为 f(j)i ,将线性分类器进行分解:
wTfi=jw(j)Tf(j)i
4. 卷积及上采样
对特征图每个位置进行分类类似于1*1卷积,先将特征分割成对应每个特征图的组块,对每个组块进行1*1卷积生成得分图,之后上采样得分图,最后累加,原理类似于以下公式:
论文提要“Hypercolumns for Object Segmentation and Fine-grained Localization”_第1张图片
上述原理用写进网络如下图所示:
论文提要“Hypercolumns for Object Segmentation and Fine-grained Localization”_第2张图片
训练时,为50*50的heatmap分配label,损失是50*50区域逻辑损失总和。

检测分割实验
之前的SDS:提取proposal,同事计算bbox及前景CNN特征,之后进行nms,最后使用高层特征对候选区域进行修正。本文使用超列进行修正。
1. 使用超列进行修正
超列使用fc7层,conv4层(1*1邻域),pool2层(3*3邻域),10*10网格分类器,实验结果及拓展实验如下表所示
论文提要“Hypercolumns for Object Segmentation and Fine-grained Localization”_第3张图片
2. 由bbox进行SDS
使用RCNN的检测结果作为开始,经过nms及bbox回归。对bbox进行拓展,找回NMS滤掉的但可能是比较好的bbox,之后对每个候选者使用超列提取特征,使用CNN对每个区域进行打分。训练数据为拓展后的候选框,分割结果与groundtruh>0.7的是正样本,<0.5的为负样本。最终的结果在与groundtruth为0.5时mAP为60.0。

对有关节的物体进行组件标记的结果如下图所示:
论文提要“Hypercolumns for Object Segmentation and Fine-grained Localization”_第4张图片

你可能感兴趣的:(论文提要“Hypercolumns for Object Segmentation and Fine-grained Localization”)