← 返回 PaperDaily 视觉与图像

分割精度大涨10个点?被引1647次的UC Berkeley经典只用一招

这是一篇被引1647次的深度学习经典之作。当所有人都在用CNN最后一层特征时,UC Berkeley团队提出“超列”表示,将多层特征融合用于像素级定位,在分割、关键点、部件标注三大任务上全面领先,至今仍是多尺度特征融合的思想源头。

分割精度大涨10个点?被引1647次的UC Berkeley经典只用一招
原论文信息如下:
论文标题:
Hypercolumns for Object Segmentation and Fine-grained Localization
发表日期:
2014年11月
发表单位:
UC Berkeley / Microsoft Research
原文链接:
http://arxiv.org/pdf/1411.5752.pdf
在深度学习统治计算机视觉的今天,有一个看似简单却影响深远的思想:神经网络的不同层,其实就像一座金字塔,底层看到的是边缘和纹理,顶层看到的是语义和类别。那么问题来了——如果我们要做的任务既需要懂语义,又需要精确定位到像素,该怎么办?
2014年,UC Berkeley的Bharath Hariharan、Pablo Arbelaez、Jitendra Malik以及微软研究院的Ross Girshick给出了一个漂亮的答案——超列(Hypercolumn)
这篇论文发表于深度学习爆发的前夜,却被引用了1647次。它没有花哨的模型结构,没有铺天盖地的实验,只是提出了一个干净利落的洞察:既然CNN的每一层都存储了不同粒度的信息,为什么不把它们全部用起来?

从HOG到CNN:特征表示的革命性跨越

Figure 1
图1 超列表示示意图。 底部是输入图像,上方是CNN中不同层的特征图。某个像素点上的超列,就是所有位于该像素上方的单元激活值拼接而成的向量。
在深度学习普及之前,计算机视觉的世界里流行的是HOG(方向梯度直方图)和SIFT(尺度不变特征变换)这类手工设计的特征。它们能捕捉边缘、角点等局部信息,但对语义的理解几乎为零。2012年AlexNet在ImageNet上的一鸣惊人,标志着视觉特征从手工设计走向了数据驱动。
但当时的大多数识别算法,都习惯性地只取CNN最后一层的输出作为特征表示。理由很充分:最后一层对类别级别的语义信息最敏感,对姿态、光照、位置等“干扰变量”最不敏感。对于图像分类这种任务,这完全合理——你需要知道图片里是猫还是狗,不需要知道猫的胡须精确到哪个像素。
但是,当你面对的是物体分割、关键点定位、部件标注这类细粒度任务时,那些被顶层“概括掉”的位置信息恰恰是你最需要的。举个简单的例子:早期层的条状检测器能精确地定位一根“条”,但它分不清这根条是马的腿还是树干;顶层能分清语义,却把空间位置模糊成了一团。
这个困境,就是超列(Hypercolumn)要解决的问题。

超列(Hypercolumn):融合多尺度特征的像素描述子

“超列”这个词借自神经科学。在视觉皮层中,它描述的是对多个方向、多个频率的边缘敏感的一列V1神经元。本论文借用这个概念,但赋予更广泛的意义:它不是只包含边缘检测器,而是包含从边缘到语义的各级特征。
定义很直白:在某个像素位置上,把CNN所有层中“位于该像素上方”的单元激活值拼接成一个向量,这个向量就是该像素的超列描述子
由于相邻层之间存在很强的相关性,实际实现时不需要用全部层,只需采样少数几层即可。例如,使用AlexNet架构中的pool2(256通道)、conv4(384通道)和fc7(4096通道),拼接起来就是一个4736维的向量。
这里有一个视觉上的类比可以帮助理解:假设你在看一张人脸照片。底层的特征告诉你这里有皮肤纹理、有毛发边缘;中层的特征告诉你这里有眼睛、鼻子、嘴巴的轮廓;顶层的特征告诉你这是一张脸。超列就是把这三层信息打包在一起,让分类器既可以做精细的边界判断,又不会丢失语义上下文。

特殊设计:位置感知的分类器插值

