资讯详情

资讯详情

从ResNet到Mask R-CNN:深度学习视觉三大里程碑的技术复盘与工程启示

做计算机视觉的人大概都记得那段被“深度不够”卡住的日子想提精度第一反应是加层数一层不够再加一层结果网络超过某个深度之后训练误差反而涨了怎么调都回不来。直到那篇关于深度残差学习的论文出现残差连接这个看似只是“把输入加回来”的操作直接改写了深度网络的上限也让它的作者在学术圈彻底“出圈”。后来同一波人又做出了目标检测领域的通用底座、实例分割领域的成熟框架一路拿顶级会议论文奖拿到手软成为被中文互联网反复讲述的“开挂”主角。这篇文章不打算写传记也不做个人崇拜式的罗列。我想把它当成一个技术复盘案例来聊三篇里程碑论文各自解决了什么问题、为什么偏偏是它们能持续霸榜引用、以及作为普通科研人员和工程师我们能从这套方法论里搬走哪些真正有用的东西。无论你正在做模型训练、算法落地还是带团队这篇拆解都值得一读。1. 这篇“开挂”背后是一个怎样的研究脉络1.1 从“分类”到“识别万物”三篇论文串起的十年主链很多人以为“开挂”意味着东一榔头西一棒子地撞大运但把时间线拉长看这几篇关键工作其实是同一条主链上的递进图像分类、目标检测、实例分割一步一个脚印把“计算机能看到什么”这个问题的颗粒度越做越细。第一棒是深度残差学习ResNet。它解决的是基础特征提取层做不深的问题。可以说2015年前后整个深度学习社区最焦虑的事就是网络不够深、不够准而残差连接直接把“加深”这个操作变得安全可靠。做视觉的人都知道特征提取骨干几乎是所有任务的地基ResNet把这个地基夯实了。第二棒是Faster R-CNN目标检测领域的里程碑。更早的R-CNN系列虽然证明了深度学习能做检测但速度慢到无法实用Faster R-CNN把候选框生成也变成网络自己学的一部分检测速度从秒级被推进到接近实时成为之后五六年里绝大多数检测模型的骨架。第三棒是Mask R-CNN把目标从“框”的粒度推进到“像素”的粒度。同一张图里五个人叠在一起矩形框根本说不清谁是谁Mask R-CNN通过并行加一个掩码分支让每个目标在像素级别上被完整分割出来同时还能顺手做关键点检测。如果单独看任何一篇都可以说是那个年份的明星工作但把它们放在一条时间线上会发现背后的研究主题极其一致让深度网络更高效地完成视觉理解且从整体系统视角去解决当前最卡脖子的环节。这才是“连续产出”最容易被忽略的真相。1.2 一个前提顶级研究成果为什么能连续产出连续产出顶级成果光靠聪明是不够的。学术界从不缺聪明人但能把深度、系统性和平台资源组合起来的人不多。这位研究者的履历里有几个容易被忽略的要素早期接受了比较系统的工程训练硕士博士阶段转入视觉计算方向后又赶上了深度学习从边缘走向主流的窗口期。换句话说他既懂底层实现也懂算力边界还知道什么问题在接下来两三年会变得重要。这类“三个条件同时满足”的人本来就稀有。更关键的是平台。进入工业界研究院之后算力、数据、合作者密度都上了一个台阶研究工作也从“自己和自己玩”变成了“一群人定期讨论、互相补位”。很多技术文章只讲作者个人但真正做过研究的人都知道一篇最佳论文背后往往有一套完整的分工体系有人主攻模型细节有人盯实验有人写代码框架。所有这些因素叠在一起才支撑得起连续高质量产出。2. 把三篇里程碑论文的技术底牌逐一摊开2.1 ResNet当网络深到某个程度加层反而变差怎么办先回到问题现场。深度学习社区当时已经形成共识网络越深表达能力越强。但实际训练时大家发现一个诡异现象在合理范围内加深网络效果确实变好可一旦深度超过某个阈值训练集上的误差反而升高。注意这不是过拟合因为在训练集上就表现差了。研究者把这种现象叫作“退化问题”。为什么会退化首先想到的是梯度消失。几十层网络反向传播时梯度逐层相乘越乘越小浅层根本学不到东西。后来批量归一化和合理的初始化缓解了一部分但直到残差连接出现才算真正把“深度”这件事从玄学变成工程常规操作。残差连接的思想非常直白。假设我们要让模块拟合一个理想映射 H(x)传统的做法是让模块直接学习 H(x)残差网络改变目标让模块去学 F(x) H(x) − x而模块的输出是 F(x) x。也就是说网络不再学习“输出是什么”而是学习“输出和输入之间的差异”。如果恒等映射本来就是一个不错的解网络只需要把所有残差值压向零优化自然更轻松。这里可以打个类比。想象一个快递员要往50层楼送包裹老办法是每层都要把整个包裹重新扛一遍残差连接相当于在大楼里装了部电梯先不说其他至少“什么都不做也能把上一层的东西原封不动传下去”这条保底通道永远存在。梯度就像这个快递员有了捷径之后即使深层学得再差信号也有一条通路直接回传到底层不至于彻底消失。论文里的实验数据很扎实普通34层网络比18层网络效果更差这是退化问题的实锤而加了残差连接的34层网络不仅远超普通34层还一路把152层的模型训练成功了打通了“越深越准”这条路。残差模块的形式也简单到极致一个加法就够没有任何复杂门控。但这份简单恰恰是它最强大的地方——不加假设、不挑任务放在哪里都能用于是Shortcut后来成了深度模型的标配Transformer里的残差连接也是同一思路的延续。对于做训练的工程师这条工作的现实价值非常大。如果你的模型在训练时loss降不下去第一件事不是换更大的网络而是检查特征通路里有没有残差连接或者残差路径上是否被某些奇怪的归一化操作堵住了。很多时候深层网络训不动不是学习率的问题而是信息通路断了。2.2 Faster R-CNN目标检测从“跑两步”到“一步共享”目标检测的历史比图像分类更曲折。早期的R-CNN思路很朴素先用传统算法在图上生成大概两千个候选框再把每个候选框裁剪下来送给卷积网络逐一分类。问题是这种串行处理速度太慢一张图跑几秒都算快的完全不具备实用价值。随后Fast R-CNN做了一次重大优化不再对每个候选框单独跑网络而是先把整张图通过卷积网络得到特征图然后针对每个候选框在特征图上做区域池化再接分类网络。这一步把大量重复计算合并了但候选框生成仍然依赖外部模块整体流程里最慢的一环没有被解决。Faster R-CNN的回答非常系统候选框为什么非得用外部传统算法来生成网络自己已经能提取特征了它完全可以直接预测“这里有没有物体、物体大概在什么位置”。于是论文提出了区域提议网络RPN在共享特征图上滑动一个小的卷积网络每个位置预先设定若干个锚点框网络基于这些锚点框输出“是前景还是背景”的置信度并回归框的偏移量。锚点机制是一个相当优雅的设计。没有锚点的话网络要从零开始预测任意形状的框这非常不稳定有了锚点预测任务就变成“在预设的一组基准框上做微调”难度瞬间下降。常见的做法是在每个位置设定多个尺度和长宽比的锚点比如面积128、256、512比例1:1、1:2、2:1这样无论目标是大是小、是扁是长都能找到一个接近的起点。真正让这套方案封神的是RPN和检测网络共享特征、联合训练。候选框生成不再是单独的预处理步骤而是和分类、回归在同一套参数里端到端完成。整张图只需过一遍卷积网络检测速度从秒级直接降到毫秒级。团队第一次在标准检测数据集上跑通这套流程的时候大家最直观的感受是原来“候选框长什么样”也是可以学的而且学出来的候选框比传统算法生成的更准、更快。两阶段检测器为什么能长期保持高精度关键在于第二阶段会针对每个候选框做区域池化把不同尺寸的特征统一到固定维度做精细分类这种“先粗筛、后精修”的流水线结构天然适合追求精度的场景。后来很多工程团队做业务落地只要对精度有要求第一反应仍然是在Faster R-CNN骨架上做改进。它定义了一种范式而不只是一个模型。2.3 Mask R-CNN从矩形框到像素级理解的临门一脚检测做得再好矩形框在有些场景里依然不够用。比如一张会议上十个人并排站着的照片框与框大面积重叠每个框里都混着别人的肩膀再比如自动驾驶场景下的行人分割车辆需要知道目标的精确轮廓而不是一个粗略的包围盒。这就是实例分割的用武之地它要求把每个独立目标用像素掩码标出来既区分不同实例又区分前景和背景。Mask R-CNN的方法论非常明确沿用Faster R-CNN的整体骨架在已有的分类分支和框回归分支旁边并行加上一个掩码分支。这个分支对每个候选框内部输出一个二值的像素级掩码告诉模型“哪些像素属于当前目标”。因为分类、框回归、掩码三个任务共享同一个特征提取网络多任务之间互相促进整个框架的参数效率也更高。但真正让Mask R-CNN从“凑合能用”变成“精确好用”的是一个容易被忽视的小模块RoIAlign。之前的区域池化操作在处理候选框时会把边界上的坐标做取整处理坐标一取整像素就偏移了。框级任务对几个像素的偏移不太敏感但分割掩码是像素级任务一两个像素的错位直接导致掩码边缘出现可见的锯齿。RoIAlign的解决方案是用双线性插值在浮点坐标上采样而不是取整把对齐精度提升到亚像素级。就这一处细节的修改分割精度就明显上了一个台阶。这个框架还顺带打通了关键点检测把输出从“二值掩码”换成“每个关键点的热力图”就能同时输出人的鼻子、肩膀、手肘位置。所以到这一步一个统一的视觉理解工具箱已经成型给定一张图模型能告诉你有什么目标、目标在哪、目标长什么样、目标的关键部位在哪。在它出现之前这些任务通常需要各自单独搭一套系统在它出现之后一套骨架通吃成了默认选项。Mask R-CNN给普通工程师的启发其实比模型本身更值得记很多时候算法效果差不是大方向错了而是数据处理链路里某个不起眼的细节在持续漏水。RoIAlign只是把“取整”改成“插值”计算量几乎没增加收益却清晰看得见。下次你调模型半天没进展不妨从头检查一遍数据的坐标变换、尺寸缩放、归一化路径大概率能找到一个类似的“RoIAlign时刻”。3. 三度封神最佳论文背后的选题密码与评审逻辑3.1 选题踩在最痛的痛点上把三篇论文并列看最能总结它们的词不是“创新”而是“精准”。三篇工作分别精准击中了各自时期最痛的瓶颈基础特征网络不够深、检测系统速度太慢、像素级理解缺乏通用框架。图像分类时代大家都在百米冲刺一样地堆精度堆到一定深度就撞墙ResNet直接绕过这堵墙检测时代大家已经接受了两阶段精度高但慢的现实Faster R-CNN告诉你慢的根源不在模型而在候选框生成这个问题必须被系统化解决到了分割时代计算机视觉的主赛道已经开始向“场景理解”转移框不够用了Mask R-CNN就站出来提供像素级输出。这里有一个人人都能模仿的选题套路不要问“我能做什么新模型”而要问“当前整个领域最不敢碰、最绕不开的问题是哪一个”。这类问题通常意味着所有人都在默默承受它带来的代价一旦有人解决立刻会成为标配。所谓“封神”的论文解决的往往不是作者自己的问题而是整个社区共同的问题。3.2 “简单方案完整实验”的组合拳最佳论文评审有一个心照不宣的偏好方案越简单越好实验越完整越好。复杂到你需要在附录里解释三天才能看懂的模型反而很难获得高票而像残差连接这种“一行公式讲完”的方案只要配上扎实的消融实验和可视化分析说服力是核弹级的。ResNet的实验设计到现在都是教科书级别的18层对比34层带残差和不带残差的差距一目了然ImageNet上的152层结果直接碾压当时的同类方法再到CIFAR上做小规模验证证明思路具有普适性。Faster R-CNN同样如此每个模块的增益、锚点设置的敏感性、端到端训练带来的加速全部被拆开证明了一遍不留模糊地带。很多新手做研究的误区是用力学“复杂”觉得模块越花哨越高级。实际评审过的论文会告诉你审稿人最怕的是“效果提升说不清来自哪个部件”而简单方案配合完整消融正好解决了这个信任问题。工作量大不大不应该体现在模型复杂性上而应该体现在“你把一个简单点子证明到了什么程度”。3.3 为什么说“三度封神CVPR”需要打个引号这里必须稍微泼一点冷水。中文互联网上流传最广的说法是“三度封神CVPR”如果按严格奖项口径核对三篇论文拿到的荣誉并不完全在同一个会议一篇是CVPR的最佳论文奖另外两篇分别是在其他几个同级别顶会上拿到的最高论文荣誉还有后续被追授的时间检验奖。这类荣誉经过传播后很容易被浓缩成一个简短的“三度封神CVPR”的说法。我提这个不是要抬杠标题党而是想强调一个从业者必须具备的习惯任何被传播得极其简洁的“传奇故事”都应该回到原始论文和官方获奖列表里核实一遍。这个习惯本身比记住一个昵称有价值得多。当然如果把它理解成“在计算机视觉顶级会议级别的舞台上三次拿下最高荣誉”这个说法在精神上完全成立这也是它能在圈子里广为流传的原因。难的不是较真定义而是既要尊重事实也要理解传播逻辑。4. 引用量第一是怎么炼成的学术传播的底层规律4.1 基础设施型工作的复利效应“21世纪引用量第一”这个称号在不同统计口径下其实有争议但如果把范围锁定在深度学习计算机视觉这条支线这几篇论文长期霸榜是没有任何悬念的。拆解引用量构成会发现一个特别明显的规律高引论文大多是“基础设施型工作”。什么叫基础设施型工作就是后来者做任何相关实验都绕不开你的产出。做图像分类要选骨干网络ResNet是最常用的默认选项做目标检测要设计框架Faster R-CNN是理解两阶段范式的必修课做实例分割要对比效果Mask R-CNN是基准线中的基准线。别人论文里的“我们基于ResNet”“我们的基线是Mask R-CNN”每一句引用都在帮你滚雪球。这种复利的可怕之处在于每一项新工作出现只要它做了实验对比就会引用你每一个新研究者入门只要有导师推荐必读论文就会顺藤摸瓜找到你。时间越久基数越大增长是幂指级的。4.2 一个好记的名字胜过千页论文学术传播有一个和代码可读性很像的逻辑能被高效谈起的工作才会被大量谈起。ResNet两个音节RPN三个字母RoIAlign一看就知道在讲什么。研究者日常讨论问题时不可能每次都说“那篇提出跳过连接的深度神经网络论文”一定会需要一个简洁的代号。“ResNet”这个名字天然就是为了传播而生的好念、好拼、好搜。相比之下有些工作贡献不小但名字拗口或者用了太多限定词读者转头就忘引用时甚至想不起该引哪篇。给工作起一个“能被轻松口语化传播的名字”不是包装噱头而是降低传播成本让社区在对话密度上给你加分。4.3 开源与教程生态的加速器学术界有个不成文的规律代码开源与否对引用量的影响是数量级的。公式写得再清楚复现对比仍然是痛苦的工程实践只有当你把代码、预训练模型、实验配置一次交齐别人才能在三天内跑出和你一样的数字并把精力花在“基于你的工作做改进”上。这个研究团队的另外一个特点就是开源补得非常及时。很多时候论文还没正式发表代码仓库就已经开放了而且不只给训练代码连推理脚本、模型权重、环境配置都给全。这套做法降低了整个领域的实验门槛也让“引用一篇开源论文”成为成本最低的基线选择。对于普通研究者这里有一条非常实用的策略如果你的目标是影响力和被引用就不要把开源当作最后一步而应该把它当作论文写作的一等公民。也就是说代码的可读性、复现脚本的完整度要像写论文正文一样认真对待。5. 对普通科研人与工程师的五条实操启示5.1 先找“不可能被绕过的问题”再谈模型创新衡量一个研究问题好坏有一个简单的判断标准如果这个问题被解决了后续所有相关工作者是不是必须提到你如果答案是“是”这个问题就值得做如果答案是“否”那不管模型多漂亮大概率会在传播中被淹没。把这套标准用在工程上同样成立。业务团队那么多为什么有的模块被反复复用有的上线即雪藏差别就在于你是不是在做“全公司都等着的通用能力”。做个业务专属模型项目结束就结束了做一个让所有项目都能复用的标准件价值才会随团队规模增长。5.2 不要小看“笨功夫”完整实验和清晰写作是硬通货我被问过很多次“怎么发高分论文”每次给出的第一建议都是把实验做完整把消融做干净把图和表做到每个细节都能经得起追问。这个建议听起来无聊透顶但真正做到的论文连一半都没有。完整实验的检查清单其实不复杂有没有和所有同类最先进方法逐一对比有没有拆开每个模块验证贡献有没有在至少两个不同规模的数据集上确认普适性有没有把失败案例拿出来分析把这些做齐论文的“硬厚度”自然上来。写作层面则记住一句话让读者在十分钟内看懂你想了什么、做了什么、结果是什么。能用一张图说清楚的问题不要用三张花哨但信息量低的图。5.3 把一件小事做成标准件这个研究和工程双栖的团队有一个共同的做事倾向不追热点而是把一个看起来简单的想法打磨到极致最后让它成为整个生态里的标准件。残差连接只是加法RPN只是一个小的卷积预测头RoIAlign只是插值方式换了一下任何一个都是“小部件”。但小部件一旦做到“别人绕不开”力量比一百个大模型Demo大得多。放到职业生涯里这句话可以翻译成与其同时参与多个虎头蛇尾的项目不如在某个细分方向上做到“提到这个方向圈内默认你做的方案”的程度。复利喜欢奖励坚持在一个点上做深的人。5.4 长期主义用十年做同一条主线回看整条研究脉络从分类到检测再到分割始终没有跳出“让计算机更懂图像”这条主线。长期待在同一条主线上最大的收益是你知道哪些问题已经烂尾了哪些问题刚有苗头哪些工具可以迁移到新任务里。技术判断力的积累本质上就是时间在固定坐标系里的沉淀。频繁横跳的人容易陷入“永远在入门”的困境。今天学新领域的名词明天适应新领域的惯例却始终没有机会在任何一个方向上积累出复利。找一条你愿意做十年以上的主线剩下的选择都会变简单。5.5 如何用这套方法论指导自己的项目最后给出一个可以直接拿去用的自评清单无论做研究还是做工程都可以定期拿这几条来自我审视维度自评问题合格线选题我的项目解决的是系统级瓶颈还是局部修补是前者方案我能不能在一页纸上把核心思路讲清楚能实验每个组件对最终效果的贡献是否都验证过都验证过传播我的工作的名字是否好记、代码是否好复现是复利做完这项工作下一次是否能站在它上面能这五条不是标准答案而是我这些年看下来总结出的判断“某个项目是否会变成经典”的最朴素信号。做研究和做工程久了会发现所谓“开挂”拆开来看全是选择选择了一个注定绕不开的问题选择把实验做到没有死角选择把代码和模型交付给全社区选择在同一条主线上耐心地做了十年。每一次单独看都很朴素但叠在一起就成了别人口中的传奇。你在自己的项目里哪怕只学习其中两三条把时间拉长三五年结果也会比东一榔头西一棒子好得多。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →