用Transformer进行图像语义分割,性能超最先进的卷积方法
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
正如大家所知,在进行图像语义分割时,图像被编码成一系列补丁后往往很模糊,需要借助上下文信息才能被正确分割。
因此上下文建模对图像语义分割的性能至关重要!
而与以往基于卷积网络的方法不同,来自法国的一个研究团队另辟蹊径,提出了一种只使用Transformer的语义分割方法。
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s3.51cto.com/oss/202105/21/bad21ba363d65ef43dd34327c09db8c6.jpg)
该方法“效果拔群”,可以很好地捕捉图像全局上下文信息!
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s4.51cto.com/oss/202105/21/e336d7832adeaf564ff1b2d695e7c987.jpg)
要知道,就连取得了骄人成绩的FCN(完全卷积网络)都有“图像全局信息访问限制”的问题。(卷积结构在图像语义分割方面目前有无法打破的局限)
而这次这个方法在具有挑战性的ADE20K数据集上,性能都超过了最先进的卷积方法!
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s4.51cto.com/oss/202105/21/6c577e4f8a49ec3dd6c8d2d8e4720360.jpg)
不得不说,Transformer跨界计算机视觉领域真是越来越频繁了、效果也越来越成功了!
那这次表现优异的Transformer语义分割,用了什么不一样的“配方”吗?
使用Vision Transformer
没错,这次这个最终被命名为Segmenter的语义分割模型,主要基于去年10月份才诞生的一个用于计算机视觉领域的“新秀”Transformer:Vision Transformer,简称ViT。
ViT有多“秀”呢?
ViT采用纯Transformer架构,将图像分成多个patches进行输入,在很多图像分类任务中表现都不输最先进的卷积网络。
缺点就是在训练数据集较小时,性能不是很好。
Segmenter作为一个纯Transformer的编码-解码架构,利用了模型每一层的全局图像上下文。
基于最新的ViT研究成果,将图像分割成块(patches),并将它们映射为一个线性嵌入序列,用编码器进行编码。再由Mask Transformer将编码器和类嵌入的输出进行解码,上采样后应用Argmax给每个像素一一分好类,输出最终的像素分割图。
下面是该模型的架构示意图:
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s2.51cto.com/oss/202105/21/925ab2f9bc50adbb0c80c27ac3245d78.jpg)
解码阶段采用了联合处理图像块和类嵌入的简单方法,解码器Mask Transformer可以通过用对象嵌入代替类嵌入来直接进行全景分割。
效果如何
多说无益,看看实际效果如何?
首先他们在ADE20K数据集上比较不同Transformer变体,研究不同参数(正则化、模型大小、图像块大小、训练数据集大小,模型性能,不同的解码器等),全方面比较Segmenter与基于卷积的语义分割方法。
其中ADE20K数据集,包含具有挑战性的细粒度(fine-grained)标签场景,是最具挑战性的语义分割数据集之一。
下表是不同正则化方案的比较结果:
他们发现随机深度(Stochastic Depth)方案可独立提高性能,而dropout无论是单独还是与随机深度相结合,都会损耗性能。
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s4.51cto.com/oss/202105/21/405d4cefa0a00124d0398133e25acc4a.jpg)
不同图像块大小和不同transformer的性能比较发现:
增加图像块的大小会导致图像的表示更粗糙,但会产生处理速度更快的小序列。
减少图像块大小是一个强大的改进方式,不用引入任何参数!但需要在较长的序列上计算Attention,会增加计算时间和内存占用。
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s2.51cto.com/oss/202105/21/7dd0a7726eee04d29a4d553a6fe6ab00.jpg)
Segmenter在使用大型transformer模型或小规模图像块的情况下更优:
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s4.51cto.com/oss/202105/21/a75429fe9a1eb158f55924f3976a1dfa.jpg)
(表中间是带有线性解码器的不同编码器,表底部是带有Mask Transformer作为解码器的不同编码器)
下图也显示了Segmenter的明显优势,其中Seg/16模型(图像块大小为16x16)在性能与准确性方面表现最好。
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s3.51cto.com/oss/202105/21/cea56a8673c1aa4002d3dfa5b2a1cc20.jpg)
最后,我们再来看看Segmenter与SOTA的比较:
在最具挑战性的ADE20K数据集上,Segmenter两项指标均高于所有SOTA模型!
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s2.51cto.com/oss/202105/21/8c065ad592b7408dc39d40770f0af039.jpg)
(中间太长已省略)
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s4.51cto.com/oss/202105/21/2dda465783bc59ddf16c29bcaa02a56a.jpg)
在Cityscapes数据集上与大多数SOTA不相上下,只比性能最好的Panoptic-Deeplab低0.8。
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s4.51cto.com/oss/202105/21/40d803cfe6002f214f2fcd980aff356e.jpg)
在Pascal Context数据集上的表现也是如此。
![用Transformer进行图像语义分割,性能超<span><span><span><i style=](https://s3.51cto.com/oss/202105/21/60d74ca3798693195f58f4fd273fd902.jpg)
剩余参数比较,大家有兴趣的可按需查看论文细节。
论文地址:
https://www.arxiv-vanity.com/papers/2105.05633/
相关文章
- EasyCVR对接华为iVS订阅摄像机和用户变更请求接口介绍
- 精选 | 腾讯云CDN内容加速场景有哪些?
- 模块化网络防止基于模型的多任务强化学习中的灾难性干扰
- 用搜索和注意力学习稳健的调度方法
- 用于多变量时间序列异常检测的学习图神经网络
- 助力政企自动化自然生长,华为WeAutomate RPA是怎么做到的?
- 使用腾讯轻量云搭建Fiora聊天室
- TSRC安全测试规范
- 云计算“功守道”
- 助力成本优化,腾讯全场景在离线混部系统Caelus正式开源
- Flink 利器:开源平台 StreamX 简介
- 腾讯云实践 | 一图揭秘腾讯碳中和?解决方案
- 深度学习中的轻量级网络架构总结与代码实现
- 信息系统项目管理师(高项复习笔记三)
- Adobe国际认证让科技赋能时尚
- c++该怎么学习(面试吃土记)
- 面试官问发布订阅模式是在问什么?
- 面试官:请实现一个通用函数把 callback 转成 promise
- 空中悬停、翻滚转身、成功着陆,我用强化学习「回收」了SpaceX的火箭
- 中山大学林倞解读视觉语义理解新趋势:从表达学习到知识及因果融合