基于Transformer的端到端的目标检测 | 读论文

image.png

本文正在参加 人工智能创作者扶持计划

提及到计算机视觉的目标检测,我们一般会最先想到卷积神经网络(CNN),因为这算是目标检测领域的开山之作了,在很长的一段时间里人们都折服于卷积神经网络在图像处理领域的优势;再后来,随着图像领域的大神不断出现,结构简单且速度精度均有提升的目标检测网络也逐渐问世,并且版本的更迭使其应用优势越来越大,最有代表性的是YOLO,目前仍是目标检测的热门。然而,人们对于目标检测的方法仍然进行不断探索,今天就通过一篇基于Transformer的目标检测方法的论文,带领大家换个角度去看待目标检测问题。

论文地址:arxiv.org/pdf/2005.12…

代码地址:github.com/facebookres…

image.png

Transformer

Transformer是第一个完全依赖于自注意力机制来计算其输入和输出的表示的转换模型。Transformer的本质上是一个 Encoder-Decoder 架构。左边的是编码器结构,右边的是解码器结构。结构示意图如下。

image.png

DETR

DETR的简介

DETRDetection Transformer,是Facebook AI的研究者提出的Transformer的视觉版本,可以用于目标检测,也可以用于全景分割。这是第一个将Transformer成功整合为检测pipeline中心构建块的目标检测框架。与之前的目标检测方法相比,DETR有效地消除了对许多手工设计的组件的需求,例如非最大抑制、Anchor生成等。

DETR的流程

  1. 通过一个CNN对输入图片抽取特征,然后将特征图降维,加上位置编码拉直输入Transformer。

  2. Transformer Encoder部分就是使得网络更好地去学习全局的特征;

  3. 使用Transformer Decoder以及Object Query从特征中学习要检测的物体;

  4. 将Object Query的结果和真值进行二分图匹配(Set-to-Set Loss),最后在匹配上的结果上计算分类Loss和位置回归Loss。

DETR的结构

image.png

DETR的网络结构如上图所示,由四个主要模块组成:backbone,编码器,解码器以及预测头。其中backbone是一个卷积网络,提取特征并将其降维到d×HWspatial positional encoding将位置信息编码到特征中,使得模型能够更好地理解物体之间的空间关系。DETR使用了两个Transformer模块,分别作为编码器和解码器。其中编码器用于处理输入特征,解码器用于处理输出特征。DETR使用了一个全连接层来进行分类。

下面具体介绍一下各个模块的作用。

backbone

DETR使用ResNet作为backbone提取图片特征,同时会使用一个1×1的卷积进行降维到d×HW。因为transformer的编码器模块只处理序列输入,所以后续还需要把CNN特征展开为一个序列。

spatial positional encoding

image.png

式中,PE为二维矩阵,大小跟输入embedding的维度一样,行表示词语,列表示词向量;pos表示词语在句子中的位置;dmodel表示词向量的维度;i表示词向量的位置。因此,上述公式表示在每个词语的词向量的偶数位置添加sin变量,奇数位置添加cos变量,从而来填满整个PE矩阵,然后concatenate送到编码器中。简要概括就是将位置信息编码到特征中,使得模型能够更好地理解物体之间的空间关系。

transformer

DETR使用了两个Transformer模块,分别作为编码器和解码器。其中编码器用于处理输入特征,解码器用于处理输出特征。结构图如下:

image.png

与原始Transformer的不同之处在于,DETR在每个解码器层并行解码N个对象,由于解码器也是排列不变的,N个输入嵌入必须是不同的,以产生不同的结果。这些输入嵌入是习得的位置编码,我们称之为object queries,与编码器类似,我们将它们添加到每个注意层的输入中。

N个object queries由解码器转换为output embedding。然后,它们被FFN独立解码为盒坐标和类标签,产生N个最终预测。该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够使用整个图像作为上下文。

FNN

最后的 Bounding Box FFN 是由具有ReLU激活函数的3层线性层计算的。 Class FFN是由一个线性层计算的。 FFN预测框标准化中心坐标,高度和宽度,使用softmax 函数激活获得预测类标签。所以DETR使用了一个全连接层来进行分类。

二分图匹配

image.png

DETR预测了一组固定大小的 N = 100 个边界框,为了解决预测框和真实标注框匹配的问题,使用匈牙利算法进行二分图匹配,即对预测集合和真实集合的元素进行一一对应,使得匹配损失最小。