单纯的特征拼接还不够。本文还做了一个很精巧的设计:位置感知的分类器网格
想想看,在一个人的检测框里,头部更可能出现在框的上方而不是下方。一个看起来像鼻子的像素,如果出现在框的顶部,那大概率是人;如果出现在框的底部,那大概率是背景。这种判断依赖位置信息,而CNN的特征图本身不编码位置。为此,本文训练一个K×K网格的分类器(实验中K=5或10),每个格子的分类器只使用对应位置的像素进行训练。在测试时,对于每个像素,其得分是周围几个网格分类器输出的线性插值。
这个设计的精妙之处还在于:顶层的fc7特征对所有位置是共享的,但有了位置相关的分类器,每个位置就可以有不同的“实例先验”。换句话说,全局特征提供了“这是什么东西”的信息,而位置分类器决定了“这个信息在框的哪个位置应该被激活”。两者结合,就形成了一个实例特定的先验分布。

高效计算:先卷积再上采样的工程智慧

如果直接实现,把上百通道的特征图逐层上采样到50×50,计算量会非常可观。但本文注意到一个关键性质:上采样是线性操作,卷积也是线性操作,两者的顺序可以交换
因此,正确的做法是:先在每个特征图上做1×1卷积(等价于一个线性分类器),产生分数图,再把分数图上采样到目标分辨率,最后将所有分数图相加。这大大降低了计算成本。更加巧妙的是,将1×1卷积替换为n×n卷积,还能让分类器看到像素周围的邻域模式,在低层特征上效果更好。
更进一步的,整个超列分类器可以表示为附加在原始CNN之上的额外网络层,实现端到端的训练。如图2所示,红色部分是原始分类网络,蓝色部分是添加的层。每个特征图后接一个卷积层,卷积核数量等于K²(对应K×K个分类器),然后上采样、相加、经过sigmoid,最后用插值公式组合得到最终输出。整个过程可微,可以从头微调整个网络。
Figure 2
图2 将超列分类器表示为神经网络。 原始分类CNN的层用红色显示,新增的层用蓝色显示。

三大任务验证:分割、关键点与部件标注的全面突破

论文在三个需要精确定位的任务上验证了超列表示的有效性:同步检测与分割(SDS)、关键点定位、部件标注

SDS任务:从49.7到60.0的飞跃

SDS任务要求同时检测并分割图像中每个类别的每个实例。论文设计了两种系统:
System 1(精化系统):沿用已有SDS流程,但将基于顶层特征的分割精化步骤替换为基于超列的版本。结果显示,仅此一项替换,平均AP^r在0.5阈值下提升1.5点,在0.7阈值下大幅提升6.3点。结合边界框回归和网络微调,最终在0.5阈值下达到52.8,比之前的最佳结果49.7高出3.1点。
System 2(高效流水线):直接从边界框检测开始,用超列预测分割掩码,再对分割结果打分。这个流水线比传统方法高效得多,并且允许使用更大的网络(VGG的O-Net架构)。最终,System 2在VOC2012 val上取得了60.0的mAP^r(0.5阈值),将SDS的最佳成绩大幅推高。
表1和表2详细展示了这些结果。特别值得注意的是,仅用fc7特征的基线只能产生模糊的分割,而超列产生了清晰锐利的边界。
Figure 3
图3 System 2流水线示意图。 从边界框检测出发,预测分割,再对分割进行评分,实现高效的检测与分割。

表1 System 1在VOC2012 val上的SDS结果。 Hyp+FT+bbox-reg系统显著优于已有方法。

表2 System 2在VOC2012 val上的SDS结果。 最终流水线在SDS上达到最优。

Figure 4
图4 从边界框检测开始的图-背景分割结果。 上一行:仅用fc7特征的基线;下一行:超列方法。超列方法的分割边界明显更精细。

关键点定位:3.3点提升

在关键点预测任务上,本文使用“人”类别,在VOC2009 val上评估。每个检测框内,为每个关键点生成一个热图,热图最高分位置即为关键点预测。相比只使用顶层特征的方法,超列获得了3.3个点的APK提升。图5展示了左腕关节的热图预测效果,基线方法的热图弥散模糊,而超列的热图峰值清晰聚焦在真实的关节位置。
Figure 5
图5:左腕关键点预测热图。上一行是仅用fc7特征的基线,下一行是超列方法(未微调)。

