AI学习者 · 2021年07月12日

Transformer in Transformer:TNT在检测分割任务新进展及代码解读

在之前发布Transformer in Transformer(TNT)网络架构及其在ImageNet的实验结果后,TNT收到了广泛关注,也有人疑问TNT在更多任务,比如目标检测、图像分割上表现如何?因此,我们也持续演进,将TNT应用在检测分割任务上,用纯Transformer结构来更多视觉任务,其效果也是显示出优越性,比ViT、PVT等都更好一些。

论文:

Transformer in Transformerarxiv.org

开源代码:

huawei-noah/CV-Backbonesgithub.com图标

TNT网络结构

首先,回顾一下Transformer in Transformer的基础网络架构。如下图所示,我们将一张输入图片切分为多个图像块(视觉句子),每个视觉句子可以进一步划分为视觉单词。TNT在同一层使用内外两个transformer block分别对视觉单词和视觉句子进行特征提取和关系建模。视觉单词的特征会通过一个线性映射然后加到视觉句子的特征上,增强视觉句子在细粒度表达上的不足。最终,class token会把所有视觉句子的特征做一个汇总,作为整张图片的特征表示。

  • 纯transformer目标检测

我们用TNT作为Backbone,和DETR(End-to-end object detection with transformers)结合,构建了一个纯transformer结构的目标检测器。在COCO目标检测任务上,TNT要优于现有的DeiT和PVT等。

纯transformer图像分割

我们用TNT作为Backbone,和Trans2Seg(Segmenting transparent object in the wild with transformer)结合,构建了一个纯transformer结构的图像分割模型。在ADE20K图像分割任务上,TNT要优于现有的DeiT和PVT等。

代码解读

TNT的代码已经开源在:https://github.com/huawei-noah/CV-Backbones/tree/master/tnt\_pytorch

代码实现很简单,输入图片首先处理成Patch和sub-patches:

网络结构和原有ViT的区别在于使用TNT block代替原有block:

其余部分和原ViT保持一致。

    • -

END

原文:知乎
作者:kai.han

推荐阅读

更多嵌入式AI技术干货请关注嵌入式AI专栏。
推荐阅读
关注数
16511
内容数
1230
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息