资讯动态

如何自建OOD检索基准?MRL的ImageNet-4K数据集构建与评估实战

发布时间:2026/8/22 13:43:25 来源:尧图企业网站定制
如何自建OOD检索基准MRL的ImageNet-4K数据集构建与评估实战【免费下载链接】MRLCode repository for the paper - Matryoshka Representation Learning项目地址: https://gitcode.com/gh_mirrors/mrl/MRLMRLMatryoshka Representation Learning套娃表示学习开源仓库除了提供训练与推理代码还内置了一个专为分布外OOD图像检索设计的评测基准——ImageNet-4K。本文将带你完成从零搭建 OOD 检索基准的完整流程理解 ImageNet-4K 的构建思路、准备数据集、生成特征向量、搭建 FAISS 索引最终算出 mAPk 等检索指标适合刚接触向量检索的新手快速上手 。为什么需要OOD图像检索基准大多数图像检索方案在ImageNet-1K 验证集上评估但这是分布内测试——查询集与训练集同源指标容易虚高。而现实中比如商品搜图、跨域检索查询图片往往来自训练时从未见过的类别。MRL 论文为此做了三件事用ImageNetV2作为查询集、ImageNet-1K 作为数据库做轻量 OOD 评测但 V2 只有测试集无法自建数据库提出Adaptive Retrieval低维召回 高维重排在 1K 上以 128× 更少算力追平 2048 维检索精度构建全新基准ImageNet-4K类别完全不在 ImageNet-1K 内数据库与查询集都有可完整复现训练→检索→评测闭环。ImageNet-4K 数据集构建思路ImageNet-4K 的核心思想非常朴素从更大的 ImageNet-21K 中挑出与 ImageNet-1K 完全不重叠、且样本量充足的类别天然构成一个 OOD 场景。具体规格如下 属性规格类别数4,214 类ImageNet-21K 子集与 1K 零重叠每类图片数1,050 张数据库database每类 1,000 张共约 420 万张查询集query每类 50 张共约 20 万张筛选门槛每个入选类别必须含 ≥1,050 张图片数据集说明与官方图片清单见 imagenet-4k/README.md类别 ID 到类名、定义的映射在 imagenet-4k/IDtoClass.txt。 自建基准时你可以参考它的三条筛选准则① 与训练类别零重叠② 每类样本量对齐1050 张③ 预留固定的 database/query 划分1000/50。这样指标才具有可比性和可复现性。环境准备与数据集落盘步骤克隆仓库并安装依赖git clone https://gitcode.com/gh_mirrors/mrl/MRL cd MRL pip3 install -r requirements.txt构造 ImageNet-4K 只需两步先获取完整的 ImageNet-21K 原始数据按照官方提供的图片清单见 imagenet-4k/README.md从 21K 中切出子集按train/数据库与test/查询集两个文件夹存放成 PyTorchImageFolder结构。类别 ID 与标签索引的对应关系可以参考 inference/imagenet_id.py其中维护了完整 wnid 列表及各 OOD 测试集的类别掩码对自建其他基准如从 21K 中换一批类别非常有用。一条命令生成检索特征向量准备好 MRL 预训练模型后用仓库自带的推理脚本即可把数据库与查询集编码成向量并落盘核心是--retrieval模式实现位于 inference/pytorch_inference.pypython inference/pytorch_inference.py --retrieval \ --pathpath_to_model/final_weights.pt \ --retrieval_array_pathoutput_path/ \ --dataset4K --mrl执行后会在output_path/生成四份.npy文件MRL 模型为 2048 维嵌套表示4K_train_mrl1_e0_ff2048-X.npy/-y.npy数据库特征与标签4K_val_mrl1_e0_ff2048-X.npy/-y.npy查询集特征与标签MRL 的嵌套结构来自 MRL.py 中的MRL_Linear_Layer只需截取前 d 维即可得到 82048 维任意规格的表示这正是后面低维召回、高维重排的基础。模型训练流程可参考 train/train_imagenet.py 与 train/rn50_configs/rn50_40_epochs.yaml。FAISS 索引搭建与 k-NN 短名单检索打开 retrieval/faiss_nn.ipynb流程分为三步建索引加载数据库特征按nesting_list [8, 16, ..., 2048]对每个维度分别构建 Exact L2 或 HNSW 索引GPU 加速仅支持精确检索近邻搜索对每个查询取k2048长度的短名单FAISS 上限持久化保存为形如neighbors/mrl/exactl2_16dim_2048shortlist_4K.csv的邻居表供重排与指标计算复用。这样只需搜索一次 2048-NN后续所有自适应检索配置都能从这份短名单中裁剪出来省去重复索引开销。自适应检索与Funnel漏斗式加速拿到短名单后retrieval/reranking.ipynb 提供两级加速策略Adaptive Retrieval先用低维D_s如 16召回 200 个候选再用高维D_r如 2048对候选重排Funnel Retrieval把维度与短名单长度同步变化自动免去手动调参——例如以D8召回后沿 Rerank Cascade[16, 32, 64, 128, 2048]逐级重排同时 Shortlist Cascade 从[200, 100, 50, 25, 10]逐级收窄形似漏斗 。下图展示了自适应检索在 ImageNet-1K 与ImageNet-4K两个基准上的精度-算力权衡每个低维召回 高维重排组合蓝点都落在固定维度单次检索的 Pareto 前沿橙色虚线之上4K 上 Funnel 检索红色误差棒在接近基线精度的同时实现 6× 实际加速 ✅。mAPk 指标计算与结果分析最后一步由 retrieval/compute_metrics.ipynb 完成加载数据库标签、查询标签和邻居表重排后的或原始 FAISS 输出均可计算mAPk、precisionk、recallk、Top-k 准确率并绘制 mAP10 随表示维度的变化曲线。关键配置项包括模型类型mrl / mrl_e / ff、数据集1K / 4K / V2、索引类型与检索配置。下图是 ImageNet-1K 上各压缩基线SVD、Slimmable Network、随机特征选择等与 MRL 的 mAP10 对比MRL 在所有表示维度上全面领先小维度8、16 维优势尤其明显——这正说明 OOD 检索基准能放大表示质量的差异。上手清单自建OOD检索基准的7步流程从大模型数据集如 ImageNet-21K中筛选与训练集零重叠且样本充足的类别固定每类样本量划分 database召回库与 query查询集整理成ImageFolder目录结构保存 ID→类名映射文件用 inference/pytorch_inference.py 的--retrieval模式导出特征与标签.npy用 FAISS 对多组维度分别建索引一次性导出 2048-NN 短名单可选用 Funnel 重排压缩计算开销见 retrieval/README.md计算 mAPk 等指标并与固定维度检索对比验证低维表示的有效性。掌握这套流程后你不仅可以复现 MRL 的 ImageNet-4K 评测还能把它迁移到自己的领域数据上快速搭建一个可信的 OOD 图像检索基准 。【免费下载链接】MRLCode repository for the paper - Matryoshka Representation Learning项目地址: https://gitcode.com/gh_mirrors/mrl/MRL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价