Press "Enter" to skip to content

ResNeSt之语义分割,ADE20K全新SoTA 47.6%

本文作者:张航

 

https://zhuanlan.zhihu.com/p/136105870

ResNeSt 这个论文的工作量比较大,我们会分开进行讲述,这篇关于语义分割。正文开始之前先说一下,我们已经开源了论文中提到的所有模型和训练代码 (见 ResNeSt 主仓库)

 

https://github.com/zhanghang1989/ResNeSt

 

特别是我们的 detectron2-ResNeSt ,在detectron2的基础上直接提高3%。

 

https://github.com/zhanghang1989/detectron2-ResNeSt

 

下面是正文:

 

标题党?

 

自2016年底,PSPNet 横空出世,从此成为领域的标杆,在当年的 MS-COCO + ADE20K 竞赛中夺冠,其中最佳单模型达到了 44.94% 的 mIoU。

 

 

这个最佳模型的记录保持了接近三年之久,直到最近才被超过,达到了46.27%(数据来自 PaperWithCode)。领域内的工作用了3年将这个数据集的结果推动了1.3%,ResNeSt-269 + DeepLabV3 单模型取得了  47.60% mIoU  的结果,在短时间内将最佳单模型结果再次提高了1.3%。这样来看,是不是可以说 ResNeSt 推动了这个数据集3年的进展呢?

 

虽然这样说有点标题党,我们看一下在 ADE20K 上的具体表现:

我们用DeepLabV3 + ResNet作为 baseline,可以看到使用 ResNeSt 取代标准 ResNet 可以得到接近  3% 的提升 。截止至论文投稿时,ADE20K验证集上的最佳模型是 ACNet,在不使用任何技巧的情况下,DeepLabV3 + ResNeSt-101可以达到 46.91% mIoU,比 ACNet 提高了 1%。在论文提交之后,我们又训练了更深的 ResNeSt-269 模型,并且进一步将这一结果推进至 47.60%。

 

语义分割有点迷失

 

我以前也做过一些语义分割方面的工作,对其中的困难有一点自己的想法(不对的地方还请指正)

 

很难突破:感觉无论在模型上做哪些改动,似乎都很难有较大的提高。这个时候是不是可以考虑在其他方面做一些创新呢?比如这篇 ResNeSt 提供了一个思路,说不定在backbone 阶段改进更有效呢,我们发现 ResNeSt50 + FCN 在 ADE20K 上就可以达到 42.94% mIoU,已经碾压了其他类似复杂度的模型。另外一个可以思考的方向,我们是不是也可以在 data 上面找突破呢, @朱毅大神之前做的 video propagation 在 Cityscapes 数据集上有很大提高,马上会推出一篇 semi-supervise 训练的论文,可以期待一下~

 

方法不通用:许多 low-hanging fruit 都被别人做了,要想提高分数,就需要对模型进行魔改,这样做出来的模型很复杂,而且通常不是很通用。主要原因在于不同数据集的难点不同,比如 ADE20K 注重的是语义理解和上下文信息,然而在 Pascal VOC 和 Cityscapes 这样类别比较少的数据集,主要困难在边界,通常某些网络上的改动在一个数据集上很好,在其他数据集上没用。如何可以找到相对通用的方法呢?

 

我觉得 ResNeSt 在语义分割方面的表现,可能对将来的工作或许有一点启发。

 

ResNeSt 设计初衷

 

虽然最近分类网络有很大的突破,但是在检测、分割等下游应用大多工作仍在使用 ResNet 做为 backbone 进行迁移学习。ResNet 网络的优势在于通用性与模块化,然而毕竟是为了分类问题设计的网络,通常在目标领域会有一些结构上的不足,比如对于分割任务来讲,网络的感受野相对较小,缺少全局的上下文信息等等。针对这种情况,下游应用通常会在 backbone 基础上进行 魔改 ,比如使用 pyramid representation 来提高感受野大小,或者引入全局的上下文信息,还有比较 expensive 的 Spatial Attention 的工作。与其这样魔改,不如我们把这些改进做到 backbone 里直接预训练一下。

 

在CVPR 2018,我做过一个 EncNet 的工作,算是一个把 attention 应用到语义分割问题上比较早期的工作了。我们发现,通过一个全局的上下文信息来预测 channel 维度的 attention 对分割很有帮助。那个时候也想过把这个模块用在 ImageNet 预训练中会有什幺效果,但是碍于资源有限没有深入研究(deadline 前几周才借到机器跑实验)。SE-Net,SK-Net 等工作都在基础网络训练的时候引入 attention 机制,而且取得了很大的成功,SE-Net 的缺点在于不利于网络结构的加宽以及 feature-map 的多样性,因为不同的 channel 都是相互依赖的;SK-Net 的多分支结构,不容易模块化和加速。受到 ResNeXt 的启发,我们把 attention 做到了 group level,这样的分组结构,有利于 featuremap 的多样性,同时这种模块化的设计保持了 ResNet 的原有宏观结构,可以直接应用到已有的算法中去。就这样我们得到了  ResNeSt ,在论文中,我们发现在物体检测,实例分割,语义分割等方向对下游模型都有很大提升。

 

相对于对已有网络进行魔改,可能不如对基础网络提升来的直接。希望这篇论文可以抛砖引玉,以后可以看到更多的关于基础网络研究的文章。毕竟分类问题基本属于 已经解决了的问题 ,能够更好地 为下游应用服务 ,才是更加有意义的。

 

预告与链接

 

不出意外的话,Chongruo @水中草、Jerry @张钟越和我最近会讲一下   ResNeSt 之物体检测与实例分割 论文中用到的 Mask-RCNN,Cascade R-CNN 等模型和训练代 码已经开源在了detectron2-ResNeSt。

 

https://github.com/zhanghang1989/detectron2-ResNeSt

 

我们之后应该会放出更好的模型,给准备打 MS-COCO & LVIS 竞赛的小伙伴们提供一个 Start Kit。

 

http://cocodataset.org/workshop/coco-lvis-eccv-2020.html

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注