【DETR】

news2024/12/26 10:37:19

img
https://tianfeng.space/

前言

论文 代码

DETR(Data-efficient Image Transformer)是一种用于目标检测任务的深度学习模型。它与传统的目标检测方法不同,采用了Transformer架构,将目标检测问题转化为一个序列到序列的问题。以下是DETR模型的一些关键特点:

  1. Transformer架构: DETR采用了Transformer架构,这是一种用于自然语言处理的架构,但在DETR中被用于图像处理。这种架构允许模型同时处理整个图像,而不是传统的滑动窗口或区域提议方法。

  2. 序列到序列:DETR将目标检测问题建模为一个序列到序列的问题,其中输入序列是图像的嵌入表示,输出序列是目标的嵌入表示。这种方法允许模型根据图像上的所有信息来预测目标。

  3. 位置嵌入: DETR引入了位置嵌入,用于指示目标在图像中的位置。这些位置嵌入与目标的嵌入结合起来,帮助模型预测目标的位置。

  4. 多头注意力: 模型使用多头自注意力机制,允许它关注不同位置的图像信息以预测目标的位置和类别。

  5. 无需锚框:与传统的目标检测方法不同,DETR不需要使用锚框(anchor boxes)或区域提议网络(Region Proposal Network)。它直接从输入图像中x生成目标框,这使得模型更简洁和易于训练。

框架解读

img

基本思想

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

先来个CNN得到各Patch作为输入,再套transformer做编码和解码编码路子跟VIT基本一样,重在在解码,直接预测100个坐标框。CNN 的特征提取部分没有什么可以说的,目标检测的图一般比较大,那么直接上 Transformer 计算上吃不消,所以先用 CNN 进行特征提取并缩减尺寸,再使用 Transformer 是常规操作。

DETR使用的典型值是C = 2048和H,W = H0 / 32,W0 / 32;C=2048 是每个 token 的维度,还是比较大,所以先经过一个 1 × 1 的卷积进行降维,然后再输入 Transformer Encoder 。此时自注意力机制在特征图上进行全局分析,因为最后一个特征图对于大物体比较友好,那么在上面进行 Self-Attention 会便于网络更好的提取不同位置不同大物体之间的相互关系的联系,然后位置编码是被每一个 Multi-Head Self-Attention 前都加入了的。

将ResNet提取的特征图转成特征序列后,图像就失去了像素的空间分布信息,所以Transformer就引入位置编码。把特征序列和位置编码序列拼接起来,作为编码起的输入。

img

整体网络架构

DETR 分为四个部分,首先是一个 CNN 的 backbone,Transformer 的 Encoder,Transformer 的 Decoder,最后的预测层 FFN。

DETR使用传统的CNN主干网络来学习输入图像的2D表示。该模型对其进行扁平序列化(大的卷积核和步长使其变成一个个patch,并行展开输入Encoder),并在将其传递到转换器编码器之前用位置编码对其进行补充。然后,转换器解码器将少量固定数量的学习位置嵌入作为输入,我们称之为对象查询,并额外处理编码器输出。我们将解码器的每个输出嵌入传递到共享前馈网络(FFN),该网络预测检测(类和边界框)或“无对象”类。(论文预测100框)

object queries是核心,让它学会怎么从原始特征找到是物体的位置

img

Encoder完成的任务

得到各个目标的注意力结果,准备好特征,等解码器来选秀

img

Decoder

输出层就是100个object queries预测编码器,解码器首先随机初始化object queries(0+位置编码,),先自己self attention学习一下;然后用解码器学到的q去查询编码的KV,通过多层让其学习如何利用输入特征。

输出的匹配

GT只有两个,但是预测的恒为100个,怎么匹配呢?匈牙利匹配完成,按照LOSS最小的组合,剩下98个都是背景。集合到集合的预测看起来非常直接,但是在训练的过程就会遇到一个问题,就是如何把预测出来的100个框与ground truth做匹配,然后得到损失。DETR就非常暴力,直接利用pd(predicttion)与gt(ground truth)按照最小权重做一对一匹配,剩余的框全部当做背景处理。

此权重的构成:

