ViT:1 从DETR说起

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于构建生产级别架构则可以关注AI架构设计专栏。技术宅麻烦死磕LLM背后的基础模型。

卷积神经网络目前在不同的计算机视觉图像识别任务中处于领先地位。而Transformer模型已成为自然语言处理 (NLP) 中的翘楚。GPT-4o,Gemini和Llama3都是基于Transformer架构的大语言模型,主要都是依托于Transformer架构中的注意力机制。

Vision Transformers (ViT) 最近成为卷积神经网络 (CNN) 的有力替代品。在计算效率和准确性方面,ViT模型的表现几乎比目前最先进的CNN高出 4 倍。

Vision Transformer

Vision Transformer (ViT) 是一种突破性的神经网络架构,它重新构想了我们处理和理解图像的方式。Vision Transformer (ViT) 模型于 2021 年在 ICLR 2021 上发表的一篇会议研究论文“An Image is Worth 16*16 Words: Transformers for Image Recognition at Scale”中引入。

受Transformers 在自然语言处理中成功的启发,ViT 通过将图像划分为更小的块并利用自注意力机制,引入了一种分析图像的新方法。这使模型能够捕获图像中的局部和全局关系,从而在各种计算机视觉任务中取得令人印象深刻的性能。

我们表明,这种对 CNN 的依赖是不必要的,直接应用于图像块序列的纯 Transformer可以在图像分类任务中表现得非常好。当对大量数据进行预训练并转移到多个中型或小型图像识别基准(ImageNet、CIFAR-100、VTAB 等)时,Vision Transformer (ViT) 与最先进的卷积网络相比取得了出色的结果,同时训练所需的计算资源却少得多。

虽然 Transformer 架构已成为涉及自然语言处理 (NLP)的任务的标配,但其与计算机视觉 (CV)相关的用例仍然很少。在许多计算机视觉任务中,注意力机制要么与卷积神经网络(CNN) 结合使用,要么用于替代卷积网络的某些方面。流行的图像识别算法包括ResNet、VGG、YOLOv3、YOLOv7或YOLOv8以及Segment Anything (SAM)。

传统的CNN架构

ViT最近在图像分类、对象检测和语义图像分割等多个计算机视觉应用的基准测试中取得了极具竞争力的性能。CSWin Transformer已经超越了 Swin Transformer等先前最先进的方法。

在基准测试任务中,CSWIN 取得了优异的性能,包括在 ImageNet-1K上 85.4%的Top-1准确率、在COCO检测任务上53.9 box AP and 46.4 masks AP,以及在ADE20K语义分割任务上52.2 mIOU。

ViT与卷积神经网络 (CNN) 在的关键不同点在于:

  • 输入表示:CNN直接处理原始像素值,但ViT将输入图像分成多个块(patch)并将其转换为Token。

  • 处理机制:CNN使用卷积层和池化层的堆叠来捕获不同空间尺度的特征。ViT主要是采用自注意力机制来考虑所有块(patch)之间的关系。

  • 全局把控:ViT本质上通过自我注意力来捕捉全局背景,有助于识别远距离Patch之间的关系。CNN依靠池化层来获取粗略的全局信息。

  • 数据依赖:CNN通常需要大量标记数据进行训练,而ViT可以从对大数据集进行预训练然后对特定任务进行微调。

DETR

2020年5月的DETR是一种最先进的深度学习框架,利用Transformer网络进行端到端对象检测。DETR背后的关键思想是将目标检测视为预测问题。DETR不单独预测图像中对象的边界框和类标签,而是将对象检测视为二分匹配问题,它同时预测固定数量的物体及其位置。然后使用Hungarian Algorithm将这些预测与地面真实物体进行匹配进行损失计算。

对于一张图像,DETR首先用预训练的CNN网络(例如ResNet50)提取图像的特征,再把由CNN网络得到的多通道特征图转化为Transformer接收的Token序列。输入序列的每个Token都会带上位置编码。

上述得到的Token序列先进入encoder模块,encoder模块主要通过自注意力机制进一步学习图像的特征。Transformer具有强大的特征提取能力,在encoder中每个token可以学习到其和所有token的相关性。

可以说经过encoder的每个token注意到了图像的全局信息。上图展现某个token序列的注意力地图,其中黄色代表高权重,蓝色代表低权重。通过观察到,encoder还是学习到了图像中各个实例的大致分割。

DETR输出的内容是固定的,假设为M个槽口。它是Decoder输出再接FFN网络进行固定的集合预测。

