Skip to content

add model eva02 - #3429

Open
learncat163 wants to merge 4 commits into
PaddlePaddle:developfrom
learncat163:rude-eva02
Open

add model eva02#3429
learncat163 wants to merge 4 commits into
PaddlePaddle:developfrom
learncat163:rude-eva02

Conversation

@learncat163

Copy link
Copy Markdown

EVA02模型

模型描述

EVA-02 是 BAAI-Vision 提出的视觉 Transformer 模型,基于 BEiT ViT 变体改进而来。相比于原始 EVA,EVA-02 引入了 Rotary Position Embedding (RoPE)、SwiGLU 激活、MLP 中的 Scale Norm 等技术,在多个图像分类基准上取得了优异性能。

模型变体

EVA02 共 4 种架构变体,其中 base/large 各有多个微调权重(不同预训练数据 + 微调策略),共 8 个权重。

模型名称 timm 名称 Top-1 (%) 输入尺寸 Embed Dim 深度 头数 参数量
EVA02_tiny_patch14_336 eva02_tiny_patch14_336.mim_in22k_ft_in1k 80.66 336x336 192 12 3 ~5.7M
EVA02_small_patch14_336 eva02_small_patch14_336.mim_in22k_ft_in1k 85.62 336x336 384 12 6 ~22M
EVA02_base_patch14_448 eva02_base_patch14_448.mim_in22k_ft_in1k 87.77 448x448 768 12 12 ~87M
EVA02_base_patch14_448 eva02_base_patch14_448.mim_in22k_ft_in22k_in1k 87.77 448x448 768 12 12 ~87M
EVA02_large_patch14_448 eva02_large_patch14_448.mim_in22k_ft_in1k 88.25 448x448 1024 24 16 ~304M
EVA02_large_patch14_448 eva02_large_patch14_448.mim_in22k_ft_in22k_in1k 88.58 448x448 1024 24 16 ~304M
EVA02_large_patch14_448 eva02_large_patch14_448.mim_m38m_ft_in1k 88.39 448x448 1024 24 16 ~304M
EVA02_large_patch14_448 eva02_large_patch14_448.mim_m38m_ft_in22k_in1k 88.58 448x448 1024 24 16 ~304M

预训练权重

权重来源

所有 EVA02 权重均从 timm (PyTorch Image Models) 权重转换而来

PaddleClas 模型 timm 模型 权重文件 文件大小
EVA02_tiny_patch14_336 timm/eva02_tiny_patch14_336.mim_in22k_ft_in1k eva02_tiny_patch14_336.mim_in22k_ft_in1k.pdparams 22M
EVA02_small_patch14_336 timm/eva02_small_patch14_336.mim_in22k_ft_in1k eva02_small_patch14_336.mim_in22k_ft_in1k.pdparams 85M
EVA02_base_patch14_448 timm/eva02_base_patch14_448.mim_in22k_ft_in1k eva02_base_patch14_448.mim_in22k_ft_in1k.pdparams 333M
EVA02_base_patch14_448 timm/eva02_base_patch14_448.mim_in22k_ft_in22k_in1k eva02_base_patch14_448.mim_in22k_ft_in22k_in1k.pdparams 333M
EVA02_large_patch14_448 timm/eva02_large_patch14_448.mim_in22k_ft_in1k eva02_large_patch14_448.mim_in22k_ft_in1k.pdparams 1.2G
EVA02_large_patch14_448 timm/eva02_large_patch14_448.mim_in22k_ft_in22k_in1k eva02_large_patch14_448.mim_in22k_ft_in22k_in1k.pdparams 1.2G
EVA02_large_patch14_448 timm/eva02_large_patch14_448.mim_m38m_ft_in1k eva02_large_patch14_448.mim_m38m_ft_in1k.pdparams 1.2G
EVA02_large_patch14_448 timm/eva02_large_patch14_448.mim_m38m_ft_in22k_in1k eva02_large_patch14_448.mim_m38m_ft_in22k_in1k.pdparams 1.2G

