论文地址:https://arxiv.org/pdf/2107.12292.pdf

源代码地址:https://github.com/JDAI-CV/CoTNet

前言

具有自注意力的Transformer引发了自然语言处理领域的革命,最近还激发了Transformer式架构设计的出现,并在众多计算机视觉任务中取得了具有竞争力的结果。

如下是之前我们分享的基于Transformer的目标检测新技术!

链接:利用TRansformer进行端到端的目标检测及跟踪(附源代码)

链接:YOLOS:通过目标检测重新思考Transformer(附源代码)

尽管如此,大多数现有设计直接在2D特征图上使用自注意力来获得基于每个空间位置的独立查询和键对的注意力矩阵,但未充分利用相邻键之间的丰富上下文。在今天分享的工作中,研究者设计了一个新颖的Transformer风格的模块,即Contextual Transformer (CoT)块,用于视觉识别。这种设计充分利用输入键之间的上下文信息来指导动态注意力矩阵的学习,从而增强视觉表示能力。从技术上讲,CoT块首先通过3×3卷积对输入键进行上下文编码,从而产生输入的静态上下文表示。

上图(a)是传统的self-attention仅利用孤立的查询-键对来测量注意力矩阵,但未充分利用键之间的丰富上下文。

上图(b)就是CoT块

研究者进一步将编码的键与输入查询连接起来,通过两个连续的1×1卷积来学习动态多头注意力矩阵。学习到的注意力矩阵乘以输入值以实现输入的动态上下文表示。静态和动态上下文表示的融合最终作为输出。CoT块很吸引人,因为它可以轻松替换ResNet架构中的每个3 × 3卷积,产生一个名为Contextual Transformer Networks (CoTNet)的Transformer式主干。通过对广泛应用(例如图像识别、对象检测和实例分割)的大量实验,验证了CoTNet作为更强大的主干的优越性。

2

背景

Attention注意力机制与self-attention自注意力机制

  • 为什么要注意力机制?

在Attention诞生之前,已经有CNN和RNN及其变体模型了,那为什么还要引入attention机制?主要有两个方面的原因,如下:

(1)计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。

(2)优化算法的限制:LSTM只能在一定程度上缓解RNN中的长距离依赖问题,且信息“记忆”能力并不高。

  • 什么是注意力机制

在介绍什么是注意力机制之前,先让大家看一张图片。当大家看到下面图片,会首先看到什么内容?当过载信息映入眼帘时,我们的大脑会把注意力放在主要的信息上,这就是大脑的注意力机制。

同样,当我们读一句话时,大脑也会首先记住重要的词汇,这样就可以把注意力机制应用到自然语言处理任务中,于是人们就通过借助人脑处理信息过载的方式,提出了Attention机制。

self attention是注意力机制中的一种,也是transformer中的重要组成部分。自注意力机制是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。自注意力机制在文本中的应用,主要是通过计算单词间的互相影响,来解决长距离依赖问题。

3

新框架

1、Multi-head Self-attention in Vision Backbones

在这里,研究者提出了视觉主干中可扩展的局部多头自注意力的一般公式,如上图(a)所示。形式上,给定大小为H ×W ×C(H:高度,W:宽度,C:通道数)的输入2D特征图X,将X转换为查询Q = XWq,键K=XWk,值V = XWv,分别通过嵌入矩阵 (Wq, Wk, Wv)。 值得注意的是,每个嵌入矩阵在空间中实现为1×1卷积。

局部关系矩阵R进一步丰富了每个k × k网格的位置信息:

接下来,注意力矩阵A是通过对每个头部的通道维度上的Softmax操作对增强的空间感知局部关系矩阵Rˆ进行归一化来实现的:A = Softmax(Rˆ)。将A的每个空间位置的特征向量重塑为Ch局部注意力后矩阵(大小:k × k),最终输出特征图计算为每个k × k网格内所有值与学习到的局部注意力矩阵的聚合:

2、Contextual Transformer Block

传统的自注意力很好地触发了不同空间位置的特征交互,具体取决于输入本身。然而,在传统的自注意力机制中,所有成对的查询键关系都是通过孤立的查询键对独立学习的,而无需探索其间的丰富上下文。这严重限制了自注意力学习在2D特征图上进行视觉表示学习的能力。

为了缓解这个问题,研究者构建了一个新的Transformer风格的构建块,即上图 (b)中的 Contextual Transformer (CoT) 块,它将上下文信息挖掘和自注意力学习集成到一个统一的架构中。

3、Contextual Transformer Networks

ResNet-50 (left) and CoTNet50 (right)

ResNeXt-50 with a 32×4d template (left) and CoTNeXt-50 with a 2×48d template (right).

4

实验及可视化

探索上下文信息的不同方式的性能比较,即仅使用静态上下文(Static Context),只使用动态上下文(Dynamic Context),线性融合静态和动态上下文(Linear Fusion),以及完整版的CoT块。 主干是CoTNet-50和采用默认设置在ImageNet上进行训练。

在ImageNet数据集上的Inference Time vs. Accuracy Curve