每个槽口由两个组件组成:

  • 一个边界框拥有的坐标来标识边界框。

  • 一个类别(例如大象,但也可以是空的)

在DETR中,注意到蓝色,橙色,绿色和红色的方块,它们是Object Queries(对象查询)。这些Query是固定数量的在训练过程中学习到的向量。这些向量没有先验的空间信息,即它们最初不包含任何位置信息。相反,它们通过与输入图像特征和位置编码进行交互来学习空间信息和语义信息。这些查询向量在训练过程中通过反向传播逐步学习到关于目标对象的位置和类别的信息。

初始化时,Object Queries是N个固定长度的可学习向量(通常为256维)。N是超参数,预设定的检测框数量。

DETR把目标检测做成了一个集合预测的问题,并利用匈牙利匹配算法来解决decoder输出的对象和真实对象之间的匹配问题,进而计算结果差异以便更新参数。下图展示了两次训练步骤中,不同参数对应的物体会动态变化,因此损失函数的设计就尤为重要。

DETR是首个将Transformer框架用于目标检测任务的模型。其将目标检测视作一个集合预测问题。近年来涌现了许多对于DETR模型的改进工作,如Deformable-DETR、DAB-DETR、DN-DETR等,使得DETR类模型的效率和性能不断提高。2023年4月的论文“DETRS Beat YoLos on Real-time Object Detection”中提出的RT-DETR模型,其性能超过了YoLov8,进一步展现了DETR类模型在目标检测任务上的潜力和优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/642521.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索微软Edge开发者工具:优化前端开发的艺术与科学

探索微软Edge开发者工具:优化前端开发的艺术与科学 引言:Edge开发者工具概览一、基础操作:步入DevTools的大门1.1 启动与界面布局1.2 快速导航与定制 二、元素审查与样式调整2.1 精准元素选取2.2 实时CSS编辑2.3 自动完成与内联文档 三、Java…

Spring Web MVC(2)

响应 Http响应的结果可以是数据也可以是静态页面可以针对响应设置状态码 Header信息 返回静态页面注解RestController和Controller 我们创建一个前端页面 package com.example.demo.demos.web.controller;import org.springframework.web.bind.annotation.RequestMapping; i…

【C++】<图形库> 三人成棋(面向对象写法)

目录 一、游戏需求 二、程序架构 三、代码实现 四、实现效果 五、已知BUG 一、游戏需求 构建一个五子棋游戏,在自定义棋盘宽度和高度的基础上,实现三人对战功能,并且能判定谁输谁赢。 二、程序架构 (1) 对象分析: 【1】 需…

Kata Containers零基础学习从零到一

文章目录 docker和Kata Containers的区别Docker容器共享宿主机内核每个容器实例运行在轻量级虚拟机(MicroVM)总结 通俗例子Kata Containers架构实际Kata Containers架构图解容器技术栈总结 agent和shim家长(shim进程)的角色保姆&a…

【开源】多语言大型语言模型的革新:百亿参数模型超越千亿参数性能

大型人工智能模型,尤其是那些拥有千亿参数的模型,因其出色的商业应用表现而受到市场的青睐。但是,直接通过API使用这些模型可能会带来数据泄露的风险,尤其是当模型提供商如OpenAI等可能涉及数据隐私问题时。私有部署虽然是一个解决…

【CSP CCF记录】201909-1 小明种苹果

题目 过程 #include<bits/stdc.h> using namespace std; int N,M; long long tree[1010]; int main() {cin>>N>>M;long long result0,max0;//result剩余苹果&#xff0c;max最大疏果个数 int id0;//id最大疏果的果树编号 for(int i1;i<N;i){long long b0…

手把手一起学习Python NumPy

NumPy 是用于处理数组的 python 库&#xff0c;NumPy 中的数组对象称为 ndarray&#xff0c;它提供了许多支持函数&#xff0c;使得利用 ndarray 非常容易。Numpy官方网址 NumPy 安装 使用pip安装NumPy 模块&#xff1a; pip install numpyNumPy 入门 创建numpy数组&#x…

Qt 在windows下显示中文

Qt在windows平台上显示中文&#xff0c;简直是一门玄学&#xff0c;经过测试&#xff0c;有如下发现&#xff1a; 1&#xff0c; 环境&#xff1a;Qt 5.15.2 vs2019 64位 win11系统 默认用Qt 创建的文件使用utf-8编码格式&#xff0c;此环境下 中文没有问题 ui->textE…