使用方式

PaddleClas 中使用

import paddle
from ppcls.arch.backbone.model_zoo.eva02 import EVA02_tiny_patch14_336

# 方式一:直接加载转换后的 pdparams
model = EVA02_tiny_patch14_336(pretrained=False)
state_dict = paddle.load('eva02_tiny_patch14_336.mim_in22k_ft_in1k.pdparams')
model.set_state_dict(state_dict)
model.eval()

x = paddle.randn([1, 3, 336, 336])
output = model(x)

精度对齐

1. 随机输入 Logit 对齐:timm vs Paddle(转换权重)

加载 timm 模型和 Paddle 转换权重,对比同一随机输入(seed=42)的 logits 输出,验证权重转换和 key 映射的正确性。每个模型在独立子进程中执行,避免 Paddle ParamAttr 命名冲突。

模型 输入尺寸 最大绝对误差 平均绝对误差 Top-1 一致 状态
eva02_tiny_patch14_336.mim_in22k_ft_in1k 336x336 1.04e-05 2.92e-06 True PASS
eva02_small_patch14_336.mim_in22k_ft_in1k 336x336 1.07e-05 1.72e-06 True PASS
eva02_base_patch14_448.mim_in22k_ft_in1k 448x448 1.35e-05 2.54e-06 True PASS
eva02_base_patch14_448.mim_in22k_ft_in22k_in1k 448x448 4.17e-06 9.64e-07 True PASS
eva02_large_patch14_448.mim_in22k_ft_in1k 448x448 4.77e-06 7.24e-07 True PASS
eva02_large_patch14_448.mim_in22k_ft_in22k_in1k 448x448 7.09e-06 1.56e-06 True PASS
eva02_large_patch14_448.mim_m38m_ft_in1k 448x448 4.29e-06 8.07e-07 True PASS
eva02_large_patch14_448.mim_m38m_ft_in22k_in1k 448x448 6.65e-06 1.06e-06 True PASS

所有模型最大绝对误差在 1e-6 ~ 1e-5 量级,满足 1e-4 的精度要求,Top-1 预测完全一致。

2. ImageNet 验证集 Top-1 一致率验证

在 ImageNet 验证集(50000 张)上验证 paddle 与 timm 的 Top-1 预测一致率。)。

预处理使用 timm create_transform(bicubic 插值、crop_pct、CLIP 归一化),paddle 与 timm 共享同一批预处理后的 tensor,确保对比的纯粹性。

模型 输入尺寸 总图数 一致数 一致率(%) 阈值(%) 状态
eva02_tiny_patch14_336.mim_in22k_ft_in1k 336x336 50000 50000 100.0 99.8 PASS
eva02_small_patch14_336.mim_in22k_ft_in1k 336x336 50000 50000 100.0 99.8 PASS
eva02_base_patch14_448.mim_in22k_ft_in1k 448x448 50000 50000 100.0 99.8 PASS
eva02_base_patch14_448.mim_in22k_ft_in22k_in1k 448x448 50000 50000 100.0 99.8 PASS
eva02_large_patch14_448.mim_in22k_ft_in1k 448x448 50000 50000 100.0 99.8 PASS
eva02_large_patch14_448.mim_in22k_ft_in22k_in1k 448x448 50000 50000 100.0 99.8 PASS
eva02_large_patch14_448.mim_m38m_ft_in1k 448x448 50000 50000 100.0 99.8 PASS
eva02_large_patch14_448.mim_m38m_ft_in22k_in1k 448x448 50000 50000 100.0 99.8 PASS

全部 8 个权重在 50000 张验证图上,paddle 与 timm 的 Top-1 预测一致率均为 100.0%。

3. 训练验证

固定 batch(4 张随机图 + 固定标签)反复训练 50 步,验证模型能对该 batch 拟合(loss 单调下降)。Optimizer 为 AdamW(lr=1e-4, weight_decay=0.05),Loss 为 CrossEntropyLoss,加载转换后的预训练权重。

