欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > DETR一文理解

DETR一文理解

2025/5/10 11:39:54 来源:https://blog.csdn.net/qq_51659249/article/details/144316165  浏览:    关键词:DETR一文理解

Introduction

(1)CNN提取视觉特征,拉直

(2)transformer encoder的作用:进一步学习全局信息,为decoder出预测框做铺垫,也就是说图片上每一个像素点(特征)都会和其他点特征有交互,对于同一个物体,就应该只出一个框,而不是出很多框,全局特征有利于移除冗余的框。

(3)Transformer decoder出预测框,结合object query,限定要出多少个框,query和特征不做自主一操作,得出最终的框。

(4)匹配GT,集合预测的问题,用二分图匹配的方法算loss,将出来的100个预测框与GT算loss,没有匹配到GT的框就会被标记成背景类。

推理的时候前三步抑制,第四步的时候不需要loss,设置一个置信度,大的被留下啦,小的被丢弃。

对于大物体效果比较好,小物体效果不太好。取得了与Fast R-CNN comparable的结果,在大物体上预测结果好,小物体上预测结果差,也为后续工作留下改进空间。

半年之后Deformable DETR就出来了,大大提升了效果。

Related Work

集合预测:不需要NMS,直接生成目标预测的集合

DETR主要的两个特点

  • Set-based loss:基于集合的预测方法
  • Recurrent detectors

Method

Object detection set prediction loss

DETR首先根据object query生成一个固定数量(文中N = 100)的bounding box,到这里其实和之前proposal或anchors似乎差不多,但有一个很重要的方法:DETR中认为一个object只会出现在一个bounding box中,因此使用一对一的匹配方式,所以直接使用匈牙利算法(scipy包里的linear_sum_assignment函数计算)就可以得到最佳匹配,而避免了nms过程。

  • 别预测错误:预测类别与真实类别不匹配的惩罚。
  • 边界框误差:预测框与真实框之间的重叠度(通过0种损失函数计算)

 代码:

Experiments

 Encoder:可以把实例很清楚的分开

 Decoder:

  可以看出Encoder的作用主要是将object尽量分开,而Decoder则负责将每个object边缘较难部分进行处理,Object query看出每一个query都负责图片中的一部分检测,同时也学习到COCO数据集的一个pattern。

Object query:绿色的点代表小的bounding box,红色的点代表大的横向的bounding box,蓝色的点代表竖向的大的bounding box,跟anchor有些像,anchor是提前定义好了bounding box,最后把预测跟提前定好的bounding box做对比,而object query是一个可以学习的东西,每一次给他一个图片,都会问左下角有没有比较小的物体呀,有没有看到中间大的横向的物体呀之类的问题,这100个query就像100个问问题的人一样,每个人都有自己问问题的方式,

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词