一、引入:
1、端到端:DETR模型的核心思想是将目标检测任务视为一个集合预测问题,通过编码器-解码器架构的Transformer模型来实现,避免了传统目标检测方法中需要的如NMS(非极大值抑制)等后处理步骤和锚点(anchor)。
2、提出一种全新的基于集合的损失函数:通过二分图匹配的方法强制模型输出一组独一无二的预测框,每个物体只会产生一个预测框,这样就将目标检测问题直接转换为集合预测的问题,所以才不用nms,达到端到端的效果;
3、而且在decoder输入一组可学习的object query和encoder输出的全局上下文特征,直接以并行方式强制输出最终的100个预测框,替代了anchor;
4、缺点:对大物体的检测效果很好,但是对小物体的检测效果不不好;训练速度慢
优点:在COCO数据集上速度和精度和Faster RCNN差不多;可以扩展到很多任务中,比如全景分割
二、基本流程
1、CNN提特征
2、特征拉直,送到encoder-decoder中,encoder作用:进一步学习全局信息,为近下来的decoder,也就是最后出预测框做铺垫
3、decoder生成框的输出,当你有了图像特征之后,还会有一个object query(限定了你要出多少框),通过query和特征在decoder里进行自注意力操作,得到输出的框(文中是100,无论是什么图片都会预测100个框)
4、loss :二分图匹配,计算100个预测的框和2个GT框的matching loss,决定100个预测框哪两个是独一无二对应到红黄色的GT框,匹配的框去算目标检测的loss
三、基于集合的目标函数
基于集合的目标函数怎么做,作者如何通过二分图匹配把预测的框和GT框连接在一起,算得目标函数
目标函数部分DETR模型最后输出是一个固定集合,无论图片是什么,最后都会输出n个(本文n=100)但DETR每次都会出100个输出,但是实际上一个图片的GT的bounding box可能只有几个,如何匹配?如何计算loss?怎么知道哪个预测框对应GT框?
a,b,c看成100个预测框,x,y,z看成GT框,损失矩阵未必都是正方形。损失矩阵的值应该放些什么?loss包含两部分:分类loss、出框的准确度
二分图匹配是图论中的一个概念,指的是在二分图中找到最大数量的边集合,这些边连接着两个不同的顶点集合,并且集合内的任何两条边都不共享顶点。这种匹配在许多领域都有应用,例如在任务调度、网络流优化等问题中。而匈牙利算法是解决二分图最大匹配问题的一种有效方法。
四、DETR的结构
Object Queries与Transformer Decoder的输出层的交互过程是模型的核心机制。
五、实验
主要是是消融实验
消融实验(Ablation Study)是科学研究中的一种方法,用于分析和评估模型中各个组成部分或特征对最终结果的影响。在机器学习和深度学习领域,消融实验通常涉及以下步骤:
基线模型:首先定义一个包含所有预期有效组件的基线模型。
修改模型:逐一或组合地修改模型的某些部分,例如移除一个层、改变超参数、替换一个特征或算法等。
评估影响:对修改后的模型进行评估,通常使用相同的数据集和评估标准。
分析结果:比较不同变体的模型性能,分析哪些修改对结果有正面或负面的影响。
得出结论:根据实验结果,确定哪些组件或特征是重要的,哪些可能不是必需的。
消融实验的目的是理解模型的工作原理,识别关键组件,并优化模型设计。通过消融实验,研究人员可以更好地理解不同因素如何影响模型的性能,从而做出更有信息的决策来改进模型。
水论文技巧:DETR太简单,没有使用比较好的目标检测头,所以在小物体上处理不是很好
DETR本质是使用object query替代以前的anchor机制,用二分图匹配替代NMS