DETR类型检测网络---思考和Tricks测试

本文探讨了batch_size大小、辅助损失在深度学习模型中的作用,以及学习率调整和Decoder层数对3D检测性能的影响。实验结果显示,适当调整这些参数能提升模型的收敛性和稳定性。同时,位置编码策略和注意力机制的简化也受到关注。
摘要由CSDN通过智能技术生成

batch_size的影响

batch=8:
在这里插入图片描述
batch=20:
在这里插入图片描述
由实验结果可知:这里实验有问题,横坐标不统一,不能直接比较…大致可以看出batch_size越大,loss下降略快,而且越平滑.注意理论上不能太大.

辅助损失的作用

transformer类模型,当层数很多的时候,收敛很慢,容易发散.辅助损失帮助模型在训练过程中更好地收敛,特别是在训练的早期阶段。还可以稳定训练过程,减少震荡和过拟合的风险。
下面进行对比验证:
batch=8;layer_num=6;aux_loss=true
在这里插入图片描述

batch=8;layer_num=6;aux_loss=false
在这里插入图片描述
由实验结果可知:辅助损失确实可以减少震荡和抑制过拟合,如果没有辅助损失甚至都不能收敛(可能layer太深,梯度传不回去了).

学习率的影响

在实验中发现loss先下降后上升.最后发现把学习率从0,001改成0,0002就好了.猜测是初始学习率0.001可能过大,导致模型在训练过程中的参数更新步长过大,容易跳过最优解.

2024-04-07 18:21:18,692 - mmdet - INFO - Epoch [20][1000/1069] lr: 2.000e-04, eta: 2 days, 7:04:24, time: 0.685, data_time: 0.009, memory: 28667, loss_cls: 0.2155, loss_bbox: 0.4342, d0.loss_cls: 0.3011, d0.loss_bbox: 0.4841, d1.loss_cls: 0.2889, d1.loss_bbox: 0.4726, d2.loss_cls: 0.2352, d2.loss_bbox: 0.4572, d3.loss_cls: 0.2356, d3.loss_bbox: 0.4515, d4.loss_cls: 0.2154, d4.loss_bbox: 0.4376, loss: 4.2288, grad_norm: 197.8638
2024-04-07 18:23:51,636 - mmdet - INFO - Epoch [21][100/1069] lr: 2.000e-05, eta: 2 days, 6:53:49, time: 0.744, data_time: 0.061, memory: 28667, loss_cls: 0.1997, loss_bbox: 0.3806, d0.loss_cls: 0.2881, d0.loss_bbox: 0.4400, d1.loss_cls: 0.2770, d1.loss_bbox: 0.4156, d2.loss_cls: 0.2205, d2.loss_bbox: 0.4054, d3.loss_cls: 0.2189, d3.loss_bbox: 0.3969, d4.loss_cls: 0.2009, d4.loss_bbox: 0.3860, loss: 3.8298, grad_norm: 100.7063

由实验结果可知:学习率对loss的影响巨大,图中的loss骤降就是学习率减少导致的.

Decoder层数增多的影响

曾经在vit下做个类似实验,参考
在实验中发现层数过多时,loss下不去,后来降低学习率后解决了.在低学习率0.0002下实验对比以下:
layer_num=2:
在这里插入图片描述
layer_num=6:
在这里插入图片描述
由实验结果可知:区别不大,猜测有可能在稳态式区别大一点,或者数据集太少(8k)下.

3D检测中, feats位置编码和query位置编码是否共享mpl层

背景-关于query的生成方式

DETR中是预设的query_pos shape为(n,embed_dim), 而query=zeros.shape为(n,embed_dim)
DETR3ddeformable_DETR中,query_pos(query_embed):预设的shape为(n,embed_dim),query:预设的shape为(n,embed_dim),reference_point:利用query_pos线性映射为shape(n,3)
PETR类中是reference_point:预设的shape为(n,3)
query_pos(query_embed):利用reference_point线性映射为shape(n,embed_dim)
query:zeros shape为(n,embed_dim)

我们利用PETR的方式:

feats侧(下面统称kv侧),利用归一化bev位置信息经过正余弦编码和mpl层生成key_pos;
query侧(下面统称q侧),利用预定义的目标位置(0-1归一化)信息经过正余弦编码和mpl层生成key_pos;

如果feats和query在同一尺度的bev空间坐标系下的,那么可以共享mpl层进行前向传播,而且反向传播时可以对reference_point的位置信息进行对齐,使得refernce_point在目标位置处集中.下面开始验证:
共享位置编码mpl层:
在这里插入图片描述

不共享位置编码mpl层

在这里插入图片描述
由实验结果可知:不共享反而效果更好™,有点不能理解,后续多模态的时候继续这块实验吧

利用widthformer类似的方式简化注意力机制

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Attention is all you

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值