部件标注:6.6点全面领先

部件标注是比关键点更精细的任务:要把人体分割成头、躯干、腿、手臂等部件区域。论文对每个部件单独预测一个热图,再综合得到各部件的分割结果。相比于一个只使用fc7顶层特征的强基线,超列在几乎所有部件类别上一致领先,平均提升6.6个点。图6展示了可视化对比。
Figure 6
图6:部件标注结果。上一行是仅用fc7的基线,下一行是超列方法,两行使用相同的图-背景分割。红色为头,绿色为躯干,蓝色为腿,品红为手臂。超列方法对部件边界的刻画明显更细致。
Table 4
表4:部件标注实验结果。超列方法相比仅使用顶层特征的基线,在几乎所有部件上都有明显优势,平均提升6.6个点。

实验深度剖析:消融研究与架构选择

论文的消融实验做得非常扎实,几乎每一步设计都有对应的验证。首先是特征层选择消融。论文分别测试了只使用fc7、fc7+pool2、fc7+conv4、pool2+conv4四种组合,结果全部低于完整超列(fc7+conv4+pool2),且差异在0.05置信水平下统计显著。这说明不同层携带的信息确实是互补的——去掉任何一层,都会损失一部分独一无二的信号。
然后是位置分类器网格分辨率的消融。使用1×1网格(相当于所有位置共享一个分类器)在0.7重叠阈值下会损失2.4个点,但仍然优于之前基于顶层特征的方法——这证明即使不加入位置信息,超列特征本身已经非常强大;但加入位置网格后,系统能进一步利用fc7的全局特征形成实例特定先验。5×5网格就能恢复全部性能,说明方法对网格大小不敏感,很稳健。表1中给出了完整的消融数据。
Table 1 and Table 3
表1和表3:表1为System 1在VOC2012 val上的SDS消融结果(含仅用fc7以及各种特征组合的对比),表3为关键点预测APK结果(超列比之前的顶层特征方法高3.3个点)。两张表共同说明了超列在不同任务上的一致性优势。
在架构选择上,论文对比了T-Net(AlexNet)和O-Net(VGG)两种骨干网络。O-Net显著更大,在SDS上带来7.5到8个点的提升。更关键的是,超列相对"仅用fc7"基线的巨大优势在两种架构下都成立:T-Net下提升5个点(0.5阈值),O-Net下提升3.9个点,说明超列带来的增益不是某个特定网络结构的巧合,而是普遍规律。
Table detail
原文实验数据表格,进一步说明了超列在不同配置下的精细化结果。
还有一个反直觉的细节值得注意:论文发现仅用fc7的基线"只能输出一团模糊的分割",而超列能给出锐利的边界。如果放在当时"大力出奇迹"的背景下,很多人会认为加大网络规模就能解决定位精度问题。但O-Net下的对照实验表明,更大的模型并没有缩小超列和fc7之间的差距——瓶颈不在模型容量,而在特征表示本身。
621df26778f05KkH.gif
看到这种"一团模糊"的预测结果,估计不少人会露出同款表情——不过这也恰恰衬托出超列的价值:在很多视觉任务里,瓶颈往往不是模型不够深,而是信息没有被充分组织起来。
从计算效率角度看,System 2将候选集合从几十万个区域提案缩减到不到5万个检测框的扩展集合,同时换用更大的网络,整体效率反而更高。超列在这里展示的不仅是一条精度提升的路径,还是一种让更大模型在有限算力下"跑得动"的工程思路。

超列思想的启示与未来展望