分类损失:这里分类损失是由直接softmax的值取出来的。举个例子:预测100个目标框,每个目标框有92个候选类别,经softmax输出后有out,shape=(100,92)。根据groundtruth的target标签假设(有20个),根据这些类别值直接作为索引值筛选出每个预测目标框的类别以及概率,最后剩下了=(100,20)的softmax的值。也就是说只把图片内存在的类别作为交叉熵损失的选择,然后用softmax来作为损失,由于1是常数,直接进行了一个省略。目标框的损失是将预测的目标框,与gt中每个目标框做L1损失,假设gt有20个目标框,就会产生200*20个损失值。同上,求IOU并取负做损失,损失加权求和作为总损失。

然后利用匈牙利匹配出目标框,将预测框的索引值和对应位置的gt目标狂的索引配对输出。其余的就直接抛弃。

该算法实现预测值与真值之间最优的匹配,并且是一一对应,不会多个预测值匹配到同一个ground truth上,这样就无需NMS后处理了。假设预测结果是N个,那么标注信息也要是N个,假设N=6,但真实标签2个,剩下的4个(标注如果小于N就用无物体信息去填充)标注信息都是用无类别来填充。

注意力起到的作用

这个注意力挺有意思,能不被遮挡,照样可以学出来(注意颜色)

img

细节

decoder中的位置肯定最重要了,这个得学习才行;每层都预测(Auxiliary);100个预测框之间可以相互通信,训练用了多个卡,

100个框各自要干啥

论文中可视化了其中20个,绿色是小物体,红蓝是大物体基本描述了各个位置都需要关注,而且它们还是各不相同的

img

额外证明

transformer不仅在检测领域好使,分割里照样行(感觉就像是让一群人去做分割,每个人做其中一块,最后合并一起)

img

img

简单使用

环境配置

下载代码

git clone https://github.com/facebookresearch/detr.git

下载pytorch和torchvision必须的

conda install -c pytorch pytorch torchvision

安装scipy和pycocotools

conda install cython scipy
pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'

数据集下载

https://cocodataset.org/#download

也提供网盘链接:https://pan.baidu.com/s/1RM_9Eip_-94eJtL23fEM5Q
提取码:icnt

分别为标注文件,训练集和测试集

path/to/coco/
  annotations/  # annotation json files
  train2017/    # train images
  val2017/      # val images

模型训练

python -m torch.distributed.launch --nproc_per_node=8 --use_env main.py --coco_path /path/to/coco

模型评估

python main.py --batch_size 2 --no_aux_loss --eval --resume https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth --coco_path /path/to/coco

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

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

相关文章

【广州华锐互动】VR消防队灭火实训:让消防安全教育变得更生动有趣!

VR消防队灭火实训是一种基于虚拟现实技术的消防培训及模拟,学习如何在火灾中保护自己的自救和逃生方法、技能。这种平台可以让市民在虚拟环境中进行火灾逃生训练,提高人的消防意识和自救能力。 传统的消防培训方式通常是通过理论讲解和现场演示来进行&am…

《论文阅读27》SuperGlue: Learning Feature Matching with Graph Neural Networks

一、论文 研究领域: 图像特征点匹配论文:SuperGlue: Learning Feature Matching with Graph Neural NetworksCVPR 2020veido论文code 二、论文简述 [参考] [参考] [参考] 三、论文详述 SuperGlue:使用图神经网络学习特征匹配 本文介绍了…

【AI视野·今日Sound 声学论文速览 第十一期】Mon, 25 Sep 2023

AI视野今日CS.Sound 声学论文速览 Mon, 25 Sep 2023 Totally 1 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Deepfake audio as a data augmentation technique for training automatic speech to text transcription models Authors Alexandre R. …

Hashable/哈希协议, Arrays/数组 的使用

1. Hashable 模型实现哈希协议 1.1 实现 /// Identifiable struct MyCustomModel: Hashable{//let id UUID().uuidStringlet title: Stringfunc hash(into hasher: inout Hasher) {hasher.combine(title)} }/// 哈希协议: 唯一标识值 struct HashableBootcamp: View {// 每个…

山西电力市场日前价格预测【2023-09-27】

日前价格预测 预测说明: 如上图所示,预测明日(2023-09-27)山西电力市场全天平均日前电价为342.48元/MWh。其中,最高日前电价为454.24元/MWh,预计出现在18: 30。最低日前电价为171.32元/MWh,预计…

2023 年度编程语言榜单排名揭晓,Python稳坐多项第一

随着科技的迅速发展,编程语言已成为现代社会不可或缺的一部分: 无论是网站开发、移动应用、人工智能还是嵌入式系统,编程语言都扮演着关键角色。 当下流行的AI人工智能大多是通过Python语言实现的。 作为AI技术框架的基础语言,…