上表总结了在COCO数据集上使用Faster-RCNN和Cascade-RCNN在不同的预训练主干中进行目标检测的性能比较。 将具有相同网络深度(50层/101层)的视觉主干分组。 从观察,预训练的CoTNet模型(CoTNet50/101和CoTNeXt-50/101)表现出明显的性能,对ConvNets 主干(ResNet-50/101和ResNeSt-50/101) 适用于所有IoU的每个网络深度阈值和目标大小。 结果基本证明了集成self-attention学习的优势使用CoTNet中的上下文信息挖掘,即使转移到目标检测的下游任务。

ResNet超强变体:京东AI新开源的计算机视觉模块相关推荐

  1. ResNet超强变体CoTNet!一种新的Transformer计算机视觉模块!

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:Sophia知乎 https://zhuanlan.zhihu.com/p/400411057 AI博士笔记系 ...

  2. bottleneck resnet网络_关于ResNet及其变体的总结(上)

    ResNet作为卷积神经网络的一个里程碑式的模型一直在各个领域被应用,因此学习这样一个模型架构很有必要.网上也有很多关于这个网络的介绍,也从中衍生了很多改进的模型(无论改动幅度大小).因此,有必要就R ...

  3. 深度解析ResNet及其变体

    一:前言(问题由来) 在讲resnet之前我们需要知道resnet的由来,以及到底在解决什么问题,然后才是如何解决问题,最终才是工业化实现.本篇文章需要一定的resnet基础,新手可以多看看基础再来. ...

  4. CNN终于杀回来了!京东AI开源最强ResNet变体CoTNet:即插即用的视觉识别模块

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 转载自丨极市平台    作者丨happy 导读 本文创造性的将Transformer中的自注意力机制的动态上 ...

  5. ResNet及其变体概述

    利用ResNet强大的表征能力,不仅是图像分类,而且很多其他计算机视觉应用(比如物体检测和面部识别)的性能都得到了极大的提升. 自从ResNet在2015年震惊学术界产业界后,许多研究界的专家人员就开 ...

  6. 岗位推荐 | 京东AI研究院招聘计算机视觉算法实习生

    PaperWeekly 致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁.如果你需要我们帮助你发布实习或全职岗位,请添加微信号「pwbot02」. 我们是京东集团-人 ...

  7. ResNet及其变体结构梳理与总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 [导读]2020年,在各大CV顶会上又出现了许多基于ResNet改 ...

  8. 【卷积神经网络结构专题】ResNet及其变体的结构梳理、有效性分析

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要20分钟 Follow小博主,每天更新前沿干货 [导读]2020年,在各大CV顶会上又出现了许多基于ResNet改进的工作,比如:Res2Ne ...

  9. 【致敬ImageNet】ResNet 6大变体:何恺明,孙剑,颜水成引领计算机视觉这两年

    文章写得挺好,故转载来. http://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2652001197&idx=1&sn=42 ...

最新文章

  1. TCP/IP 10.1集成IS-IS协议
  2. JS事件冒泡机制和兼容性添加事件
  3. PHP里10个鲜为人知但却非常有用的函数
  4. python中str是什么函数_python str函数怎么用
  5. c语言网络定向拉取数据,用C模拟了一个http请求,但是recv函数接收的数据不完整且欠安顺序获取信息...
  6. java对世界各个时区(TimeZone)的通用转换处理方法
  7. runtime消息转发机制
  8. VisualDiffer for Mac(文件对比利器)支持m1
  9. java面向接口编程详解
  10. Google登录授权详细过程
  11. 安卓自动滑屏脚本_自动滑屏软件下载-自动滑屏 安卓版v3.1.0-PC6安卓网
  12. hdmi接口线_HDMI接口不可以传输音频吗?带你快速了解HDMI接口
  13. Wine运行微信和QQ进行完善,直接打开接收到的文件
  14. vrops vRealize Operations Manager 8云管平台部署与配置
  15. 知乎美女挖掘指南--Python实现自动化图片抓取、颜值评分
  16. Flash 实验 球体旋转效果 引导层
  17. layer ajax返回成功 关闭窗口,layer.msg()自动关闭后刷新页面
  18. 基于FPGA的数字视频信号处理器设计(下)
  19. 京东服装数据分析及决策树建立
  20. python 打印倒三角九九乘法表

热门文章

  1. mysql 命令大全
  2. VMWare不能安装64位操作系统原因探析
  3. oracle的cols,Oracle cols_as_rows 比对数据
  4. linux换服务器登录插件,Linux服务器登录、注销 用户和用户组管理
  5. php上传gif木马如何执行,php – 阻止人们通过注射上传GIF的方法?
  6. vue商品列表滚动效果_如何处理前端超长列表
  7. java获取keyvault_利用KeyVault来加强存储Azure Storage访问密钥管理
  8. 计算机图形学三大应用领域,计算机图形学作业
  9. android中的定时任务一般有两种机制,android 定时任务
  10. c语言bim的题目,求助:几道简单C语言程序小题