Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collection of questions/discussions/usage #1

Open
lyuwenyu opened this issue Jun 29, 2023 · 44 comments
Open

Collection of questions/discussions/usage #1

lyuwenyu opened this issue Jun 29, 2023 · 44 comments

Comments

@lyuwenyu
Copy link
Owner

lyuwenyu commented Jun 29, 2023

Star this repo, keep following news

image

finetune doc

discussions

@lyuwenyu lyuwenyu changed the title 关于RT-DETR相关问题的讨论 关于RT-DETR相关问题或讨论可留言 Jun 29, 2023
@lyuwenyu lyuwenyu changed the title 关于RT-DETR相关问题或讨论可留言 关于RT-DETR相关问题/讨论/使用可留言 Jun 29, 2023
@lyuwenyu lyuwenyu pinned this issue Jun 29, 2023
@sdreamforchen
Copy link

大佬,您好。RT-DETR集成了不少技术,可否啥时候开个讲座哇,去年你们在detection方面讲座挺多的,今年感觉较少。
先前走实时探测路线的同学,应该很多也知道DETR,但都觉得时效性一时半会解决不了,所以我相信像我这种对很多细节是不了解的,都是重新复习+进一步学习来对待RT-DETR 。
也可以讲讲你们的经历故事(很是好奇,毕竟工业界好多人都放弃花时间在这方面的努力了),也可以讲讲未来Detection的发展预期,也可以讲讲DETR,deformable DETR, DAB-DETR,DN-DETR,DINO-DETR之类的。
十分期待!!!

@lyuwenyu
Copy link
Owner Author

大佬,您好。RT-DETR集成了不少技术,可否啥时候开个讲座哇,去年你们在detection方面讲座挺多的,今年感觉较少。 先前走实时探测路线的同学,应该很多也知道DETR,但都觉得时效性一时半会解决不了,所以我相信像我这种对很多细节是不了解的,都是重新复习+进一步学习来对待RT-DETR 。 也可以讲讲你们的经历故事(很是好奇,毕竟工业界好多人都放弃花时间在这方面的努力了),也可以讲讲未来Detection的发展预期,也可以讲讲DETR,deformable DETR, DAB-DETR,DN-DETR,DINO-DETR之类的。 十分期待!!!

@sdreamforchen
可以的,看看有多少同学需要 可以组织一下 聊一聊我们这个工作的动机 以及背后的一些优化的细节和思考

@sdreamforchen
Copy link

sdreamforchen commented Jun 29, 2023 via email

@zugofn
Copy link

zugofn commented Jun 29, 2023

大佬,请问什么时候更新pytorch版的rt-detr?

@lyuwenyu
Copy link
Owner Author

大佬,请问什么时候更新pytorch版的rt-detr?

paddle版的训练也不麻烦 推理的话可以转onnx也很方便 我近期再精简下代码 方便大家看; torch版本的着急的话可以先用第三方那个,我贴链接了

@ocrhei
Copy link

ocrhei commented Jul 1, 2023

期待大佬的讲座以及pytorch版本的re-detr,主要想试一试pytorch版的ssld_v2预训练模型。

@sdreamforchen
Copy link

大佬,您好。RT-DETR集成了不少技术,可否啥时候开个讲座哇,去年你们在detection方面讲座挺多的,今年感觉较少。 先前走实时探测路线的同学,应该很多也知道DETR,但都觉得时效性一时半会解决不了,所以我相信像我这种对很多细节是不了解的,都是重新复习+进一步学习来对待RT-DETR 。 也可以讲讲你们的经历故事(很是好奇,毕竟工业界好多人都放弃花时间在这方面的努力了),也可以讲讲未来Detection的发展预期,也可以讲讲DETR,deformable DETR, DAB-DETR,DN-DETR,DINO-DETR之类的。 十分期待!!!

@sdreamforchen 可以的,看看有多少同学需要 可以组织一下 聊一聊我们这个工作的动机 以及背后的一些优化的细节和思考

大佬,这个事情已经在办了。说到时候和paddleX新版本一个时间段举办,您看可以不呢? 毕竟我们不是同一个单位,有些事情蛮简单,但是我也使不上全力。
望理解,抱歉抱歉抱歉!十分的歉意!

@sdreamforchen
Copy link

