《DiffusionDet: Diffusion Model for Object Detection》阅读笔记

论文地址:https://arxiv.org/pdf/2211.09788

项目地址:GitHub - ShoufaChen/DiffusionDet: [ICCV2023 Best Paper Finalist] PyTorch implementation of DiffusionDet (https://arxiv.org/abs/2211.09788)

---------------------------------------------------------------------------------------------------------------------------------

动机和背景:

        动机展示如图。作者认为噪声到框的范式哲学类似于去噪扩散模型中的噪声到图像过程,这类模型通过学习去噪模型逐渐去除图像中的噪声来生成图像。 扩散模型在许多生成任务中取得了巨大成功,开始在感知任务如图像分割中进行探索。然而,据作者所知,尚无成功将其应用于目标检测的先例。

Is there a simpler approach that does not even need the surrogate of learnable queries?

        作者提出了DiffusionDet,这是一种新框架,它将目标检测表述为从噪声框到目标框的去噪扩散过程。

大致过程:

        从纯随机框开始,这些框不包含需要在训练阶段优化的可学习参数。作者期望逐渐细化这些框的位置和大小,直到它们完美覆盖目标物体。 这种噪声到目标框的方法既不需要启发式的目标先验,也不需要可学习的查询,进一步简化了目标候选框,并推动了检测流程的发展。

方法细节:

Preliminaries:
学习目标:

                                                输入-目标对(x, b, c)

其中x为输入图像,b和c分别为图像x中物体的一组边界框和类别标签。

                                                b_{i} = (c_{i}^x, c_{i}^y, w_{i}, h_{i})

其中(c_{i}^x, c_{i}^y)是边界框的中心坐标,(h_{i}, w_{i})分别是该边界框的宽度和高度。

Architecture:

        整个模型分为图像编码器检测解码器两部分,其中前者只运行一次,从原始输入图像x中提取深度特征表示,后者以该深度特征作为条件,而不是原始图像,从有噪声的盒子z_{t}中逐步细化盒子预测。

Image Encoder:

使用resnet或swin transformer作为图片特征提取器。使用FPN特征金字塔结构实现多尺度特征

Detection Decoder:

        借鉴了Sparse R-CNN。 将一组建议框作为输入,从生成的特征图中裁剪roi特征,然后将roi特征送入检测头,输出“边框和标签

        在训练阶段,DiffusionDet的这些建议框是从真实框(ground truth boxes)扰动而来的。

        在推理阶段,建议框是直接从高斯分布中采样的。

DiffusionDet与Sparse R-CNN的区别:
初始化框的不同:

        DiffusionDet在推理时从随机框开始,而Sparse R-CNN使用一组固定的学习框。

输入的不同:

        Sparse R-CNN的输入是建议框和对应的建议特征的对,而DiffusionDet只需要建议框

迭代评估:

        DiffusionDet可以在评估时迭代使用检测头,不同步骤共享参数,每一步通过时间步嵌入指定到扩散过程。这种方法称为迭代评估;Sparse R-CNN在前向传递中只使用一次检测解码器。

综上所述:

                初始化框的方式不同(随机框 vs. 固定框)。

                输入内容不同(仅建议框 vs. 建议框和建议特征)。

                评估方式不同(迭代评估 vs. 单次评估)。

Training:

Ground Truth Boxes Padding

背景:

        在现代目标检测基准中,不同图像中感兴趣的实例数量通常是不同的。

方法:

        为了使所有图像的框数量达到固定的N_{train},我们需要对真实框进行填充。填充策略有几种,包括重复已有的真实框、拼接随机框或图像大小的框。

结论:

        通过对比不同策略的效果,发现拼接随机框的效果最佳。

Box Corruption

方法:        

        在填充后的真实框上添加高斯噪声。噪声的尺度由\alpha _{t}控制,\alpha _{t}在不同时间步t中采用单调递减的余弦调度。

注意事项:

        真实框的坐标也需要进行缩放,因为信噪比对扩散模型的性能有显著影响。目标检测任务比图像生成任务更偏向于较高的信号缩放值

Training Losses

输入和输出:

        检测器以N_{train}个被corruption的框作为输入,预测N_{train}个类别分类和框坐标。

损失函数:

        在N_{train}预测集上应用集合预测损失。通过最优运输分配方法选择代价最小的前k个预测,分配给每个真实框。

Inference

Sampling step

噪声到物体框的去噪采样过程:

        推理过程从高斯分布中采样的框开始,模型逐步优化其预测结果。

采样步骤:

         输入:每个采样步骤中,随机框或上一个采样步骤估计的框被送入检测解码器,预测类别分类和框坐标。

        输出:得到当前步骤的框后,采用DDIM估计下一步骤的框。

注意事项:

        虽然也可以不使用DDIM,将预测的框直接发送到下一步进行优化,但这样会显著降低性能。

Box Renewal

框的分类:

        在每个采样步骤后,预测的框可以大致分为两类:期望的和不期望的预测。

        期望的预测:包含正确定位于相应物体的框

        不期望的预测:随机分布的框

框更新策略:

        问题:直接将不期望的框发送到下一采样迭代不会带来好处,因为它们的分布不是通过训练中的框腐化构建的。

        解决方案:通过用随机框替换这些不期望的框来更新它们。

        具体步骤: 过滤掉分数低于特定阈值的不期望的框。 将剩余的框与从高斯分布中采样的新随机框拼接。

Flexible Usage

灵活性:

        得益于随机框的设计,可以用任意数量的随机框和迭代次数来评估DiffusionDet,这些不需要与训练阶段相同。

对比:

        之前的方法依赖于训练和评估期间处理相同数量的框,且它们的检测解码器在前向传递中只使用一次。

Discussion

作者比较了DiffusionDet与之前的多阶段检测器(如Cascade R-CNN和其他近期工作)。主要区别在于:

参数共享:

        Cascade R-CNN的三个阶段不共享参数,并且在推理阶段仅使用一次。近期的一些工作也采用了类似的结构,但增加了更多阶段(通常为六个)。
重复使用检测头

        DiffusionDet的显著特点是能够在推理过程中多次重复使用整个检测头,从而实现性能提升。而之前的方法在大多数情况下通过重复使用检测头并未显著提升性能,或者只能实现有限的性能提升。

总体而言,DiffusionDet通过多次重复使用其检测头,展示出在性能提升方面的优势。

Experiments

该部分大家感兴趣可细看论文,实验部分非常精彩!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值