Skip to content

新增支持dinov3#3401

Open
learncat163 wants to merge 1 commit intoPaddlePaddle:developfrom
learncat163:pure-add-dinov3
Open

新增支持dinov3#3401
learncat163 wants to merge 1 commit intoPaddlePaddle:developfrom
learncat163:pure-add-dinov3

Conversation

@learncat163
Copy link

1.修改内容:

  1. 新增dinov3模型的支持。

2.模型转换和下载:

  1. 模型转换脚本和模型下载地址:https://aistudio.baidu.com/modelsdetail/44390?modelId=44390
  2. 如果不想从aistudio下载,模型已经上传到bos,分别是:
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/dinov3-vitb16.pdparams
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/dinov3-vitl16.pdparams
https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/dinov3-vits16.pdparams

3.验证方式:

  1. 观测训练loss下降。python3 tools/train.py -c ppcls/configs/ImageNet/DINOv3/DINOv3_vitb16_patch16_224.yaml -o Global.device=gpu -o Global.epochs=10 -o DataLoader.Train.sampler.batch_size=4 -o Global.output_dir=./output/dinov3_train_test -o Global.seed=1234 -o DataLoader.Train.sampler.shuffle=False -o DataLoader.Train.loader.num_workers=0 -o Global.eval_during_train=False

  2. 观测 和 Pytorch原版的推理diff 差距,使用附件中的 test_loss.py 运行验证。 运行前,需要根据test_loass.py 中的说明设置好相应的pip依赖,并初始化好对应的模型文件。已经验证的结果如下:

======================================================================
DINOv3 Paddle vs Torch 精度对比
======================================================================

======================================================================
模型: DINOv3_vits16
======================================================================
Loading weights: 100%|██████████| 211/211 [00:00<00:00, 3198.06it/s, Materializing param=norm.weight]
输出 shape: (1, 384)
整体最大误差: 2.15e-06
整体平均误差: 5.86e-07
HF 前4个值: [-0.2561415433883667, 0.5008077621459961, 0.12634432315826416, -0.029035473242402077]
PD 前4个值: [-0.2561420798301697, 0.5008069276809692, 0.1263444423675537, -0.0290355384349823]
状态: [PASS]

======================================================================
模型: DINOv3_vitb16
======================================================================
Loading weights: 100%|██████████| 211/211 [00:00<00:00, 3217.04it/s, Materializing param=norm.weight]
输出 shape: (1, 768)
整体最大误差: 3.22e-06
整体平均误差: 7.13e-07
HF 前4个值: [-0.24412374198436737, 0.12674476206302643, 0.1911010444164276, -1.311936855316162]
PD 前4个值: [-0.24412262439727783, 0.1267455518245697, 0.19110068678855896, -1.3119370937347412]
状态: [PASS]

======================================================================
模型: DINOv3_vitl16
======================================================================
Loading weights: 100%|██████████| 415/415 [00:00<00:00, 3140.80it/s, Materializing param=norm.weight]
输出 shape: (1, 1024)
整体最大误差: 3.99e-06
整体平均误差: 6.88e-07
HF 前4个值: [0.5845530033111572, -1.204303503036499, -1.1554120779037476, -1.1265804767608643]
PD 前4个值: [0.584551990032196, -1.2043040990829468, -1.1554136276245117, -1.1265796422958374]
状态: [PASS]

======================================================================
测试完成
======================================================================

@paddle-bot
Copy link

paddle-bot bot commented Feb 28, 2026

Thanks for your contribution!

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.

1 participant