该算法实现预测值与真值之间最优的匹配,并且是一一对应,不会多个预测值匹配到同一个ground truth上。假设预测结果是100个,那么标注信息也要是100个,标注如果小于100就用无物体信息去填充。

LOSS函数

image.png

分类损失:交叉熵损失函数

检测框位置损失:L1损失和IOU损失的加权和,且Iou的计算采用了GIOU损失

DETR的优势

DETR相对于Faster-RCNN具有更简单的架构,更小的网络(参数方面),更高的吞吐量和更快的训练。此外,DETR是基于Transformer架构的,该架构自2017年以来已经“革命化”了自然语言处理。其中一个主要优点是其全局计算和完美记忆,这使得它们比RNN更适合处理长序列。

总结

这篇论文主要介绍了一种名为“DEtection TRansformer”(DETR)的新框架,它使用了一种基于集合的全局损失,通过二分图匹配强制进行唯一预测,并使用transformer编码器-解码器架构。DETR可以在挑战性的COCO物体检测数据集上展示与Faster RCNN基线相当的准确性和运行时性能。此外,DETR可以轻松地推广到以统一的方式生成全景分割。

其它

论文中还提到了其他的,比如目标检测的实现细节之类的,以及其在不同数据集上的实现效果,感兴趣的可以自己去看一下论文。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文 | REACT: SYNERGIZING REASONING AND ACTING INLANGUAGE MODELS

本文首先认为,到目前为止,LLM 在语言理解方面令人印象深刻,它们已被用来生成 CoT(思想链)来解决一些问题,它们也被用于执行和计划生成。 尽管这两者是分开研究的,但本文旨在以交错的方式将推理…

JSP入门基础

JSP入门基础 软件开发环境这门课程的复习资料 Web开发技术概述 URL的组成部分 协议、主机DNS名或IP地址和文件名 Tomcat服务器 Tomcat服务器的默认端口号是8080 概念 软件开发环境是围绕着软件开发的一定目标而组织在一起的一组相关软件工具的有机集合 JSP和HTML的区别…

SPE连接器技术革新汽车制造业

概述 新的SPE标准在汽车制造业中的应用正日益受到重视,它不仅推动了汽车通信技术的革新,还对汽车性能测试方法产生了深远影响。本文将详细探讨SPE标准在汽车制造业中的应用案例分析,以及它对供应链的挑战与机遇。 SPE标准在汽车制造业中的应…