当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!

一、写在开头 依稀记得多年以前的一场面试中&#xff0c;面试官从Java并发编程问到了锁&#xff0c;从锁问到了原子性&#xff0c;从原子性问到了Atomic类库&#xff08;对着JUC包进行了刨根问底&#xff09;&#xff0c;从Atomic问到了CAS算法&#xff0c;紧接着又有追问到了…

用本地大模型(llama3)进行数据分类标记|LLM 用例

001&#xff5c;背景 这是我最新发布的导航站点 https://aiwith.me 这个站点由于第一版数据来源于第三方&#xff0c;只有站点基础数据&#xff0c;没有对数据进行分类&#xff0c;最近站点上线了&#xff0c;主体框架都搭建完成了&#xff0c;这才有空去对数据做分类. 目前的…

USART串口通信(stm32)

一、串口通信 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 STM32F103C8T6 USART资源&#xff1a; USART1、 USART2、 USART3 自带波特率发生器&…

数据结构:二叉树与树

一 树的基本概念&#xff1a; 1.树的形状&#xff1a; 2.树的定义&#xff1a; 树是一种非线性的数据结构&#xff0c;它是n(n > 0)个结点的有限集。当n 0时&#xff0c;称为空树。在任意一棵非空树中应满足&#xff1a; 2.1 有且仅有一个特定的称为根的结点。 2.2 当n …

【React】Ant Design 5.x版本table scroll滚动条样式自定义

新版里table的滚动条样式由:scrollbar-width、scrollbar-color接管&#xff0c;导致之前的伪类方式失效&#xff01; 环境 antd: ^5.14.1react: ^18 解决方案&#xff1a; 若想延续伪类方式修改滚动条样式&#xff0c;可以在定义伪类样式文件里加入以下片段&#xff1a; .a…

什么是JDK21虚拟线程

JDK21虚拟线程 1. 来一段小故事2. 什么是虚拟线程3. 虚拟线程的几个关键特点4.细说关键特点1.为什么轻量级的1.传统线程运行时间2.虚拟线程运行时间3.对垃圾回收的影响 2.非绑定OS线程的魅力所在3.和传统相比为何易于使用4.阻塞优化有什么好处1.什么是阻塞优化2.JDK 21虚拟线程…

配置docker阿里云镜像地址

一、安装docker的步骤&#xff1a; 1.yum install -y yum-utils 2.yum-config-manager --add-repo http://mirrors.aliyun.com/docker- ce/linux/centos/docker-ce.repo --配置阿里云仓库3.yum makecache fast4.yum install docker-ce -y5.docker version …

【LVGL_Linux安装NXP的Gui-Guider】

GUI Guider是恩智浦为LVGL开发了一个上位机GUI设计工具&#xff0c;可以通过拖放控件的方式设计LVGL GUI页面&#xff0c;加速GUI的设计。 虽然他只支持自家芯片&#xff0c;但是应用层我们可以直接拿来用作其他MCU上。 GUI-Guider 下载 NXP官网下载&#xff1a;链接&#xff1…

关于sklearn决策树手动指定节点进行剪枝调整的实现

一、决策树剪枝 决策树的剪枝方式有两种&#xff0c;预剪枝和后剪枝&#xff0c;后剪枝在python的sklearn方法中提供了CCP代价复杂度剪枝法&#xff08;Cost Complexity Pruning&#xff09;具体实现代码如下&#xff1a; # -*- coding: utf-8 -*- from sklearn.datasets imp…

AI模型抉择:开源VS闭源,谁主沉浮?

AI模型抉择&#xff1a;开源VS闭源&#xff0c;谁主沉浮&#xff1f; &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &am…

软件设计师备考 | 案例专题之数据库设计 概念与例题

相关概念 关注上图中的两个部分&#xff1a; 概念结构设计 设计E-R图&#xff0c;也即实体-联系图。 工作步骤&#xff1a;选择局部应用、逐一设计分E-R图、E-R图合并。进行合并时&#xff0c;它们之间存在的冲突主要有以下3类&#xff1a; 属性冲突。同一属性可能会存在于…

如何通过OpenHarmony的音频模块实现录音变速功能?

简介 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;是由开放原子开源基金会孵化及运营的开源项目&#xff0c;是面向全场景、全连接、全智能时代的智能物联网操作系统。 多媒体子系统是OpenHarmony系统中的核心子系统&#xff0c;为系统提供了相机、…