赞
踩
在训练阶段,首先将一张图像喂如DETR模型,会得到100个预测框,其中包含这100个预测框的类别信息和坐标信息(大部分图像中的object数量都不会超过100个)。通过标注信息知道,图像中包含两个object,然后使用匈牙利算法从预测出的100个候选框中删选出两个预测框,两个预测框和两个标注框是一一对应的关系。最后在使用筛选出的两个候选框和两个标注框,一起去计算损失,反向传播优化模型参数。
在测试阶段同样得到100个预测框,将这100个预测框的置信度与类别置信度阈值进行对比,大于阈值的预测框进行保留,小于阈值的排除掉。
通过训练阶段框架和预测阶段框架可以知道,在DETR里是不用手动设置anchor的,也是用不到NMS的。
算法中的两个重点,一个是损失函数,另一个是使用到了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模块是自回归预测,后面的预测需要依据前面的预测结果,具有顺序性。在做图像的目标检测任务时,图像的预测框是没有顺序性的,所以可以做到并行计算。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。