代码: 代码
目录
摘要 Abstraction
成果: 新的目标检测框架 D i f f u s i o n D e t DiffusionDet DiffusionDet
框架原理: 将目标检测建模成从噪声框(noisy boxes)到 目标框(object boxes)的去噪扩散(denosing diffusion)过程
- 训练阶段:目标框会从真值框(ground-truth boxes)扩散到随机分布(random distribution)——不断向真值添加噪声,模型则学习如何逆转这这个过程——有噪声的->真值
- 推理阶段:模型将一组随机生成的目标框逐步细化为输出结果
发现:
1. 随机框虽然与预定义锚(pre-defined anchors)或learned queries有很大不同,但也是有效的候选对象
2. 目标检测是为感知任务(perception tasks)的典型之一,也可以通过生成的方式(generative way)来解决
1 引言 Introduction
目标检测 Object detection :
1. 定义:能够在一幅图像中识别出目标对象,并以边界框(bounding boxes)包含该目标以及给出该目标的类别标签(category labels)
2. 作用: 作为的计算机视觉的基础,目标检测已成为其他识别场景的基石(cornerstone),如实例分割(instance segmentation)、姿态估计(pose estimation)、动作识别(action recognition)、目标跟踪(object tracking)、视觉关系检测(visual relationship detection)
目标检测背景: 现代目标检测方法随着目标检测对象的发展而发展,例如从empirical object priors到 learnable object queries
- empirical object priors:基于先验知识定义目标检测对象,利用代理回归模块(surrogate reegression)和分类模块来进行检测——目标数量和形状固定;如滑动窗口(sliding windows),区域建议(region proposals),锚框(anchor boxes),和参考点(reference points)等
- learnable object queries:可以通过学习确定目标检测对象——数量固定;DETR
注:
- 我要抽时间去看看 D E T R DETR DETR以及经典的 T r a n f o r m e r Tranformer Tranformer
- 必须得搞懂 Q u e r y Query Query这个是啥:图像特征+位置编码
- 还必须搞懂 l e a r n a b l e q u e r y learnable query learnablequery这个是个啥:位置信息,并提供给 Q u e r y Query Query
【参考】 https://zhuanlan.zhihu.com/p/560513044
【参考】https://www.modb.pro/db/520523
动机:
- 上述方法仍存在需要人为定义目标检测对象(数量、形状)的问题
- 受扩散模型中的 n o s i e − t o − i m a g e nosie-to-image nosie−to−image启发:如下图(b)中所示,通过学习好的(训练好的)去噪模型逐步去除图像中的噪声
想法: 类似于 n o s i e − t o − i m a g e nosie-to-image nosie−to−image 提出了 n o i s e − t o − b o x noise-to-box noise−to−box 方法:如图(c),从一些列随机框中逐步恢复目标框——逐步细化随机框的大小和位置
- 具体想法: 使用扩散模型进行目标检测:将检测转换为边界框(bounding box)空间上——位置(中心坐标)和大小(宽度和大小)的生成任务(generative task)
- DiffusionDet工作流程:
- 训练阶段:
首先
,向GT(ground truth)框中添加由 v a r i a n c e s c h e d u l e variance schedule varianceschedule生成的高斯噪音得到噪声框(noisy box)【感觉就是生成了随机框】;然后
,噪声框用来在骨干编码器(backbone encoder)得到的感兴趣区域(Region of Interest,ROI)的特征区域裁剪出特征(crop features);最后
,裁剪得到的ROI上的特征送入到检测解码器(detection decoder),该解码器被训练用来预测无噪的GT框—— 训练后,模型已经能够从随机框中预测出无噪的GT框 - 推理阶段:模型通过逆转已学习的扩散过程生成边界框,这个过程会调整边界框上的先验噪声分布到已学习的分布【?adjusts a noisy prior distribution to the learned distribution over bounding boxes】
- 训练阶段:
DiffusionDet优势: 具有 o n c e − f o r − a l l once-for-all once−for−all的优势——可以对网络进行一次训练,并在不同的设置下使用相同的网络参数进行推理
- D y n a m i c s b o x e s Dynamics \ boxes Dynamics boxes: 将随机框作为候选目标对象,DiffusionNet 解耦了训练和评估:训练时使用 N t r a i n N_{train} Ntrain个随机框,评估时使用 N e v a l N_{eval} Neval个随机框,其中,并不要有两者相等
- P r o g r e s s i v e r e f i n e m e n t Progressive \ refinement Progressive refinement: 扩散模型通过多次迭代(iterative)来改善DiffusionNet;还能通过调整去噪采样数来提高检测精度或加快推断速度——这种灵活性可以使得模型适应不同的检测场景
实验:
- 数据集:MS-COCO、LVIS
- backbone: ResNet-50、Swin-Base
- 横向对比 : Faster R-CNN 、 DETR 、Sparse R-CNN
- 纵向 + 横向对比 : 改变采样次数、迭代次数
贡献:
- 将目标检测任务转换为生成式的去噪过程(generative denoising process)——是第一个将扩散模型应用于目标检测的研究
- 提出的 n o i s e − t o − b o x noise-to-box noise−to−box的优势明显:①解耦训练和评估;②是一个逐步细化的过程,灵活性高
- 效果好
2 相关工作 Related Work
-
目标检测 Object detection
当今大多数目标检测方法是基于先验知识定义目标检测对象而执行框回归(box regression)和类别分类(category classification);最近提出的DETR通过设定固定的 l e a r n a b l e q u e r i e s learnable queries learnablequeries【位置信息】进行目标检测而引起了业界广泛的兴趣
-
扩散模型 Diffusion model
做为一类深度生成模型:扩散模型从具有随机分布的样本开始并通过逐渐降噪过程恢复数据
扩散模型最近在计算机视觉(computer vision)、自然语言处理(nature language processing)、音频处理(audio processing)、扩学科领域(interdisciplinary applications)已经实现了显著的结果 -
在感知任务中使用扩散模型 Diffusion model for perception tasks
- 扩散模型在图像生成上取得巨大成果,其潜力还有待继续开发
- 扩散模型已经用在图像分割上,作者分析到此类任务的处理形式 i m a g e − t o − i m a g e image-to-image image−to−image,在概念上跟接近于图像生成任务
- 扩散模型在目标检测还未有先例,作者分析到此类任务是个集合预测的问题,需要向GT目标分配检测对象(requires assigning object candidates to ground truth objects)
3 方法 Approach
3.1 预备知识 Preliminaries
-
Object detection
学习目标 (learning objective):- 输入目标对(input-target pairs) ( x , b , c ) (x,b,c) (x,b,c) —— x x x为输入图像, b b b和 c c c是一个关于目标检测对象边界框(bounding boxes)和类别标签的集合(set)—— 一个图像可能有若干个检测对象
- 集合内的第 i i i个框(box)定义为 b i = ( c x i , c y i , w i , h i ) b^i = (c_x^i,c_y^i,w^i,h^i) bi=(cxi,cyi,wi,hi),其中 ( c x i , c y i ) (c_x^i,c_y^i) (cxi,cyi)为边界框的中心坐标(center coordinates), ( w i , h i ) (w^i,h^i) (wi,hi) 是边界框的宽和长(width and height)
-
Diffusion model
扩散模型是一类受非平衡热力学(nonequilibrium thermodynamics)启发的基于可能性(likelihood-based)的模型:马尔科夫链(nonequilibrium thermodynamics)定义了扩散前馈过程(diffusion forward process),这个过程会不断向样本数据据添加噪声- 加噪阶段
q ( z t ∣ z 0 ) = N ( z t ∣ α ˉ t z 0 , ( 1 − α ˉ t ) I ) q(z_t|z_0) = \Nu (z_t | \sqrt{\bar{\alpha}_t} z_0, (1-\bar{\alpha}_t )I) q(zt∣z0)=N(zt∣αˉtz0,(1−αˉt)I)
z 0 z_0 z0为数据样本, z t z_t zt为生成的随时间变化的噪声样本——不断向 z 0 z_0 z0添加噪声, t ∈ { 0 , 1 , . . . , T } t \in \{0,1,...,T\} t∈{0,1,...,T}
α ˉ t \bar{\alpha}_t αˉt= ∏ s = 0 t α s \displaystyle \prod^{t}_{s=0}{{\alpha}_s} s=0∏tαs = ∏ s = 0 t ( 1 − β s ) \displaystyle \prod^{t}_{s=0}{(1-{\beta}_s)} s=0∏t(1−βs) , β s {\beta}_s βs为噪声方差表(noise variance schedule) - 训练阶段
L t r a i n = 1 2 ∣ ∣ f θ ( z t , t ) − z 0 ∣ ∣ 2 L_{train} = \dfrac{1}{2}||f_\theta(z_t,t)-z_0||^2 Ltrain=21∣∣fθ(zt,t)−z0∣∣2
f θ ( z t , t ) f_\theta(z_t,t) fθ(zt,t)为神经网络:用来从 z t z_t zt预测 z 0 z_0 z0,训练过程是最小化预测值与真实值的误差——损失 L 2 L_2 L2 - 推理阶段
通过 f θ f_\theta fθ和一个更新规则(updating rule)以迭代的方式从 z t z_t zt重建 z 0 z_0 z0,例如
z T → z T − Δ → . . . → z 0 z_T \to z_{T- \Delta} \to ... \to z_0 zT→zT−Δ→...→z0
- 加噪阶段
-
DiffusionDet中的设置
- 数据样本设定为一系列边界框 : z 0 = b , b ∈ R N × 4 z_0 = b,b\in \Reals^{N \times 4} z0=b,b∈RN×4
- f θ ( z t , t , x ) f_\theta(z_t,t,x) fθ(zt,t,x)被训练用来从噪声 z t z_t zt预测 z 0 z_0 z0,同时预测标签 c c c
3.2 架构 Architecture
- 由于扩散模型会以迭代的方式重建样本,意味着它需要在推理阶段多次运行神经网络 f θ f_\theta fθ。但是,如果在每次迭代中直接将 f θ f_\theta fθ应用于原始图像(raw image),这在计算上是难以处理的
- 因此,作者将这个模型分为了两个部分: i m a g e e n c o d e r image \ encoder image encoder 和 d e t e c t i o n d e c o d e r detection \ decoder detection decoder,前者只运行一次用于从原始图像中提取深度特征,后者将深度特征而不是图像做为条件,渐进地从 z t z_t zt中进行预测
-
图像编码器 I m a g e E n c o d e r Image \ Encoder Image Encoder:
- 原始图像作为输入,提取其高级特征(high-level fratures),后续送入到检测解码器
- ①卷积神经网络(Convolutional Neural Networks)如ResNet ;
- 或者②Transformer-based models如 Swin + FPN(Feature Pyramid Network)
- 其中,FPN可以用于生成多尺度特征图(multi-scale feature maps)
-
检测解码器 D e t e c t i o n d e c o d e r Detection decoder Detectiondecoder:
- 随机框作为输入,从图像编码器生成的特征图中裁剪出ROI特征(RoI-feature),接着检测头(detection head)根据此计算出目标框坐标和分类结果(box regression and classification results)
-
D
i
f
f
u
s
i
o
n
D
e
t
DiffusionDet
DiffusionDet中的解码器与
S
p
a
r
s
e
R
−
C
N
N
Sparse R-CNN
SparseR−CNN的不同点:
- 前者输入是随机框;后者使用固定个数的框(learned boxes)
- 前者输入只需要框;后者需要框和对应的特征组成的输入对
- 前者在迭代的采样过程中重复使用检测头(detector head),并且不同过程中共享参数;后者只是用一次检测头
3.3 训练 Training
训练过程:
- 利用iamge_encoder 提取特征图
- 向GT框中加入噪声,满足高斯分布
- 在某个时间 t t t上根据 特征图 和噪声框预测GT框
- 计算模型优劣:预测值与真实值
- G r o u n d t r u t h b o x e s p a d d i n g Ground \ truth \ boxes \ padding Ground truth boxes padding: 每幅图像上感兴趣的目标是不同的,这里会先扩充GT框(实际感兴趣的目标个数),保证最终框的总和为 N t r a i n N_{train} Ntrain; 填充策略有:repeating existing ground truth boxes, concatenating random boxes(实验最好) or image-size boxes
-
B
o
x
c
o
r
r
u
p
t
i
o
n
Box \ corruption
Box corruption:
- 即噪声【corruption代表图像中局部的自然的杂质】,此外向扩充后的GT框中添加的噪声为高斯噪声(Gaussian noises)
- 添加的噪声由 α t \alpha_t αt控制, α t \alpha_t αt随时间变化,变化规律符合单调递减的余弦(monotonically decreasing cosine schedule)
- 因为信噪比(signal-to-noise ratio)对扩散模型的性能有重要影响,所需在加噪前还需对GT框的坐标进行放缩
-
T
r
a
i
n
i
n
g
l
o
s
s
e
s
Training \ losses
Training losses:
- 检测器以加噪框作为输入,以框坐标和类别作为输出
- 模型优劣以损失作为衡量,其中一个GT对应K个预测值,预测值的选择通过 o p t i m a l t r a n s p o r t a s s i g n m e n t optimal \ transport \ assignment optimal transport assignment方法选取成本最小的前K个预测值
3.4 推理 Inference
推理过程:
- 利用emage_encoder 计算特征图
- 根据加噪后的高斯分布中恢复加噪框——normal
- 利用detection_decoder根据特征图和加噪框预测当前时间T的框坐标和分类结果
- 利用ddim还原上一个时间点T-1的框
- 利用box_renewal消除置信度比较低的不符合期望的框
-
S a m p l i n g s t e p Sampling \ step Sampling step:
- 每次采样,上一次采样后的随机框被送入到检测解码器(detection decoder)中来预测GT框坐标和对象类别——重建的过程
- 在预测后,会使用 D D I M DDIM DDIM(denoising diffusion implicit models)来优化预测结果,优化后作为下一轮重建的输入
- Jiaming Song, Chenlin Meng, and Stefano Ermon. Denoising diffusion implicit models. In International Conference on Learning Representations, 2021
- https://zhuanlan.zhihu.com/p/563661713
-
B o x r e n e w a l Box \ renewal Box renewal:
- 每次采样后,得到的预测结果又可以分为期望的和不期望的,其中,期望的预测包含了GT
- 如果直接将期望的和不期望的结果一并送入下一轮采样迭代,对模型并没有好处,因为不期望的预测也只是从预测过来的,而不是训练阶段加噪构造出来的
- 为了让推理阶段更好匹配训练阶段,首先会根据一个阈值过滤一些不期望的预测值,然后将剩下的预测值同新的加噪后的随机框连接起来,送入到下一轮
-
O n c e − f o r − a l l Once-for-all Once−for−all: 仅需一次训练,模型即适用于多种测试设定:1)任意数量的预测框;2)任意数量的采样步数
4 实验 Experiments
4.1 实施细节 Implementation Details
- 训练阶段设置
- backbone : ResNet 和 Swin
- detection decoder: Xavier init
- 训练优化器:AdamW —— 学习率learning rate: 2.5 × 1 0 − 5 2.5 × 10^{−5} 2.5×10−5;权重衰减weight decay: 1 0 − 4 10^{−4} 10−4
- batchsize:16
- GPU:8
- 迭代次数: MS-COCO 使用450K,其中350K-420K时,学习率需要除以10;LVIS使用 210K, 250K, 270K
- 数据增强策略(Data augmentation strategies):随机水平翻转(andom horizontal flip)、调整输入图像大小的尺度抖动(scale jitter of resizing the input images)
- 推理阶段设置
- 输入是高斯随机盒(Gaussian random boxes)
- 更新策略根据MS-COCO和LVIS的不同分别采用 前100和前300个预测值
- NMS将每个采样步骤的预测集合在一起,得到最终的预测(The predictions at each sampling step are ensembled together by NMS to get the final predictions)
4.2 主要性质 Main Properties
主要性质: o n c e t r a i n i n g f o r a l l i n f e r e n c e c a s e s once \ training \ for \ all \ inference \ cases once training for all inference cases,即仅需一次训练,模型即适用于多种测试设定:1)任意数量的预测框;2)任意数量的采样步数
4.3 基准测试 Benchmarking on Detection Datasets
设置: 在MS-COCO和LVIS数据集上将DiffusionDet与以前的方法进行比较——训练和推理都采用500个随机框
4.4 消融实验 Ablation Study
设置: 数据集为MS-COCO;主干网为ResNet-50,并加上FPN;训练和推理的随机框都为300
参考: https://blog.csdn.net/wjpwjpwjp0831/article/details/127973262