Skip to content

【Hackathon 8th No.38】在 PaddleDetection 中复现 RT-DETRv3 模型 #9376

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

Merged
merged 6 commits into from
Jun 11, 2025

Conversation

flytocc
Copy link
Contributor

@flytocc flytocc commented May 12, 2025

本次复现基于官方repo:https://github.com/clxia12/RT-DETRv3

鉴于官方repo基于PaddleDetection 2.8.1实现,本次复现尽可能采用官方repo的代码,只做了少量细微改动:

  • RTDETRv3合并到DETR中,通过配置aux_o2m_head来实现RTDETRv3
  • DINOv3Head重命名为RTDETRv3Head,将DINOv3Loss重命名为RTDETRv3Loss
  • 修正了config文件中的小错误
  • 本次复现不包含lvis相关代码、模型及文件

变动

  • 修改PadGT,增加参数only_origin_box。当only_origin_boxFalse时,功能与原先一样,默认为False
  • 修改NormalizeBox,增加参数retain_origin_box。当retain_origin_boxFalse时,功能与原先一样,默认为False
  • 修改BatchCompose,增加对origin_gt_bboxorigin_gt_class的支持
  • 修改PPYOLOEHead.get_loss,当origin_gt_bboxorigin_gt_classpad_origin_gt_mask存在时,替代gt_bboxgt_classpad_gt_mask
  • 修改DETR,增加参数aux_o2m_head。当aux_o2m_headNone时,功能与原先一样,默认为None

Copy link

paddle-bot bot commented May 12, 2025

Thanks for your contribution!

@CLAassistant
Copy link

CLAassistant commented May 12, 2025

CLA assistant check
All committers have signed the CLA.

@flytocc flytocc changed the base branch from release/2.8.1 to develop May 12, 2025 08:37
@flytocc
Copy link
Contributor Author

flytocc commented May 14, 2025

@luotao1 @lyuwenyu 麻烦看看有什么补充的吗?RPC是之前其他选手写的,需要重新写一个吗

@luotao1
Copy link
Collaborator

luotao1 commented May 14, 2025

RFC 不需要重新写

@PaddlePaddle PaddlePaddle locked and limited conversation to collaborators May 14, 2025
@PaddlePaddle PaddlePaddle unlocked this conversation May 14, 2025
@Sunting78
Copy link
Collaborator

您好,请新增r101的架构,另外请提供训练完成已经复线精度的模型,若有保存训练过程的log,也可以一并提供,便于精度的复现。

@flytocc
Copy link
Contributor Author

flytocc commented May 14, 2025

感谢您的解答,以下是对您所题问题的回复:

您好,请新增r101的架构,另外请提供训练完成已经复线精度的模型,若有保存训练过程的log,也可以一并提供,便于精度的复现。

  • 官方未提供r101的配置及权重(检查过官方repo的全部commits和issues)
  • 官方repo基于2.8.1实现,本次复现的base code和2.8.1只相差几个commits(已检查不会影响本次复现)。本次提交的代码基本来自官方repo,是否有必要进行重新训练

鉴于官方repo基于PaddleDetection 2.8.1实现,本次复现尽可能采用官方repo的代码,只做了少量细微改动:

  • 将RTDETRv3合并到DETR中,通过配置aux_o2m_head来实现RTDETRv3
  • 将DINOv3Head重命名为RTDETRv3Head,将DINOv3Loss重命名为RTDETRv3Loss
  • 修正了config文件中的小错误
  • 本次复现不包含lvis相关代码、模型及文件

@Sunting78
Copy link
Collaborator

感谢您的解答,以下是对您所题问题的回复:

您好,请新增r101的架构,另外请提供训练完成已经复线精度的模型,若有保存训练过程的log,也可以一并提供,便于精度的复现。

  • 官方未提供r101的配置及权重(检查过官方repo的全部commits和issues)
  • 官方repo基于2.8.1实现,本次复现的base code和2.8.1只相差几个commits(已检查不会影响本次复现)。本次提交的代码基本来自官方repo,是否有必要进行重新训练

鉴于官方repo基于PaddleDetection 2.8.1实现,本次复现尽可能采用官方repo的代码,只做了少量细微改动:

  • 将RTDETRv3合并到DETR中,通过配置aux_o2m_head来实现RTDETRv3
  • 将DINOv3Head重命名为RTDETRv3Head,将DINOv3Loss重命名为RTDETRv3Loss
  • 修正了config文件中的小错误
  • 本次复现不包含lvis相关代码、模型及文件

您好,建议训练完成其中一个配置的模型,且能完全对齐精度。

@flytocc
Copy link
Contributor Author

flytocc commented May 22, 2025

您好,建议训练完成其中一个配置的模型,且能完全对齐精度。

训练最小的模型也需要至少8张24G显存的显卡,我这边找不到这样的资源。您这边能帮忙训练吗?或者提供算力支持?

关于精度,理论上官方repo如果能复现论文精度,那本pr也没问题,毕竟就没差几行代码。反之,我也没有办法强行对齐论文精度。

@flytocc
Copy link
Contributor Author

flytocc commented May 30, 2025

batch_size和lr减半,aistudio v100 * 4,paddlepaddle-gpu==3.0

python tools/train.py \
  -c configs/rtdetrv3/rtdetrv3_r18vd_6x_coco.yml \
  -o \
  find_unused_parameters=False \
  log_iter=100 \
  TrainReader.batch_size=8 \
  LearningRate.base_lr=0.0002 \
  --fleet \
  --eval

weight&log: https://pan.baidu.com/s/1TDZzKs63Y-fvCT09g_GsIg?pwd=5i6x

@Sunting78 精度47.5,在误差范围内

 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.475
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.650
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.515
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.301
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.507
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.634
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.364
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.621
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.694
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.504
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.736
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.863

Sunting78
Sunting78 previously approved these changes Jun 3, 2025
@Sunting78
Copy link
Collaborator

您好,请参考https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rtdetrv2/README.md 在配置目录下添加README文档

@flytocc
Copy link
Contributor Author

flytocc commented Jun 6, 2025

您好,请参考https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rtdetrv2/README.md 在配置目录下添加README文档

已添加README.md

@Sunting78 Sunting78 merged commit 0be35cc into PaddlePaddle:develop Jun 11, 2025
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants