主流目标检测算法劣势
YOLO系列,它基于anchor来做,少不了要用MNS,导致速度相对较慢。
 但今天介绍一款DETR,基于VIT的目标检测算法。
 那么我们需要先深入过一遍VIT。
Vision transform
1、传统RNN网络的问题
单向:只考虑之前的输入
 双向:过去和未来的信息都可以参考,但是比如x1默认影响最大的是X0和X2。但是对X1影响最大的也可能是过去未来某个细节,比如X100,X1000等等。
2、vit在做什么事情——Encoder
1、把①号不好的特征转变为②号好的特征。这种楞次分明的特征可以让模型学习的更好。
  2、传统词向量Word2vec的问题:同样的词在不同语境中保持不变。
2、传统词向量Word2vec的问题:同样的词在不同语境中保持不变。
 3、transform会结合上下文考虑词语的信息,会一直更新词向量。
 4、注意力机制attention,self-attention。it在不同语境中代表不同事物。
 
 it是什么意思,需要结合上下文,而每个上下文词汇都会提供一个贡献值,0-1之间,表示他与it的联系。那么贡献值是怎么计算的呢?
 
 词语向量的内机为0代表完全不关,内机为1表示“兄弟”。
 那么可以把这个词向量X1分解为:Q、K、V。
 Q:抛出一个问题
 K:别人会问你,你答应别人的时候要给别人看的东西,
 V:表示自身
当X1和自己计算 :Q1K1
 当X1和X2计算时候:Q1K2
那么我们如何产生QKV呢?并且是的他们是可以训练的。也就是QKV不是凭空产生的,而是训练得到的。它与X1,X2有联系。
V在做什么呢?
 通过学习,更好的理解自己。V表示实际的特征信息。
 
 词的顺序会不会导致特征发生变化?
 比如“我打你”和“你打我”当中的“我”是否是同一个特征。那么我们知道“我”的特征是Q/K/V,那么这个QKV是不变的。三个字关系不变,因此特征。但你打我和我打你并不是一回事!!
因此产生了位置信息表达,位置编码,在向量的维度上加一个维度信息。
 
 最后如何做到自注意力
 
 多次堆叠self-attention,使得输出特征提取更为完善。
 4,6,8,10层数,Chatgpt特别多层。
3、vit在做什么事情——Decoder
1、本质:多分类任务。
 2、如何decoder:由decoder的特征出Q询问,encoder提取的特征提供应答向量K和本身特征V。
 3、Q1和Qn之间测关系是无法见到的,因为decoder不可以以未来信息为依据,不然就是不符合实际情况了——mask机制
 
 MLP输出层
 
VIT整体结构
:FFN其实就是一个MLP
 
词(input)->词向量(input embedding)->Positional Encoding(位置编码)。



