从2014年至今,超列思想已经演化出无数变体。2015年提出的全卷积网络(FCN)引入跳跃连接,把深层语义与浅层细粒度特征相加做像素级预测;U-Net用编码器-解码器结构拼接多尺度特征;2017年的特征金字塔网络(FPN)更是把多尺度特征融合做成了目标检测的标配模块。这些工作的实现细节各不相同,但核心思想都能追溯到超列:不同抽象层级的特征应当被联合使用,而不是只信顶层。
在实例分割领域,Mask R-CNN在ROI Align之后同时使用多层级特征做掩码预测,也可以视为超列思想在更现代框架下的延续。如今,无论是语义分割、姿态估计、医学影像分析,还是自动驾驶的像素级感知,几乎没有哪个稠密预测任务会只用单一层特征。
当然,站在今天的视角看,超列本身的实现有明显的时代局限。它依赖selective search(选择性搜索)或MCG(多尺度组合分组,Multiscale Combinatorial Grouping)生成候选区域,没有实现真正的端到端;特征图分辨率受限于当时网络的降采样率;4736维的特征向量在今天看来也很厚重。但作为第一个系统性地提出"多层特征融合为逐像素描述"的工作,它给后续研究者提供了一个极简洁的心智模型——这正是它被引用1600多次的根本原因。
如果说有什么值得今天的从业者反复品味的,那就是:当所有人都在追逐更深更大的模型时,有时候真正有效的改进,只是把已有的信息更完整地利用起来。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:
这篇论文到底在解决什么问题?本文提出超列(Hypercolumn)像素描述子,融合CNN多层特征,在物体检测与分割(SDS)、关键点定位、部件标注三大细粒度任务上全面超越仅用顶层特征的方法,SDS精度从49.7提升至60.0。
这篇工作最值得看的点是什么?在SDS任务上,从49.7 mean AP^r提升到60.0;关键点定位提升3.3点;部件标注提升6.6点,均达到当时最先进水平。
这篇工作的边界或风险在哪里?优点:1)超列表示有效结合了低层精确空间信息和高层语义信息;2)统一的像素分类框架适用于多种细粒度定位任务;3)可端到端训练。缺点:1)计算开销较大,需要处理多层特征;2)需要设计合适的层选择和采样策略;3)对超参数(如网格大小、邻域大小)敏感。
如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★★☆

提出超列(hypercolumn)表示,将CNN各层的激活值堆叠作为像素描述子,实现精确的细粒度定位任务。

实验合理度:★★★★☆

SDS任务使用mean AP^r(不同IoU阈值下),关键点任务使用APK指标,部件标注使用AP^r_part指标

学术研究价值:★★★★☆

提出超列(hypercolumn)表示,将CNN各层的激活值堆叠作为像素描述子,实现精确的细粒度定位任务;更关键的是问题定义是否可复用到同类任务。

稳定性:★★★☆☆

现有材料未提供充分的极端条件、重复运行或扰动测试,稳定性暂按中性评价。

适应性以及泛化能力:★★★☆☆

现有材料未完整展示跨数据集、跨场景或分布外实验,泛化能力仍需进一步验证。

硬件需求及成本:★★★☆☆

论文未给出具体FLOPs,但提到System 2相比System 1更高效,因为只需处理约两倍于原始检测数量的候选框,而非全部自底向上的区域提议。

复现难度:★★★☆☆

现有材料未确认完整代码、配置、数据处理脚本和权重是否齐备,复现难度暂按中性评价。

产品化成熟度:★★★☆☆

论文验证以研究实验为主,真实部署中的时延、成本、维护和异常场景仍需补充验证。

可能的问题:1)计算开销较大,需要处理多层特征;2)需要设计合适的层选择和采样策略;3)对超参数(如网格大小、邻域大小)敏感。

主要参考文献

[1] Hariharan B, Arbelaez P, Girshick R, et al. Hypercolumns for object segmentation and fine-grained localization[C]. CVPR, 2015.
[2] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]. NeurIPS, 2012.
[3] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[C]. ICLR, 2015.
[4] Hariharan B, Arbelaez P, Girshick R, et al. Simultaneous detection and segmentation[C]. ECCV, 2014.
[5] Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation[C]. CVPR, 2015.
[6] Lin T Y, Dollár P, Girshick R, et al. Feature pyramid networks for object detection[C]. CVPR, 2017.
[7] Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]. CVPR, 2014.

*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       


像超列一样融合信息,来龙哥读论文一起看懂AI的每一层!扫描下方二维码或者添加龙哥助手微信号加群:kangjinlonghelper。一定要备注:研究方向+地点+学校/公司+昵称(如 图像处理+上海+清华+龙哥),根据格式备注,可更快被通过且邀请进群。
『龙哥读论文』微信群目前包含:图像处理、大模型及智能体、自动驾驶及机器人、AI医疗及AI金融5个群。
wechat_helper dianzan

转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。