ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

LAVIS 中基于 COCO 的跨模态检索:数据集、TR/IR 指标与 BLIP/ALBEF 实战指南

LAVIS 中基于 COCO 的跨模态检索:数据集、TR/IR 指标与 BLIP/ALBEF 实战指南 LAVIS 中基于 COCO 的跨模态检索数据集、TR/IR 指标与 BLIP/ALBEF 实战指南【免费下载链接】LAVISLAVIS - A One-stop Library for Language-Vision Intelligence项目地址: https://gitcode.com/gh_mirrors/la/LAVIS本指南以 LAVIS 仓库中的数据集卡片dataset_card/coco_retrieval.md为核心系统讲解 Microsoft COCO 数据集上的跨模态检索image-text retrieval / text-image retrieval任务从数据规模与 Karpathy 划分到 Recallk、TR 与 IR 指标的精确含义再到排行榜解读、自动下载脚本、数据集/模型配置与端到端评估命令。读完本文你能够在 LAVIS 中一键复现 COCO 检索评估流程并理解 BLIP、ALBEF 等检索模型在 RetrievalTask 中的底层实现。一、COCO 数据集概览一图五句的天然多模态语料Microsoft COCO 的描述数据集包含超过 150 万条人工生成的描述captions覆盖超过 33 万张图片对于训练集和验证集中的每一张图片都提供 5 条独立的人工标注描述。这种一图多句的标注结构天然适合构造检索任务的监督信号同一张图片的 5 条描述互为正样本而其它图片的描述则构成海量负样本。1.1 检索任务使用的 Karpathy 划分LAVIS 中的 COCO 检索coco_retrieval使用的是 Karpathy 划分的标注文件这一事实可从数据集构建器的配置直接确认。在 lavis/configs/datasets/coco/defaults_ret.yaml 中三个划分的标注文件分别是划分标注文件MD5traincoco_karpathy_train.jsonaa31ac474cf6250ebb81d18348a07ed8valcoco_karpathy_val.jsonb273847456ef5580e33713b1f7de52a0testcoco_karpathy_test.json3ff34b0ef2db02d01c37399f6a2a6cd1这些 JSON 标注文件与原始图片storage: coco/images/配合使用标注文件中的每条记录包含图片文件名、image_id与对应的 5 条caption。1.2 从源码看数据加载结构LAVIS 为 COCO 检索注册了专门的构建器COCORetrievalBuilder见 lavis/datasets/builders/retrieval_builder.py训练与评估分别使用两类数据集RetrievalDataset训练阶段使用__getitem__返回image、text_input经文本处理器处理后的 caption、image_id与instance_idRetrievalEvalDataset评估阶段使用在初始化时即构建text、image、txt2img、img2txt四个索引结构——其中txt2img记录每条文本属于哪张图img2txt记录每张图对应哪几条文本。这两个索引正是后续计算 Recall 指标的直接依据见 lavis/datasets/datasets/retrieval_datasets.py。二、任务定义双向的跨模态检索COCO 检索是一个双向cross-modal检索任务数据集卡片明确了两个方向image-to-textI2T图中检索文给定一张图片作为查询query从文本图库gallery中检索出描述它的文本text-to-imageT2I文中检索图给定一句文本作为查询从图片图库中检索出与之匹配的图片。这两个方向共享同一批图-文对区别只在于查询与图库的角色互换。在 LAVIS 的评估流程中模型一次性产出两个方向的相似度矩阵再分别计算指标详见第三节。三、评估指标Recallk、TR 与 IR3.1 指标定义COCO 检索任务采用召回率 Recallk作为通用评估指标即执行 k 次检索尝试取相似度 Top-k后正确结果被召回的比例k 通常取 1、5、10。数据集卡片用两个缩写区分检索方向TRText Retrieval图像检索文本方向的召回率即image-to-text的 RecallkIRImage Retrieval文本检索图像方向的召回率即text-to-image的 Recallk。因此排行榜上会同时出现TR1 / TR5 / TR10与IR1 / IR5 / IR10共六项指标。3.2 源码级的指标计算LAVIS 的RetrievalTask在评估时调用模型的compute_sim_matrix得到score_i2t与score_t2i两个相似度矩阵随后由_report_metrics完成指标统计见 lavis/tasks/retrieval.pyTR 方向对每张图片的得分排序np.argsort(score)[::-1]在该图片对应的多条真实 caption 中取排名最靠前的那条作为该样本的 rank再统计rank kk1/5/10的占比IR 方向对每条文本的得分排序取该文本对应真实图片的 rank同样统计rank k的占比最终输出txt_r1/txt_r5/txt_r10、img_r1/img_r5/img_r10以及平均值txt_r_mean、img_r_mean、r_mean和agg_metrics并追加写入输出目录下的evaluate.txt。四、COCO Retrieval 排行榜按 TR1 排序下表完整继承自数据集卡片反映 LAVIS 发布时点 COCO 检索Karpathy test 划分上代表性模型的公开成绩RankModelTR1TR5TR10IR1IR5IR10来源1BLIP82.495.497.965.186.391.8arXiv:2201.12086Salesforce/BLIPHuggingFace demoSalesforce AI Research blog2X-VLM81.295.698.263.485.891.5arXiv:2111.08276v3zengyan-97/X-VLM3ALBEF77.694.397.260.784.390.5arXiv:2107.07651Salesforce/ALBEFSalesforce AI Research blog3ALIGN77.093.596.959.983.389.8arXiv:2102.059184VinVL75.492.996.258.883.590.3arXiv:2101.00529v2microsoft/Oscar5OSCAR73.592.296.057.582.889.8arXiv:2004.06165v5microsoft/Oscar6UNITER65.788.693.852.979.988.0ECCV 2020ChenRocks/UNITER几点值得注意的规律TR1 与 IR1 存在明显差距如 BLIP 为 82.4 vs 65.1由于每张图有 5 条 caption 而每条 caption 只对应 1 张图I2T 方向命中的天然概率更高因此 IR 指标普遍低于 TR 指标BLIP 在该榜单上位居第一其 TR1 达到 82.4、IR1 达到 65.1ALBEF 以 77.6 / 60.7 紧随其后。这两个模型在 LAVIS 中均有开箱即用的实现与微调权重。五、数据准备自动下载脚本5.1 一键下载命令数据集卡片给出了自动下载命令cd lavis/datasets/download_scripts python download_coco.py5.2 脚本背后的逻辑查看 lavis/datasets/download_scripts/download_coco.py其核心逻辑是从 COCO 官方源下载四组原始图片压缩包DATA_URL字典定义了train2014、val2014、test2014、test2015四个 zip 的 URL 与 MD5下载根目录取自 lavis/configs/datasets/coco/defaults_cap.yaml 中datasets.coco_caption.build_info.images.storage字段即coco/images/并通过 LAVIS 的缓存路径机制定位实际存储位置若目标目录已存在则直接退出避免重复下载下载/解压失败时会清理下载目录。需要说明的是该脚本只负责拉取原始图片而检索任务所需的 Karpathy 标注 JSON 由 LAVIS 在首次加载数据集时依据 lavis/configs/datasets/coco/defaults_ret.yaml 中的url与md5自动下载并校验。两部分就位后数据集即可被COCORetrievalBuilder正常构建。六、在 LAVIS 中配置 COCO 检索数据集与模型6.1 数据集配置defaults_ret.yamllavis/configs/datasets/coco/defaults_ret.yaml 是coco_retrieval数据集的默认配置关键字段包括data_type: images声明为图像数据区别于videos、featuresbuild_info.annotations.{train,val,test}三个划分的标注 JSON 的url、md5与storage相对路径build_info.images.storage: coco/images/原始图片目录。注释中的Be careful not to append minus sign (-) before split提醒不要在划分名前加负号否则会被配置系统当作排除项处理而非正常划分。6.2 检索模型配置BLIP 与 ALBEFLAVIS 为 COCO 检索内置了两套开箱即用的模型配置BLIPlavis/configs/models/blip_retrieval_coco.yamlarch: blip_retrievalload_finetuned: True微调权重为blip_coco_retrieval.pthqueue_size: 57600对比学习负样本队列长度ViT 编码器vit_type: base、image_size: 384、vit_grad_ckpt: True开启梯度检查点以省显存、vit_ckpt_layer: 4med_config_path: configs/models/med_config.json文本编码器XBertEncoder结构配置embed_dim: 256图文投影后的公共嵌入维度。ALBEFlavis/configs/models/albef_retrieval_coco.yamlarch: albef_retrieval微调权重为albef_coco_retrieval_lavis.ptqueue_size: 65536、embed_dim: 256对比学习超参数momentum: 0.995动量编码器更新系数、alpha: 0.4动量蒸馏软标签权重、temp: 0.07温度系数、use_distill: True启用动量蒸馏max_txt_len: 30文本最大长度ViT 相关vit_type: base、image_size: 384、vit_grad_ckpt: False。6.3 模型实现要点源码级从源码结构看BLIP 与 ALBEF 的检索模型lavis/models/blip_models/blip_retrieval.py 与 lavis/models/albef_models/albef_retrieval.py均采用三件套设计双编码器 投影层ViT 视觉编码器与 BERT 风格文本编码器各自输出[CLS]特征经vision_proj/text_proj线性投影到embed_dim256并做 L2 归一化动量编码器与队列通过deepcopy复制出一套动量编码器_m后缀配合image_queue/text_queue缓冲SharedQueueMixin、MomentumDistilationMixin实现在 lavis/models/base_model.py提供海量负样本双任务训练目标loss_itcImage-Text Contrastive对比学习损失loss_itmImage-Text Matching二分类匹配损失itm_head输出 2 分类 logits总损失为二者之和。评估阶段则调用compute_sim_matrix(data_loader, task_cfg)其中k_test来自运行配置见下节一次前向产出双向相似度矩阵。七、端到端评估与训练实战7.1 评估配置ret_coco_eval.yamlLAVIS 为 BLIP 提供了完整的 COCO 检索评估配置 lavis/projects/blip/eval/ret_coco_eval.yaml关键运行参数model.arch: blip_retrieval、model.model_type: coco加载 COCO 微调权重run.task: retrieval挂载RetrievalTaskbatch_size_train: 32、batch_size_eval: 128、num_workers: 4train_splits: [train]、valid_splits: [val]、test_splits: [test]k_test: 256评估时相似度矩阵计算的 Top-k 候选规模evaluate: True纯评估模式。7.2 运行评估命令官方脚本 run_scripts/blip/eval/eval_ret_coco.sh 给出的命令为python -m torch.distributed.run --nproc_per_node8 evaluate.py --cfg-path lavis/projects/blip/eval/ret_coco_eval.yaml脚本同时注释了--nproc_per_node16的更大规模分布式版本。执行后RetrievalTask会在主进程输出txt_r1/txt_r5/txt_r10与img_r1/img_r5/img_r10等结果并将 JSON 形式的指标写入output/BLIP/Retrieval_COCO/evaluate.txt可直接与排行榜数据对照验证。7.3 训练复现如需从零微调LAVIS 同样提供了训练入口训练脚本位于 run_scripts/blip/train/train_retrieval_coco.sh对应的训练配置在lavis/projects/blip/train/目录下调用方式与评估一致将--cfg-path指向训练配置、并通过evaluate.py或 train.py 启动。ALBEF 的评估/训练配置则位于lavis/projects/albef/与run_scripts/albef/对应目录。需要注意实际训练需要 GPU 环境并会使用第三节所述的 ITC ITM 联合损失与动量队列机制。八、参考文献数据集卡片引用的原始文献为Microsoft COCO Captions: Data Collection and Evaluation Server, Xinlei Chen, Hao Fang, Tsung-Yi Lin, Ramakrishna Vedantam, Saurabh Gupta, Piotr Dollar, C. Lawrence Zitnick.此外若需进一步深入可阅读 LAVIS 中相关实现检索数据集 lavis/datasets/datasets/retrieval_datasets.py、任务与指标 lavis/tasks/retrieval.py、BLIP 检索模型 lavis/models/blip_models/blip_retrieval.py 与 ALBEF 检索模型 lavis/models/albef_models/albef_retrieval.py以及对应的测试用例 tests/models/test_blip.py 与 tests/models/test_albef.py。【免费下载链接】LAVISLAVIS - A One-stop Library for Language-Vision Intelligence项目地址: https://gitcode.com/gh_mirrors/la/LAVIS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表