用resnet18,backbone 深度不变,宽度变为0.5;其余设置如下
HybridEncoder:
hidden_dim: 192
use_encoder_idx: [2]
num_encoder_layers: 1
encoder_layer:
name: TransformerLayer
d_model: 192
nhead: 8
dim_feedforward: 512
dropout: 0.
activation: 'gelu'
expansion: 0.5
depth_mult: 0.67

学习率为0.0005

最终精度可以达到38%(精度自我认为比较正常,算比较好),但是训练到120epoch后就有点不稳定了,精度为35.9%,后续精度波动在10个点以上.
第一次训练是采用的0.001,当时是几十个epoch后就开始不稳定了。
我应该继续再调小点学习率吗(目标:训练N/T级别的网络)

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 3, 2023

用resnet18,backbone 深度不变,宽度变为0.5;其余设置如下 HybridEncoder: hidden_dim: 192 use_encoder_idx: [2] num_encoder_layers: 1 encoder_layer: name: TransformerLayer d_model: 192 nhead: 8 dim_feedforward: 512 dropout: 0. activation: 'gelu' expansion: 0.5 depth_mult: 0.67

学习率为0.0005

最终精度可以达到38%(精度自我认为比较正常,算比较好),但是训练到120epoch后就有点不稳定了,精度为35.9%,后续精度波动在10个点以上. 第一次训练是采用的0.001,当时是几十个epoch后就开始不稳定了。 我应该继续再调小点学习率吗(目标:训练N/T级别的网络)

是加载coco预训练的嘛 ? 可以调小lr试一下,或者把backbone的lr_nulti调小

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 3, 2023

期待大佬的讲座以及pytorch版本的re-detr,主要想试一试pytorch版的ssld_v2预训练模型。

@ocrhei

是需要resnet的预训练嘛,torch的bakcbone我先上传了一版本 https://github.com/lyuwenyu/RT-DETR/blob/main/rtdetr_pytorch/src/resnet.py

@sdreamforchen
Copy link

sdreamforchen commented Jul 3, 2023 via email

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 3, 2023

没有现成的预训练,毕竟整个都缩放了的

