当前位置:   article > 正文

DETR目标检测算法概述

detr目标检测算法

1、DETR目标检测算法

    DETR:端到端的使用transformers结构的目标监测算法。
    DETR把目标检测视作是一个集合预测的问题,假设一张图像中有N个object,那这N个object就是一个集合,DETR算法就可以一次性从图像中预测出这包含N个object的集合。之前的算法都要从最后得到的一堆预测框中做NMS,去删除冗余的预测框,或者需要手工的设计anchor,这就需要使用先验知识,例如设计anchor,anchor的尺寸高宽比等。

2、训练阶段

在训练阶段,首先将一张图像喂如DETR模型,会得到100个预测框,其中包含这100个预测框的类别信息和坐标信息(大部分图像中的object数量都不会超过100个)。通过标注信息知道,图像中包含两个object,然后使用匈牙利算法从预测出的100个候选框中删选出两个预测框,两个预测框和两个标注框是一一对应的关系。最后在使用筛选出的两个候选框和两个标注框,一起去计算损失,反向传播优化模型参数。

3、测试阶段

 在测试阶段同样得到100个预测框,将这100个预测框的置信度与类别置信度阈值进行对比,大于阈值的预测框进行保留,小于阈值的排除掉。

通过训练阶段框架和预测阶段框架可以知道,在DETR里是不用手动设置anchor的,也是用不到NMS的。

4、算法的两个关键点

算法中的两个重点,一个是损失函数,另一个是使用到了transformer框架。损失函数:是基于集合的损失函数,基于二分类匹配得到独一无二的预测结果。在训练阶段,通过匈牙利算法去解决这个二分图匹配问题,会得到和标注框一一匹配的独一无二的预测结果。

在transformer的decoder模块中设置了learn object queries,通过learn object queries  DETR就可以对object和图像的全局信息关系进行推理,并行的直接输出最终的预测结果。

从模型框架中可以得知,模型中包含CNN的backbone,positional encoding位置编码,transformer encoder decoder ,以及最后的MLP

在模型的decoder模块里,object queries是一个可学习的参数,同时也通过他的尺寸来指定输出的预测框的个数,在transformer中输出token个数是等于输入token个数的,将object queries 的个数设置为100,那么在输出就可以得到100个预测框。

原图像经过CNN的backbone和transformer的encoder之后,得到的是图像的全局信息,transformer的decoder模块就用于让object的预测框和图像的全局信息作自注意力操作,得到预测框的集合的输出。需要注意的是:decoder在生成输出的时候,token的计算是并行的(100个预测框的结果是并行计算得到的),这点和原始transformer的mask机制是不同的。在机器翻译中的transformer decoder模块是自回归预测,后面的预测需要依据前面的预测结果,具有顺序性。在做图像的目标检测任务时,图像的预测框是没有顺序性的,所以可以做到并行计算。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/434316
推荐阅读
  

闽ICP备14008679号