[leetcode]subarray-product-less-than-k 乘积小于K的子数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int numSubarrayProductLessThanK(vector<int>& nums, int k) {if (k 0) {return 0;}int n nums.size();vector<double> logPrefix(n 1);for (int i 0; i < n; i) {logPrefix[i 1] …

揭秘!chatGPT核心技术应用

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年11月7日&#xff0c;OpenAI首届开发者大会被称为“科技界的春晚”&#xff0c;吸引了全球广大…

prometheus回顾(2)--如何使用Grafana对接Prometheus数据源的详细过程,清晰易懂。

文章目录 Grafana简介什么是GrafanaGrafana 能做什么&#xff1f;什么时候我们会用到Grafana?Prometheus有图形化展示&#xff0c;为什么我们还要用Grafana? 环境操作步骤一、Grafana安装二、Grafana数据源Prometheus添加三、Grafana添加数据仪表盘补充、如何查找仪表盘 Graf…

在Linux下直接修改磁盘镜像文件的内容

背景 嵌入式Linux系统通常在调试稳定后&#xff0c;会对磁盘&#xff08;SSD、NVME、SD卡、TF卡&#xff09;做个镜像&#xff0c;通常是.img后缀的文件&#xff0c;以后组装新设备时&#xff0c;就将镜像文件烧录到新磁盘即可&#xff0c;非常简单。 这种方法有个不便之处&a…

Oracle学习笔记

Oracle 一、简介&#xff1a; 特点&#xff1a; 多用户、大事务量的事务处理 数据安全性和完整性控制 支持分布式数据处理 可以移植性 Oracle 19c 安装 登录甲骨文&#xff0c;安装Oracle 解压压缩包 安装 完毕 此处账户&#xff1a;qfedu 密码&#xff1a;wang8218.…

染色法判定二分图

什么是二分图&#xff1f; 二分图&#xff0c;也称作二部图&#xff0c;是图论中的一种特殊模型。在一个无向图G(V,E) 中&#xff0c;如果顶点集合 V 可以被分割成两个互不相交的子集 A 和 B&#xff0c;并且图中的每条边 (i,j) 关联的两个顶点 i 和 j 分别属于这两个不同的顶…

LeetCode(2)合并链表、环形链表的约瑟夫问题、链表分割

一、合并链表 . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct …

C++入门基础篇(下)

目录 6.引用 6.1 引用的特性 6.2 const引用 7.指针和引用的关系 8.内联函数 9.nullptr 6.引用 引⽤不是新定义⼀个变量&#xff0c;⽽是给已存在变量取了⼀个别名&#xff0c;编译器不会为引⽤变量开辟内存空间&#xff0c; 它和它引⽤的变量共⽤同⼀块内存空间。比如&a…

【Vue3】使用vite创建vue项目

一、安装Nodejs 参考文章https://blog.csdn.net/DX390609/article/details/140305585?spm1001.2014.3001.5502 二、创建项目 在要创建的目录下打开命令行输入&#xff1a; npm create vuelatestvue项目创建成功&#xff1a; 三、安装vue插件 vscode打开项目文件夹&…

谷歌个人开发者账号14天封测审核通过技巧,你还不知道吗?

众所周知&#xff0c;目前在Google play应用商店上架应用已经不是那么容易了&#xff0c;谷歌各种政策的更新以及审核系统的升级&#xff0c;给开发者们带来了不少挑战。 尤其针对个人开发者账号需要20人连续14天的封测的要求&#xff0c;周期长&#xff0c;且随着政策执行力度…

31_JQuery一文读懂,JS的升级版

今日内容 零、 复习昨日 一、JQuery 零、 复习昨日 1 js数组的特点(长度,类型,方法) - js数组的长度不限 - 类型不限 - 提供很多方法2 js中和的区别 - 判断数值相等 - 判断数值和数据类型同时相等3 js表单事件的事件名(事件属性单词) - 获得焦点 onfocus - 失去焦点 onblur …

Qt开发 | Qt模型视图代理(Model-View-Delegate)

文章目录 一、Qt MVD概念讲解二、Qt模型视图代理之&#xff1a;QTableView的使用三、Qt模型视图代理之&#xff1a;QListView的使用 一、Qt MVD概念讲解 Qt MVD&#xff08;Model-View-Delegate&#xff09;是Qt框架中的一种设计模式&#xff0c;是Qt中用界面组件显示与编辑数据…

深入解析C++11:现代特性和应用

目录 一.c11.简介二.列表初始化和initializer_list1.列表初始化2.initializer_list 三.简化声明1.auto2.decltype 四.新增容器1.array2.forward_list3.unordered_map/set 五.右值引用与移动语义1.左值和右值2.左值引用3.右值引用4.移动构造和移动赋值5.万能引用和引用折叠6.完美…

git-工作场景

1. 远程分支为准 强制切换到远程分支并忽略本地未提交的修改 git fetch origin # 获取最新的远程分支信息 git reset --hard origin/feature_server_env_debug_20240604 # 强制切换到远程分支&#xff0c;并忽略本地修改 2. 切换分支 1. **查看所有分支&#xff1a;**…

mount卡住(失败)解决方案

mount -a卡主 第一步确保两边都打开了NFS服务&#xff01;&#xff01;&#xff01;&#xff01; 客户端执行mount -av 查看信息是拒绝服务 查看服务端&#xff1a;showmount -e 192.168.25.168 看提示信息处理&#xff0c;关闭两端的防火钱 遇到这个错误就是服务端不让客户端…

JAVA--SpringCloud

SpringCloud基础 为什么需要spring cloud 单体结构--Monolith 首先请回想一下我们所开发的服务是什么样子的。通常情况下&#xff0c;这个服务所对应的代码由多个项目&#xff08;模块&#xff09;所组成&#xff0c;各个项目会根据自身所提供功能的不同具有一个明确的边界。…

C++类与对象-基础篇

目录 一、什么是类 1.1 语法定义 1.2 访问限定符 1.3 类域 二、类的实例化 2.1 什么是实例化 2.2 类的大小 三、this指针 3.1 引入 3.2 this指针的使用 一、什么是类 1.1 语法定义 class 类名 {}; 说明 类似于C语言中的结构体&#xff0c;括号后分号不能丢类内成员可…