EVA02_tiny_patch14_336 逐步 Loss

Step Loss
0 7.1722
1 5.9463
2 5.1555
3 3.8080
4 1.9668
5 0.8887
6 0.2785
7 0.1561
8 0.1159
9 0.0920
10 0.0721
11 0.0548
12 0.0415
13 0.0322
14 0.0260
15 0.0217
16 0.0184
17 0.0159
18 0.0138
19 0.0122
20 0.0109
21 0.0098
22 0.0090
23 0.0083
24 0.0077
25 0.0072
26 0.0068
27 0.0064
28 0.0061
29 0.0058
30 0.0056
31 0.0053
32 0.0051
33 0.0049
34 0.0047
35 0.0045
36 0.0044
37 0.0042
38 0.0040
39 0.0039
40 0.0038
41 0.0037
42 0.0035
43 0.0034
44 0.0033
45 0.0033
46 0.0032
47 0.0031
48 0.0030
49 0.0030

EVA02_small_patch14_336 逐步 Loss

Step Loss
0 7.3984
1 6.3049
2 4.9148
3 3.9077
4 2.6779
5 2.2221
6 1.8856
7 1.6081
8 1.3804
9 1.3077
10 1.1437
11 0.9715
12 0.7434
13 0.5660
14 0.3379
15 0.1767
16 0.0944
17 0.0542
18 0.0335
19 0.0214
20 0.0158
21 0.0138
22 0.0119
23 0.0095
24 0.0077
25 0.0065
26 0.0056
27 0.0049
28 0.0043
29 0.0039
30 0.0035
31 0.0031
32 0.0029
33 0.0026
34 0.0024
35 0.0023
36 0.0021
37 0.0020
38 0.0019
39 0.0018
40 0.0017
41 0.0016
42 0.0015
43 0.0015
44 0.0014
45 0.0013
46 0.0013
47 0.0012
48 0.0012
49 0.0011

EVA02_base_patch14_448 逐步 Loss

Step Loss
0 7.3794
1 7.6832
2 5.2406
3 2.8897
4 1.6903
5 1.0683
6 1.1594
7 0.8837
8 0.7970
9 0.6659
10 0.4843
11 0.5088
12 0.3933
13 0.4392
14 0.3374
15 0.3435
16 0.2065
17 0.1378
18 0.0763
19 0.0424
20 0.0250
21 0.0166
22 0.0124
23 0.0100
24 0.0084
25 0.0072
26 0.0063
27 0.0055
28 0.0047
29 0.0041
30 0.0036
31 0.0031
32 0.0027
33 0.0024
34 0.0022
35 0.0019
36 0.0018
37 0.0016
38 0.0015
39 0.0014
40 0.0013
41 0.0012
42 0.0011
43 0.0011
44 0.0010
45 0.0010
46 0.0009
47 0.0009
48 0.0009
49 0.0008

EVA02_large_patch14_448 逐步 Loss

Step Loss
0 7.4803
1 6.8347
2 5.2406
3 4.9742
4 3.2265
5 2.3925
6 1.7872
7 1.2468
8 0.9593
9 0.5842
10 0.4318
11 0.3139
12 0.4379
13 2.4342
14 1.0965
15 1.4243
16 1.2339
17 0.7808
18 0.4946
19 0.4038
20 0.2694
21 0.2684
22 0.2021
23 0.1818
24 0.0866
25 0.0569
26 0.0467
27 1.6388
28 0.0202
29 0.0195
30 0.0210
31 0.0244
32 0.0300
33 0.0349
34 0.0330
35 0.0272
36 0.0226
37 0.0196
38 0.0174
39 0.0155
40 0.0139
41 0.0125
42 0.0111
43 0.0100
44 0.0089
45 0.0080
46 0.0073
47 0.0067
48 0.0061
49 0.0057

@paddle-bot

paddle-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown

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