华为OD机试 - 工号不够用了怎么办 - 双指针(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录 subprocess.Popen FILE warnings.catch_warnings site._Printer 这题很明显就是 SSTI了 源代码 我们试试看 {{7*7}} 然后我们就开始吧 原本我的想法是直接{{url_for.__globals__}} 但是回显是直接500 猜测过滤 我们正常来吧 {{"".__class__}} 查看当前…

项目经理如何顺利推进项目:做好任务规划,合理安排时间

在一个项目中,项目经理经常需面对超负荷的工作,并需要通过加班来达成每日的工作任务,他们时常需处理各种任务和大量的电子邮件。这导致项目经理在项目实施过程中,经常处于“救火”状态,而无法有效管理项目进程&#xf…

性能测试分类

一. 基准测试 二. 负载测试 通过逐步增加系统负载,测试系统性能的变化,在满足性能指标的前提下,系统所能承受的最大负载量的测试。 健身:举哑铃 10斤哑铃,举起10个需要15s 20斤哑铃,举起10个需要15s 30斤…

上海亚商投顾:沪指缩量调整 新型工业化板块掀涨停潮

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日缩量震荡调整,创业板指再度跌破2000点关口。新型工业化板块掀涨停潮,华辰装备…

SourceTree 账号或者密码输入错误 Incorrect username or password ( access token )解决办法

修改来修改去一直解决不了,那就试试查看一下源文件记录的账号密码吧!

聚势共赢!爱创科技喜获“腾讯健康年度优秀合作伙伴”!

2023年9月7日—8日,2023腾讯全球数字生态大会在深圳国际会展中心成功举办。来自行业的重磅院士学者、企业代表、生态伙伴等共赴大会,围绕“智变加速,产业焕新”这一活动主题进行了深层次、全方位的交流和探讨,共话大模型时代下数智…

华为智能企业上网行为管理安全解决方案(2)

本文承接: https://blog.csdn.net/qq_37633855/article/details/133339254?spm1001.2014.3001.5501 重点讲解华为智能企业上网行为管理安全解决方案的部署流程。 华为智能企业上网行为管理安全解决方案(2) 课程地址方案部署整体流程组网规划…

【云上探索实验室】编程范式变革进行时——CodeWhisperer实践全流程及测评分析报告

目录 一、基于LLM的辅助编程——编程范式变革进行时二、CodeWhisperer VS Code 安装与配置2.1、扩展安装2.2、配置 三、CodeWhisperer实践全流程3.1、CodeWhisperer基础实验3.2、CodeWhisperer项目实践——Web端宝可梦图鉴 四、CodeWhisperer测评分析报告4.1、功能性分析4.2、…

AI赋能的3D资产管理

推荐:用 NSDT编辑器 快速搭建可编程3D场景 想象一下,作为一名视频游戏设计师,你希望在游戏中使用 3D 龙模型。 以前,你可以通过两种方式执行此操作: 自己制作复杂的 3D 模型或从多个角度拍摄龙模型的照片。前往 3D 模…

远程计算机或设备不接受连接解决方法

远程计算机或设备不接受连接解决方法 点击左下角开始,点击运行,输入inetcpl.cpl,点击确定,打开Internet选项。 将三个框的勾勾去掉,即为不选中状态,点击确定。 当你的电脑浏览器不能正常上网时&#xff…

文件拖拽上传功能已经烂大街了,你还不会吗?

说在前面 🖼文件拖拽上传功能现在已经随处可见,大家应该都用过了吧,那么它具体是怎么实现的大家有去了解过吗?今天我们一起来实现一下这个功能,并封装一个拖拽上传组件吧。 效果展示 体验地址:http://jyeon…

typora+python打造舒适的文档写作环境

shigen的一大特点就是爱好折腾,今天上班的时候发现了一篇有趣的文章:TyporaMinIOPython代码打造舒适协作环境。开始还觉得不就这样吗?还在用minIO,shigen早就用上COS了!但是接下来的设置简直是美到天,直接在…

求求你们别学了,已经追不上了,JDK21已经发布了

目录 引言特性介绍2.1 字符串模版(预览版)2.1.1 在 Java 21 字符串拼接2.1.2 JDK 21 字符串模板 2.2 顺序集合*2.2.1 SequencedCollection 接口2.2.2 SequencedSet 和 SequencedMap 类 2.3 switch语句的改进2.4 Lambda表达式的新特性2.5 Structural Patt…