• DAB-DETR源码最全讲解


    一: 创新点

    在我看来,是在Conditional-DETR的基础上的延伸,这一“流派”主要针对content_q和pos_q做了许多tricks。DAB在Conditional的基础上,加上了w,h回归框的思想,reference_points由(x, y)变为了(x, y, w, h),并且在decoderLay中一次次修正。

    对于Conditional-DETR还不太了解的小伙伴,可以移步到Contional-DETR源码浅析这篇文章。下面对DAB-DETR的源码进行讲解,不久后还会发布2022-CVPR中的DN-DETR论文讲解。

    二:源码讲解

    • DABDETR模块

    对于主模块,只有一个核心重点:self.refpoint_embed = nn.Embedding(num_queries, query_dim),比如是[batchsize, 10, 4],直接对num_queries个box预测框进行offest预测。传统的一些DETR网络都是设置的self.query_pos:[batchsize, 10, hidden_dim],这是最大的亮点

    因为它,outputs_coords的生成和以往有一点点不同,DAB-DETR是将输出结果和(x,y,w,h)进行的相加,而以往的都是对(x, y)进行的相加,原因就是该网络一直预测的是对整个回归框的修正offset,以前只是修正固定不变的reference_points,也就是x,y。

    并且需要注意的是!!在decoder中,self.bbox_embed也是需要进行的,而不是只在DABDETR模块最后进行。因为经过每一层decoderLayer后,都要更新reference_points,然后用新生成的reference_points来生成query_sine_embedquery_pos!!这也是第二大亮点每一层decoder都要更新reference_points

    下面展示DABDETR模块源码:

    在这里插入图片描述

    • decoder模块
      transformer模块中的encoder模块比较普通,就是最基本的self-attention,输出memory。重点就是decoder模块,先看源码:

    在这里插入图片描述在这里插入图片描述这里的decoder和conditional-DETR中的decoder最大区别:由代表offset的self.references_embed向量,来推出query_pos和query_sine_embed,并且还能随着Layer层不断更新,十分灵活!是第一个天秀细节

    以往是通过query_pos推出reference_points,然后再由reference_points推出query_sine_embed,同时利用每层output推出的transformation_matrix微调query_sine_embed,最后输入进decoderlayer。

    第二个天秀细节,是利用output生成(batchsize, num_queries, 2),其中的2表示w和h的相对坐标,和reference_points中3、4索引(也就是w,h)作比较,得到变换系数后,调节query_sine_embed中的h, w(默认前一半是负责h的特征,后一半是负责w的特征)。算上由output生成的,且也用来微调query_sine_embedpos_transformation系数矩阵,decoder中利用output对query_sine_embed进行了两次微调操作!!

    第三个天秀细节,就是每层decoderLayer的输出output,都会进行self.bbox_embed(output)操作,得到相对于当前reference_points的offset,然后更新reference_points。下一次的decoderLayer就会以这次更新后的reference_points来重新生成query_sine_embed和query_pos等,真正做到了灵活多变!!!!

    最后展示一下decoderLayer模块源码,中规中矩,和conditional-DETR一模一样。

    • decoderLayer模块

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    肖sir__mysql之索引__010
    想考【软考高级】,但不具备计算机基础?“系规”适合你
    安装ubuntu后第一件事
    生成树欺骗攻击与防御策略
    【Linux】Ubuntu 20.04 深度学习 GPU 环境配置(CUDA Toolkit 11.7 + cuDNN v8.4.1)
    [Vue2]实现点击下拉筛选table组件
    单点登录和分布式登入用户状态储存
    尚硅谷设计模式学习(十三)代理模式
    祖冲之序列密码算法高性能硬件实现关键技术研究
    XTU-OJ 1169-最大子段和
  • 原文地址:https://blog.csdn.net/weixin_43702653/article/details/126287711