---原始邮件--- 发件人: @.> 发送时间: 2023年7月3日(周一) 上午9:24 收件人: @.>; 抄送: @.@.>; 主题: Re: [lyuwenyu/RT-DETR] 关于RT-DETR相关问题/讨论/使用可留言 (Issue #1) 用resnet18,backbone 深度不变,宽度变为0.5;其余设置如下 HybridEncoder: hidden_dim: 192 use_encoder_idx: [2] num_encoder_layers: 1 encoder_layer: name: TransformerLayer d_model: 192 nhead: 8 dim_feedforward: 512 dropout: 0. activation: 'gelu' expansion: 0.5 depth_mult: 0.67 学习率为0.0005 最终精度可以达到38%(精度自我认为比较正常,算比较好),但是训练到120epoch后就有点不稳定了,精度为35.9%,后续精度波动在10个点以上. 第一次训练是采用的0.001,当时是几十个epoch后就开始不稳定了。 我应该继续再调小点学习率吗(目标:训练N/T级别的网络) 是加载coco预训练的嘛 ? 可以调小lr试一下,或者把backbone的lr_nulti调小 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

@sdreamforchen

训练后期降低是正常的, r50 r101在coco上都有这个现象, 可以尝试的 1. 加一些学习率调整的策略(eg. cosine) 2. eval时候decoder layer 还可以再减一个 不过这些都得在具体数据集验证一下

@sdreamforchen
Copy link

sdreamforchen commented Jul 3, 2023 via email

@ocrhei
Copy link

ocrhei commented Jul 3, 2023

期待大佬的讲座以及pytorch版本的re-detr,主要想试一试pytorch版的ssld_v2预训练模型。

@ocrhei

是需要resnet的预训练嘛,torch的bakcbone我先上传了一版本 https://github.com/lyuwenyu/RT-DETR/blob/main/rtdetr_pytorch/src/resnet.py

感谢,还有一个小问题,就是paddle代码中的resnet学习率是0.1xlr,请问这在pytorch中该如何调整呢。

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 3, 2023

这个在pytorch里是不需要改代码, 可以在优化器的位置改 使用 param_group: 把backbone的参数单独放一个group 其中lr = base_lr * 0.1就行了, @ocrhei

@lyuwenyu lyuwenyu unpinned this issue Jul 3, 2023
@nijkah
Copy link

nijkah commented Jul 6, 2023

@lyuwenyu Hi, can I ask you to check this fix PR PaddlePaddle/PaddleDetection#8409?
After the SSOD PR merged, iou_score is set to None.

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 6, 2023

@lyuwenyu Hi, can I ask you to check this fix PR PaddlePaddle/PaddleDetection#8409? After the SSOD PR merged, iou_score is set to None.

@nijkah done, good job. If you want to use original rt-detr, try this pure repo.

@lyuwenyu lyuwenyu pinned this issue Jul 7, 2023
@lyuwenyu lyuwenyu unpinned this issue Jul 14, 2023
@kuguahentian
Copy link

@lyuwenyu 大佬您好,我对RT-DETR非常感兴趣,打算后续的课题以它为基础开展。由于我对yolov8项目比较熟悉,所以目前没打算在yolov8项目上应用和改进RT-DETR,目前有2个问题:

1、在YOLOv8项目上运行RT-DETR的yaml文件,能够显示参数量信息,但是不显示FLOPs信息(已排除thop包的问题),请问能否完善一下?

2、YOLOv8项目上只有rt-detr-l.yaml和rt-detr-x.yaml,能够补充以resnet为backbone的rt-detr.yaml文件吗?

期待您的回复~

@yangyuya
Copy link

@lyuwenyu 大佬您好,我在复现rtdetr_hgnetv2_l_6x_coco的效果时,训完发现mAP=0.522,距离0.53还是有点差距。唯一的区别应该就是batchsize=4并且是单卡训练,只能加个梯度累计,加在了ppdet/engine/trainer.py里面:

    def train(self, validate=False):
        self.accumulate_batchs_num = 2
"""
省略中间代码
"""
           for step_id, data in enumerate(self.loader):
                ni = len(self.loader) * epoch_id + step_id
"""
省略中间代码
"""
                    # in dygraph mode, optimizer.minimize is equal to optimizer.step
                    if (ni % self.accumulate_batchs_num) == 0:
                        scaler.minimize(self.optimizer, scaled_loss)
"""
省略中间代码
"""
                    # model backward
                    loss.backward()
                    if (ni % self.accumulate_batchs_num) == 0:
                        self.optimizer.step()
                if (ni % self.accumulate_batchs_num) == 0:
                    curr_lr = self.optimizer.get_lr()
                    self.lr.step()
                    if self.cfg.get('unstructured_prune'):
                        self.pruner.step()
                    self.optimizer.clear_grad()
                    self.status['learning_rate'] = curr_lr

                if (ni % self.accumulate_batchs_num) == 0:
                    if self.use_ema:
                        self.ema.update()

主要是改动了上面这几个地方,请问这样加梯度累计有问题嘛?还是其实模型中梯度累计和加大batchsize不能完全等效,我看训练设置里面已经冻结了backbone的freeze_norm层,请问batchsize减小真的会有这么大影响嘛?

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 17, 2023

@lyuwenyu 大佬您好,我对RT-DETR非常感兴趣,打算后续的课题以它为基础开展。由于我对yolov8项目比较熟悉,所以目前没打算在yolov8项目上应用和改进RT-DETR,目前有2个问题:

1、在YOLOv8项目上运行RT-DETR的yaml文件,能够显示参数量信息,但是不显示FLOPs信息(已排除thop包的问题),请问能否完善一下?

2、YOLOv8项目上只有rt-detr-l.yaml和rt-detr-x.yaml,能够补充以resnet为backbone的rt-detr.yaml文件吗?

期待您的回复~

@kuguahentian

  1. yolov8项目的问题 你可以在ultralytics/ultralytics/issues问一下
  2. resnet系列的backbone和预训练 我已经上传在这, 你需要适配一下(换一下backbone) ultralytics.com/models/rtdetr就行

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 17, 2023

@lyuwenyu 大佬您好,我在复现rtdetr_hgnetv2_l_6x_coco的效果时,训完发现mAP=0.522,距离0.53还是有点差距。唯一的区别应该就是batchsize=4并且是单卡训练,只能加个梯度累计,加在了ppdet/engine/trainer.py里面:

@yangyuya
看着没啥问题, 原版的是batch_size==4x4, 这样你accumulate_batchs_num应该是4吧 ? 另外训练过程中不加不要加amp,再确认一下梯度累加的位置没问题就行。 我把logs上传了 你跑时候看下前面的能对上不 #8

@lyuwenyu lyuwenyu pinned this issue Jul 17, 2023
@jiinhui
Copy link

jiinhui commented Jul 17, 2023

大佬,想问问rt-detr的Efficient Hybrid Encoder模块设计的motivation是?比如CCFM的结构设计主要是参考哪篇论文或怎么想出来的,还有怎么发现用单层的S5进行seft_att比多个尺度的特征进行seft_att效果好。期待大佬的解答 @lyuwenyu

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 17, 2023

大佬,想问问rt-detr的Efficient Hybrid Encoder模块设计的motivation是?比如CCFM的结构设计主要是参考哪篇论文或怎么想出来的,还有怎么发现用单层的S5进行seft_att比多个尺度的特征进行seft_att效果好。期待大佬的解答 @lyuwenyu

@jiinhui可以先star本项目持续关注动态


大致的一个思路吧

  1. 目标,在保持精度的情况下,把encoder的速度降下来
  2. 分析,encoder的时间复杂度 ~ O(L^2),在640输入+多尺度特征的情况下 L = (20^2 + 40^2 + 80^2);
  3. 分析,在这里原始的encoder其实没有了层次的概念了,直接输入拉平输入到transformer
  4. 分析,想要速度快就要减小 L --> 同层内interaction (每层的L, L1 = 20^2, L2 = 40^2, L3 = 80^2)
  5. 分析,4还能不能更快 --> transformer可以得到relation信息,猜测对检测这个任务来说high-level semantic relation information更有用(e.g 电脑在桌子上 旁边还有个手机 这种组合可能性更大 有助于检测任务), 然后可以通过插值的方式把这种信息高效的broadcast到其他level 并且通过特定fusion方式和当前层的信息整合
  6. 于是就有了论文里的Table 3 的那些试验去证明上边的想法,( 当然也有一些意外的发现比如单用S5更好😬

细节

  1. CCFM模块本身的结构是pan-like + csp + repvgg + mix-fusion (concat + add) 这样一种组合

更细节的可以参考我们的论文 https://arxiv.org/abs/2304.08069

@noringname
Copy link

新入坑, 很优秀的工作! 从paper里面看, 整个工作并没有用到deformable attention对吧?

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 18, 2023

新入坑, 很优秀的工作! 从paper里面看, 整个工作并没有用到deformable attention对吧?

@noringname

感谢认可。 decoder里的attn用的是deformable attn

@guoqsGary
Copy link

guoqsGary commented Jul 20, 2023

训练自己的数据集出现这样的报错:
ValueError: (InvalidArgument) Sum of Attr(num_or_sections) must be equal to the input's size along the split dimension. But received Attr(num_or_sections) = [84], input(X)'s shape = [2166784], Attr(dim) = 0.
[Hint: Expected sum_of_section == input_axis_dim, but received sum_of_section:84 != input_axis_dim:2166784.] (at /paddle/paddle/phi/infermeta/unary.cc:3285)

大佬请问这是什么问题。

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 20, 2023

训练自己的数据集出现这样的报错: ValueError: (InvalidArgument) Sum of Attr(num_or_sections) must be equal to the input's size along the split dimension. But received Attr(num_or_sections) = [84], input(X)'s shape = [2166784], Attr(dim) = 0. [Hint: Expected sum_of_section == input_axis_dim, but received sum_of_section:84 != input_axis_dim:2166784.] (at /paddle/paddle/phi/infermeta/unary.cc:3285)

大佬请问这是什么问题。

什么版本的paddle, 另外是一开始就报错还是训练的过程中,可以贴一个更全的报错的信息

@guoqsGary 可以先star本项目持续关注动态

@guoqsGary
Copy link

训练自己的数据集出现这样的报错: ValueError: (InvalidArgument) Sum of Attr(num_or_sections) must be equal to the input's size along the split dimension. But received Attr(num_or_sections) = [84], input(X)'s shape = [2166784], Attr(dim) = 0. [Hint: Expected sum_of_section == input_axis_dim, but received sum_of_section:84 != input_axis_dim:2166784.] (at /paddle/paddle/phi/infermeta/unary.cc:3285)
大佬请问这是什么问题。

什么版本的paddle, 另外是一开始就报错还是训练的过程中,可以贴一个更全的报错的信息

@guoqsGary 可以先star本项目持续关注动态

你好,paddle版本为2.4.2

  • 由于出现显存不够的问题我就在read里面将train和eval的bs改成了1。

  • 之后就是训练一开始就出现这样的错误:

W0720 15:56:00.572955 908 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 8.6, Driver API Version: 12.0, Runtime API Version: 10.2
W0720 15:56:00.577303 908 gpu_resources.cc:91] device: 0, cuDNN Version: 8.4.
[07/20 15:56:04] ppdet.utils.checkpoint INFO: Finish loading model weights: /home/gy/.cache/paddle/weights/ResNet50_vd_ssld_v2_pretrained.pdparams
Traceback (most recent call last):
File "tools/train.py", line 183, in
main()
File "tools/train.py", line 179, in main
run(FLAGS, cfg)
File "tools/train.py", line 135, in run
trainer.train(FLAGS.eval)
File "/home/gy/workspace/work/RT-DETR/rtdetr_paddle/ppdet/engine/trainer.py", line 377, in train
outputs = model(data)
File "/home/gy/miniconda3/envs/detr-like/lib/python3.8/site-packages/paddle/fluid/dygraph/layers.py", line 1012, in call
return self.forward(*inputs, **kwargs)
File "/home/gy/workspace/work/RT-DETR/rtdetr_paddle/ppdet/modeling/architectures/meta_arch.py", line 60, in forward
out = self.get_loss()
File "/home/gy/workspace/work/RT-DETR/rtdetr_paddle/ppdet/modeling/architectures/detr.py", line 113, in get_loss
return self._forward()
File "/home/gy/workspace/work/RT-DETR/rtdetr_paddle/ppdet/modeling/architectures/detr.py", line 87, in _forward
out_transformer = self.transformer(body_feats, pad_mask, self.inputs)
File "/home/gy/miniconda3/envs/detr-like/lib/python3.8/site-packages/paddle/fluid/dygraph/layers.py", line 1012, in call
return self.forward(*inputs, **kwargs)
File "/home/gy/workspace/work/RT-DETR/rtdetr_paddle/ppdet/modeling/transformers/rtdetr_transformer.py", line 419, in forward
get_contrastive_denoising_training_group(gt_meta,
File "/home/gy/workspace/work/RT-DETR/rtdetr_paddle/ppdet/modeling/transformers/utils.py", line 294, in get_contrastive_denoising_training_group
dn_positive_idx = paddle.split(dn_positive_idx,
File "/home/gy/miniconda3/envs/detr-like/lib/python3.8/site-packages/paddle/tensor/manipulation.py", line 1982, in split
return _C_ops.split(input, num_or_sections, dim)
ValueError: (InvalidArgument) Sum of Attr(num_or_sections) must be equal to the input's size along the split dimension. But received Attr(num_or_sections) = [84], input(X)'s shape = [2166784], Attr(dim) = 0.
[Hint: Expected sum_of_section == input_axis_dim, but received sum_of_section:84 != input_axis_dim:2166784.] (at /paddle/paddle/phi/infermeta/unary.cc:3285)

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 20, 2023

dn_positive_idx = paddle.split(dn_positive_idx,

File "/home/gy/workspace/work/RT-DETR/rtdetr_paddle/ppdet/modeling/transformers/utils.py", line 294, in get_contrastive_denoising_training_group
dn_positive_idx = paddle.split(dn_positive_idx,

找到这一行 把 dn_positive_idx的shape, 和 [n * num_group for n in num_gts]打印出来看下

另外 提一个新的issue吧

@guoqsGary
Copy link

大佬你好,我想问问为什么encoder layer的数量选择只有一层,我在论文里好像没有看到相关的实验。

@DeclK
Copy link

DeclK commented Jul 30, 2023

非常棒的项目!我想请问一下 RT-DETR 在数据量扩展性上有没有做过相关实验呢?像 DINO 使用了 Swin-L 这样的 Backbone 过后,就有巨大的提升。RT-DETR 在 scalable 上有没有相似的性能?

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Jul 30, 2023

非常棒的项目!我想请问一下 RT-DETR 在数据量扩展性上有没有做过相关实验呢?像 DINO 使用了 Swin-L 这样的 Backbone 过后,就有巨大的提升。RT-DETR 在 scalable 上有没有相似的性能?

关于Scalable 我理解你上面的问题包含两个层面

  1. 数据相关,近期会放在obj365上预训练的模型 目前看提升非常大 而且提升的幅度是大于之前我们在yolo系列上的结论
  2. 模型相关,其实rtdetr的出发点是作为一款可以实时部署模型(对标yolo系列的s m l x等scaled模型在性能是是一致的),当然如果你想基于此要更大的模型也是没问题的 比如backbone换成swin或vit等,初步的试验结果也是有大幅度的提升的

关于数据和大模型等试验调完之后模型也会陆续放出

@DeclK

@richard-space
Copy link

很優秀的項目! 想請問有在除了T4以外的GPU上的FPS數據嗎? 我使用RTX4090跑RT-DETR-R50的模型,得到的FPS並未比同樣跑在RTX4090的yolov7快,與paper中所給出的在T4 GPU上的FPS數據現象不符。

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Aug 2, 2023

很優秀的項目! 想請問有在除了T4以外的GPU上的FPS數據嗎? 我使用RTX4090跑RT-DETR-R50的模型,得到的FPS並未比同樣跑在RTX4090的yolov7快,與paper中所給出的在T4 GPU上的FPS數據現象不符。

目前只有在t4上的测试数据。 另外问一下你测yolov7是按照端到端的速度方法嘛 ( 具体的方法可以参考论文里测速benchmark的描述,ps. yolov7是anchor-based的模型 框多 在nms阶段非常耗时

@richard-space

@richard-space
Copy link

很優秀的項目! 想請問有在除了T4以外的GPU上的FPS數據嗎? 我使用RTX4090跑RT-DETR-R50的模型,得到的FPS並未比同樣跑在RTX4090的yolov7快,與paper中所給出的在T4 GPU上的FPS數據現象不符。

目前只有在t4上的测试数据。 另外问一下你测yolov7是按照端到端的速度方法嘛 ( 具体的方法可以参考论文里测速benchmark的描述,ps. yolov7是anchor-based的模型 框多 在nms阶段非常耗时

@richard-space

在RTX4090這邊沒裝tensorRT的環境,所以yolov7以執行detect.py的方式測量inference及nms的耗時,並已將input size修改成固定640*640,指令如下:
python3 detect.py --weights weights/yolov7.pt --conf 0.25 --img-size 640 --source 283991,19f11000eb408242.jpg
得到結果如下:
image
inference + nms = 8.1 ms + 0.5 ms = 8.6 ms
RT-DETR-R50則使用paddle跑eval.py,指令如下:
python tools/eval.py -c configs/rtdetr/rtdetr_r50vd_6x_coco.yml -o weights=https://bj.bcebos.com/v1/paddledet/models/rtdetr_r50vd_6x_coco.pdparams
得到結果如下:
image
97.789 FPS 約等於10.2 ms

另外,我後來也使用tensorRT在RTX2080及JETSON ORIN NX 16GB用benchmark的方式測速
yolov7以官方的export.py導出ONNX,指令: python3 export.py --weights ./yolov7.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640
RT-DETR-R50則以paddle2onnx導出rtdetr_r50vd_6x_coco.onnx

在RTX2080的結果:
yolov7得到Throughput為237.862 qps
image
RT-DETR-R50得到Throughput為158.751 qps
image

在JETSON ORIN NX 16GB的結果:
yolov7得到Throughput為52.6927 qps
image
RT-DETR-R50得到Throughput為33.681 qps
image

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Aug 4, 2023

yolov7以官方的export.py導出ONNX,指令: python3 export.py --weights ./yolov7.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640

这样测和我们定义的端到端不一样, 按照这套参数iou-thres=0.65, conf-thres=0.35去推理 不能在coco上得到原始论文中的指标吧

@richard-space

@richard-space
Copy link

yolov7以官方的export.py導出ONNX,指令: python3 export.py --weights ./yolov7.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640

这样测和我们定义的端到端不一样, 按照这套参数iou-thres=0.65, conf-thres=0.35去推理 不能在coco上得到原始论文中的指标吧

@richard-space

確實,如果mAP的計算要高的話,必須調低conf-thres及調高topk-all,如果調成conf-thres=0.001, topk-all 300,在RTX2080上跑可以得到Throughput: 123.996 qps,低於RT-DETR-R50的Throughput: 158.751 qps
image

感謝回覆!

@TsingWei
Copy link

TsingWei commented Aug 7, 2023

yolov7以官方的export.py導出ONNX,指令: python3 export.py --weights ./yolov7.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640
这样测和我们定义的端到端不一样, 按照这套参数iou-thres=0.65, conf-thres=0.35去推理 不能在coco上得到原始论文中的指标吧
@richard-space

確實,如果mAP的計算要高的話,必須調低conf-thres及調高topk-all,如果調成conf-thres=0.001, topk-all 300,在RTX2080上跑可以得到Throughput: 123.996 qps,低於RT-DETR-R50的Throughput: 158.751 qps image

感謝回覆!

是不是意味着在不考虑nms的情况下decoder+MLP的速度还是比不过conv head?然后decoder可以看作是集成了nms的功能?

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Aug 8, 2023

yolov7以官方的export.py導出ONNX,指令: python3 export.py --weights ./yolov7.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640
这样测和我们定义的端到端不一样, 按照这套参数iou-thres=0.65, conf-thres=0.35去推理 不能在coco上得到原始论文中的指标吧
@richard-space

確實,如果mAP的計算要高的話,必須調低conf-thres及調高topk-all,如果調成conf-thres=0.001, topk-all 300,在RTX2080上跑可以得到Throughput: 123.996 qps,低於RT-DETR-R50的Throughput: 158.751 qps image
感謝回覆!

是不是意味着在不考虑nms的情况下decoder+MLP的速度还是比不过conv head?然后decoder可以看作是集成了nms的功能?

@TsingWei ( 个人理解 也不算是集成吧 detr这种结构 从设计上就不存在重复框的问题 不需要nms 但是从dense detector的角度说decoder包含了nms的功能 也不是不可以😂

@fanlimua
Copy link

fanlimua commented Aug 9, 2023

你好,新人入坑,想请教两个问题:

  1. 我看paper中显示result只有L,X规模的模型,没有看到S,是默认为R50为S吗,还是说S模型performance不如YOLO呢
    image

  2. 另外我看到paper中对NMS进行了分析,但是分析的结果不是很明白,在score=0.001的时候,随着Iou threshold的增大,出框量不是应该越少,然后使得NMS latency越短吗,为什么这个表格的显示不太一样呢,是NMS有别的什么计算方式吗?
    image

  3. 最后,在arxiv上传的paper有一处文字编辑错误,在4.2节的Hybrid design中“the risk of”。

@lyuwenyu
Copy link
Owner Author

lyuwenyu commented Aug 9, 2023

2. 另外我看到paper中对NMS进行了分析,但是分析的结果不是很明白,在score=0.001的时候,随着Iou threshold的增大,出框量不是应该越少,然后使得NMS latency越短吗,为什么这个表格的显示不太一样呢,是NMS有别的什么计算方式吗?

  1. 论文表格里的数据没更新 只更新里性能对比的图-此项目主页可以看到(之后会更新最终版论文) ,结论是全系列(s m l x)均超过yolo 模型已经发布
  2. nms的过程中iou_thr代表每次循环的过程中超过这个值的框会被抑制 越大最终保留的框越多
  3. 收到 感谢

@todesti2
Copy link

嗨,请问有朋友们有遇到输入通道数和滤波器通道数不匹配的问题吗?
我最近将stage1的第一个hg_block的第一个3*3卷积换成了其他卷积方法,但是出现了上述问题,很久得不到解决,期待你们的回复

@lyuwenyu lyuwenyu changed the title 关于RT-DETR相关问题/讨论/使用可留言 关于RT-DETR相关问题/讨论/使用可留言 [issues/discussions/usages] Aug 20, 2023
@lyuwenyu lyuwenyu changed the title 关于RT-DETR相关问题/讨论/使用可留言 [issues/discussions/usages] Collection of questions/discussions/usage Aug 20, 2023
@Kilig0215
Copy link

大佬您好 我用AIFI的encoder的self_attention weight可视化了一下自注意力机制的相关性,请问有做相关的visualization吗,因为我做的不太理想

@phhh-xh
Copy link

phhh-xh commented Aug 28, 2023

大佬您好,非常感谢您的工作,萌新一枚,我用的pytorch版本,有些问题请教一下。
1、使用的window系统,set CUDA_VISIBLE_DEVICES=0 设置cuda以后,传入config,跑的时候,GPU使用率3%,但是cpu跑满了,我应该如何设置用cuda训练啊
2、batch_size是在coco_detection.yml文件中直接修改batch_size就可以了吗
2、如果是修改自定义的类别,是在coco_detection.yml这个文件中修改和更新coco_dataset.py中的name的类别名称就可以了吗,
3、盼望回复,再次感谢,

@lyuwenyu lyuwenyu unpinned this issue Oct 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests