公司动态

MRL鲁棒性测试清单:ImageNetV2/A/R/Sketch四大基准上评估Matryoshka模型的方法

📅 2026/8/22 14:38:58
MRL鲁棒性测试清单:ImageNetV2/A/R/Sketch四大基准上评估Matryoshka模型的方法
MRL鲁棒性测试清单ImageNetV2/A/R/Sketch四大基准上评估Matryoshka模型的方法【免费下载链接】MRLCode repository for the paper - Matryoshka Representation Learning项目地址: https://gitcode.com/gh_mirrors/mrl/MRLMRLMatryoshka Representation Learning套娃表示学习是 NeurIPS 2022 论文配套开源项目用一个 ResNet50 模型同时产出 8~2048 维的嵌套特征。本文提供一份完整清单带你快速在 ImageNetV2、ImageNet-A、ImageNet-R、ImageNet-Sketch 四大鲁棒性基准上完成 Matryoshka 模型评估只需一条命令即可跑通。为什么MRL模型需要做鲁棒性测试ImageNet-1K 验证集V1上的准确率只是主场成绩。真实场景中图像会遭遇拍摄条件变化、渲染风格差异、手绘草图甚至自然对抗扰动。四大基准各自考察一种分布偏移基准考察的鲁棒性类型直观理解ImageNetV2分布偏移同一批物体的重新拍摄照片ImageNet-A自然对抗样本容易被误判、极具迷惑性的图片ImageNet-R渲染风格偏移绘画、雕塑、漫画等多种渲染形式ImageNet-Sketch手绘风格偏移人手绘的简笔画MRL 的独特价值在于一次前向推理即可得到多个维度的特征因此可以一次性观察特征压缩到多小、鲁棒性还能保持多少这是固定维度模型无法做到的。鲁棒性测试准备清单环境、数据集与权重1️⃣ 安装依赖与基础环境git clone https://gitcode.com/gh_mirrors/mrl/MRL pip3 install -r requirements.txt依赖文件 requirements.txt 中已包含ImageNetV2_pytorchV2 基准的加载器无需单独安装。建议先用 pytest 跑一下 tests/test_MRL.py确认套娃损失函数工作正常。2️⃣ 下载四大鲁棒性基准数据集评估脚本 inference/pytorch_inference.py 中的数据根目录默认为ROOT../../IMAGENET/请按以下目录结构放置IMAGENET/val/标准 ImageNet 1K 验证集V1可选IMAGENET/imagenet-a/ImageNet-A 验证集IMAGENET/imagenet-r_/ImageNet-R 验证集IMAGENET/sketch/ImageNet-Sketch 验证集ImageNetV2由ImageNetV2_pytorch包自动加载matched-frequency匹配集无需手动放置四个数据集的官方下载说明可参考各自发布页面仓库 README 中有对应出处统一按 PyTorch ImageFolder 格式解压即可。3️⃣ 准备 Matryoshka 模型权重项目提供官方训练好的 ResNet50 检查点命名规则为r50_mrl{0/1}_e{0/1}_ff{dim}.ptr50_mrl1_e0_ff2048.ptMRL 套娃模型评估时需加--old_ckpt标志r50_mrl0_e0_ff512.pt固定 512 维基线模型作为对照也可以自己训练参考 train/train_imagenet.py 与配置 train/rn50_configs/rn50_40_epochs.yaml。快速上手一条命令跑通四大基准评估评估 MRL 套娃模型MRL 模型无需指定维度脚本会自动遍历 8→2048 全部嵌套维度cd inference python pytorch_inference.py --path 权重路径 --dataset V2/A/R/sketch \ --mrl --old_ckpt--dataset依次取V2、A、R、sketch四个值跑四遍即完成全部鲁棒性测试。对比固定维度基线模型评估 Fixed Feature 基线时改用--rep_size指定维度例如对比 512 维python pytorch_inference.py --path 基线权重 --dataset A --rep_size 512 --old_ckpt保存结果用于深度分析加上--save_logits --save_softmax --save_gt --save_predictions标志可将中间张量落盘供 model_analysis/ 下的 Jupyter 笔记本如 model_analysis/GradCAM.ipynb做误差归因。如何读懂MRL鲁棒性测试结果评估逻辑集中在 utils.py 的evaluate_model中每个基准结束后会输出逐维度 Top-1 / Top-5 准确率MRL 模型会打印 8、16、32……2048 共 9 组指标总耗时与单图平均耗时ms体现小维度的推理效率收益margin scorem_score预测类与次高类的置信度差距用于分析模型有多确定。读结果时重点关注小维度如 8/16 维在 ImageNet-A、ImageNet-R 上的准确率衰减幅度。套娃训练的初衷是让小维度优先承载信息因此它们在各基准上的相对表现是判断 MRL 是否有效的核心依据。一个容易忽略的细节ImageNet-A/R 只覆盖 1000 类中的子集脚本通过 inference/imagenet_id.py 中的 wnid 映射表自动过滤 logits如indices_in_1k_a无需手动对齐标签。常见坑点排查清单避坑指南坑点现象解决办法sketch大小写传--dataset Sketch被静默当成 V1代码按小写精确匹配请用--dataset sketch漏加--old_ckpt加载官方权重报 key 不匹配官方检查点带 DDP 前缀必须加此标志V2 选错子集V2 分数异常偏低脚本固定使用 matched-frequency 集保持默认即可目录名不符A/R/Sketch 报找不到数据集严格按imagenet-a/、imagenet-r_/、sketch/命名基线模型没给--rep_size评估的不是想对比的维度默认 2048 维对比实验请显式指定进阶从鲁棒性测试走向模型分析完成基准测试后可以进入 model_analysis/ 目录做可视化分析四本笔记本分别覆盖model_analysis/GradCAM.ipynb热力图查看模型看了哪里model_analysis/Custom_SuperClass_Performance.ipynb按超类统计准确率定位薄弱类别model_analysis/Model_Cascades.ipynb低维先筛、高维复核的级联策略model_analysis/Oracle_Upper_Bound_Performance.ipynb自适应分类的理论上限启用--tta测试时增强可进一步提升分数——注意论文主结果不含 TTA级联分类场景才使用它总结MRL鲁棒性测试完整清单✅pip3 install -r requirements.txt装好环境✅ 按目录约定放好 V2/A/R/Sketch 四大数据集✅ 准备 MRL 权重--mrl --old_ckpt与基线权重--rep_size✅ 依次执行--dataset V2、A、R、sketch四组评估✅ 记录每个嵌套维度的 Top-1/Top-5 与耗时绘制维度-鲁棒性曲线✅ 用--save_*标志保存 logits进入 model_analysis 做误差归因照此清单操作你就完成了对 Matryoshka 表示学习模型的一次完整、可复现的鲁棒性体检 【免费下载链接】MRLCode repository for the paper - Matryoshka Representation Learning项目地址: https://gitcode.com/gh_mirrors/mrl/MRL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考