Detr论文详解

目标检测 DETR–潘登同学的深度学习笔记

前言

  • faster-rcnn系列(15年),基于proposal,anchor
  • YOLO(16年),基于anchor,做回归
  • 都使用NMS做proposal的过滤

而DETR不采用上面的思想,转而使用CNN + Transformer的方式来进行目标检测。

DETR的基本思想

  • 编码过程与VIT基本一致,先说VIT

在整体的实现上,原文完全使用原始bert的transformer结构,主要是对图片转换成类似token的处理,原文引入了一个patch的概念,即将输入图片划分为一个个的patch,然后对于每一个patch转换(主要是flatten操作),转换成类似bert的输入结构。整体的框架如下图所示:
在这里插入图片描述

假设输入图片大小是224x224,如果每个patch的大小是16x16,那么就有196个patch。然后将16x16x3的patch展平成 196 ∗ 768 196*768 196768的输入向量。然后经过一个768x768的FC层,然后在[cls]的位置也有相同长度(1x768)的token,然后将位置的embedding向量与197x768的输入对应相加,输入到transformer中;(这是patch embedding的方法,而还有hybrid的方法,就是先对原图做卷积池化得到14x14的feature map,将feature map展平得到196xC的,再接一层全连接,得到196x768的输入)

  • 解码过程,直接预测100个坐标框(定死的)

decoder的输入就是初始化100个向量,输出也是100个向量,接FC层,得到向量分别表示框的位置,以及框的所属类别(与机器翻译的串行结构不同,这是并行的)

整体网络架构

在这里插入图片描述

Enocder学到了什么?

  • Encoder学到了物体的位置信息,以及前景背景信息,准备好特征,等待Decoder选择

在这里插入图片描述

Decoder怎么初始化?

  • Decoder使用全0对向量做初始化100x768的向量,在全零基础上加上位置编码(100个位置)

Decoder与NLP中Decoder中的区别

  • 不需要做Mask

GT与预测输出的匹配问题?

  • 对于上上图来说,GT只有两个而预测出来的有100个,论文是通过匈牙利算法(目标追踪常用)进行匹配的,具体来说,就是GT与预测目标框进行匹配,目标函数是,匹配好后计算的Loss函数最小(包括回归loss和分类loss)

自注意力机制在重叠目标的表现

DETR的论文中有这些图,成功的把重叠很严重的物体区分开,其中与框颜色相同的表示自注意力关注的位置,可以看出即使是重叠现象如此严重,transformer也能将他们区分开;

在这里插入图片描述

训练的技巧

与Inception一样,为了让Encoder的每一层都能学习到与目标检查相关的信息,在每一层的位置都接了一个FC输出结果进行训练;(Inception是为了解决梯度消失问题,这里更多是为了让模型表现地更好,因为transformer本身有LN层,有残差skip-connection思想)

在这里插入图片描述

因为DETR就是很简单粗暴,所以能讲的东西也不多了…

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PD我是你的真爱粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值