基本思想
先通过CNN得到各个Patch作为输入,再通过Transformer做编码,编码和VIT结构一致,重在解码,直接预测100个坐标框。(100是先验值)
整体网络架构分析
1. 先进行backbone,通过CNN得到patch对应的向量加上位置编码。通过transformer得到多个特征
2. decoder先初始化100维度向量,利用encoder得到的特征来重构100维向量,即object querieds是核心,encoder提供的是k,v,decoder提供的是q。decoder是并行运行的。
3. 再通过全连接层预测对应的值。
位置信息初始化query向量
为什么一定要用transformer提取特征,是因为能够提供各个目标的注意力结果,得到好特征,知道哪个地方是物体哪个是背景。能够让解码器更清楚的知道应该询问哪个向量。能让模型知道物体关注的区域在哪。
输出层就是100个object queries预测
解码器首先随机初始化object queries(通过0+位置编码进行初始化,也就是通过位置信息进行初始化)通过多层让其学习如何利用输入特征。
decoder中
1. 先进行自注意力机制,让自己的query向量初始化后的向量进行注意力机制,让特征学习的更好
2. 再进行注意力机制,引入了encoder的k,v向量,并将初始的q向量和第一步得到的q向量与k,v注意力计算,重构q向量。
注:这里没有transformer中的mask机制,因为要并行计算,传统的transformer因为要预测下一个特征的关系,所以不能提供下一个q类似于透题。
输出的匹配
GT只有两个,但是预测的框为100个,通过匈牙利匹配完成,按照LOSS最小的组合,剩下98个都是背景。