ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ParlAI 中的 COCO Captions 图像描述任务:从数据自动构建、Teacher 参数到端到端训练实战

ParlAI 中的 COCO Captions 图像描述任务:从数据自动构建、Teacher 参数到端到端训练实战 NLP人工智能深度学习【免费下载链接】ParlAIA framework for training and evaluating AI models on a variety of openly available dialogue datasets.项目地址https://gitcode.com/gh_mirrors/pa/ParlAI点击查看免费下载COCO Captions 是 ParlAI 内置的视觉Visual图像描述任务其数据源自 2015 年 COCO Caption Competition 的标注任务目标是根据给定图片生成一句自然语言描述。本文以 parlai/tasks/coco_caption/README.md 为主体结合 agents.py、三份数据构建脚本与 image_featurizers.py 等源码完整讲解该任务的数据版本与切分逻辑、Teacher 实现与全部命令行参数、图像特征加载机制以及从展示数据、单任务/多任务训练、评估到交互式体验的完整实操流程。任务概览COCO Captions 在 ParlAI 中的定位根据任务 README 的定义任务名COCO_Captions数据来源2015 COCO Caption Competition 派生的标注原始数据来自 COCO 官网cocodataset.org 的 download 页面标签#COCO_Captions、#All、#Visual该任务在任务注册表中被正式收录见 parlai/tasks/task_list.py其id为COCO_Captionstask为coco_caption标签为[Visual]因此在 ParlAI 中可以用简写-t coco_caption直接引用。它属于 ParlAI 中典型的图像输入、文本输出任务样本没有真实的多轮对话因此 Teacher 会为每张图片附加一个通用问题 Describe the above picture in a sentence.在 agents.py 中定义为QUESTION常量以便与 ParlAI 的标准对话数据流text → labels对齐。数据版本与切分设计2014 与 2017 两套体系agents.py 的模块文档说明该任务实际上包含两个版本2014 切分源自 2015 竞赛采用 Karpathy 等在论文Deep visual-semantic alignments for generating image descriptions中定义的切分方案splits 来自斯坦福 CS231n 主页的 deepimagesent 资源。规模约为训练集约 82k 张图验证集 5k 张测试集 5k 张。验证集与测试集的图片均取自原始约 40k 张的验证集中。2014 版本的数据中还包含restval切分原始验证集中未被 val/test 使用的剩余图片这与后续的--include-rest-val参数直接相关。2017 切分官方竞赛直接使用 MSCOCO Image Captioning 2017 官方任务定义的 train/val/test 切分。版本与切分的对应关系源码视角Teacher 在_path()agents.py中根据datatype与版本决定加载路径datatype 前缀2014 标注2017 标注图片目录traindataset_coco.json中split traincaptions_train2017.jsontrain2014/COCO_train2014_*.jpg/train2017/*.jpgvalidsplit valcaptions_val2017.jsonval2014/COCO_val2014_*.jpg/val2017/*.jpgtestsplit test无标注改用image_info_test2017.jsontest2014/COCO_test2014_*.jpg/test2017/*.jpg需要特别注意的是2017 测试集没有公开标注因此测试阶段只提供图片 ID 与文件路径信息image_info_test2017.jsonnum_examples()也会退化为返回测试图片数量而非标注条数见 agents.py。数据自动构建下载、校验与目录布局ParlAI 的数据构建遵循惰性构建模式首次使用时检查数据是否已构建未构建则自动下载、校验、解压并打上版本标记。COCO Captions 的构建逻辑拆分为三份脚本build_2014.pybuild_2014.py 定义了 4 个DownloadableFile资源train2014.zip、val2014.zip、test2014.zip图片来自 parl.ai 镜像均带 SHA-256 校验值dataset_coco.tgzKarpathy 切分的标注即 2014 版本使用的COCO_2014_Caption/dataset_coco.json。其中buildImage(opt)负责下载三份图片 zip 到COCO-IMG-2014目录build(opt)负责下载标注到COCO_2014_Caption目录二者分别以版本号1与1.0调用build_data.mark_done标记完成。如果检测到旧版本数据会先通过build_data.remove_dir清理再重新构建。build_2015.pybuild_2015.py 对应 2015 竞赛数据test2015.zip图片与image_info_test2015.zip测试图片信息分别落到COCO-IMG-2015与COCO_2015_Caption目录。注意该脚本当前只被vqa_v1、vqa_v2等任务复用其buildImage见下文与其他任务的协同coco_caption的 Teacher 并不直接使用 2015 数据。build_2017.pybuild_2017.py 定义了 5 个资源train2017.zip、val2017.zip、test2017.zip图片以及annotations_trainval2017.zip标注、image_info_test2017.zip测试信息。图片落在COCO-IMG-2017标注解压到COCO_2017_Caption/annotations/。构建脚本的可维护性保障仓库在 tests/nightly/cpu/test_urls.py 中把coco_caption的三个构建脚本列为检查对象用于持续校验下载 URL 的有效性——这也是 ParlAI 对数据可复现的一项工程保障。用户在本地首次运行该任务时只需保证--datapath目录有足够磁盘空间ParlAI 会自动完成全部下载与校验无需手工干预。Teacher 实现解析DefaultTeacher 与参数说明任务的核心实现是 agents.py 中的DefaultTeacher它继承自FixedDialogTeacher并提供两个版本子类V2014Teacher将version固定为2014agents.pyV2017Teacher将version固定为2017agents.py这也是默认版本。核心命令行参数add_cmdline_argsDefaultTeacher.add_cmdline_args在 agents.py 中注册了以下参数参数类型默认值作用说明--use_introboolFalse是否为每条样本附带一句引导问题即 Describe the above picture in a sentence.主要为了display_data时更易读--num_candsint150评估valid/test时为每个样本采样的候选答案数量设置为-1表示使用全部候选--include_rest_valboolFalse训练时是否把未使用的验证集图片restval一并纳入训练数据仅 2014 版本生效--test-splitint-1取值范围[-1, 0, 1, 2, 3, 4]-1表示使用全部 5k 测试图否则按每 1k 图一个切片选择 1k 测试图用于候选构建--image_modestrno_image_model图像特征提取模式继承自图像相关 Agent详见下文此外 Teacher 的构造函数还会读取opt[test_split]、opt[datatype]等全局参数。数据加载逻辑_setup_data_setup_dataagents.py按版本与 datatype 决定加载内容2014读取dataset_coco.json的images数组按每条记录的split字段train/restval/val/test过滤出对应子集测试集若指定了--test-split则按[start:end]切片 1000 张。候选列表self.cands由当前子集所有句子的raw文本拼接而成。2017非测试阶段读取captions_*.json的annotations数组测试阶段读取image_info_test2017.json。候选列表通过load_candidates()agents.py从 val及 test 时额外拼接 train标注中收集。样本产出getget()agents.py返回一个actiondict关键字段包括episode_done True每条样本独立成 episode单轮任务text仅在--use_intro为真时出现值为通用问题labels2014 版本是该图所有人工标注句子的raw文本列表2017 版本是单条captionimage_id2014 用cocoid2017 用image_idsplit2014 版本额外附带供restval图片路径切换使用label_candidates评估非 train阶段的候选列表。注意其采样细节2014 版本先用固定随机种子random.Random(episode_idx)抽取负样本再把真实标签混入并 shuffle保证答案一定出现在候选中2017 版本使用random.Random(episode_idx).choices从验证集候选采样随后将真实标签移除/加入以构造候选。图像异步预加载机制DefaultTeacher实现了next_example()与submit_load_request()agents.py当image_mode ! no_image_model时Teacher 会在返回当前样本的同时把下一条样本的图片通过ImageLoader在后台线程加载并缓存data_loader.request_load从而用流水线方式掩盖图片 I/O 与 CNN 特征提取的延迟。图片文件名由image_id按%012d.jpg格式补零拼接例如COCO_train2014_000000000042.jpg。这一设计使大规模图像训练不必等待每张图片实时读取。图像特征提取ImageLoader 与 image_mode 全景图像的加载与特征化由 parlai/core/image_featurizers.py 中的ImageLoader完成。Teacher 在初始化时通过ImageLoader(opt)创建实例agents.py。支持的 image_modeImageLoader内置的IMAGE_MODE_SWITCHERimage_featurizers.py定义了受支持的 CNN 模式包括ResNet 系列resnet18 / resnet34 / resnet50 / resnet101 / resnet152ResNeXt-WSL 系列resnext101_32x8d_wsl / 32x16d_wsl / 32x32d_wsl / 32x48d_wslspatial 变体以上各模式的_spatial后缀版本保留空间维度特征例如目标检测式任务常用非 CNN 模式no_image_model不加载图片、raw原始像素、asciiASCII 渲染文本。ResNet 通过 torchvision 的预训练权重初始化并截断分类层image_featurizers.pyResNeXt 则通过torch.hub从facebookresearch/WSL-Images加载image_featurizers.py因此使用 ResNeXt 需要 PyTorch 1.1.0 与 torchvision 0.3.0。预处理与相关参数ImageLoader使用Resize → CenterCrop → ToTensor → Normalize(mean[0.485,0.456,0.406], std[0.229,0.224,0.225])的标准 ImageNet 归一化流程image_featurizers.py对应的--image-size与--image-cropsize参数由 ParlaiParser 的图像参数组提供。实际训练时ParlAI 通常会对图片特征做缓存与并行加载避免每个 epoch 重复前向计算。端到端实操展示、训练、评估与交互1. 查看数据display_data使用display_data脚本即可快速查看任务样本。以下命令打印 2014 版本的验证集样本会触发自动下载与构建python parlai/scripts/display_data.py -t coco_caption:V2014Teacher -dt valid --use_intro True若使用默认 2017 版本python parlai/scripts/display_data.py -t coco_caption -dt valid --use_intro True2. 单任务训练image_seq2seqParlAI 中与该任务搭配最典型的模型是 parlai/agents/image_seq2seq 的image_seq2seq——一个融合图像特征的 Transformer Seq2Seq 生成模型ImageSeq2seqAgent结合TransformerGeneratorAgent与TorchImageAgent。在 COCO Captions 上训练python parlai/scripts/train_model.py \ -m image_seq2seq \ -t coco_caption \ --image-mode resnext101_32x48d_wsl \ -mf /tmp/coco_caption_model--image-mode选择特征提取 CNN如resnext101_32x48d_wsl-mf指定模型保存路径若想加入引导问题或 restval 数据追加--use_intro True与--include-rest-val True。3. 多任务训练与下游应用COCO Captions 常与其他任务联合做多任务训练。官方 image_seq2seq README 给出了图像描述 对话的多任务示例python parlai/scripts/train_model.py \ -m image_seq2seq \ -t coco_caption,convai2 \ -mf /tmp/model \ --image-mode resnext101_32x48d_wsl此外多模态对话模型 Multi-Modal BlenderBotMMB在其模型卡 parlai/zoo/multimodal_blenderbot/README.md 中将 COCO Captions 作为领域自适应预训练数据命令中包含parlai tm -t coco_caption --include-rest-val True ...即通过--include-rest-val True把 2014 的 restval 图片也纳入预训练语料。这印证了 COCO Captions 在 ParlAI 视觉对话研究如 dodecaDialogue中的基础数据地位。4. 评估eval_model在验证集上评估生成模型并指定候选数python parlai/scripts/eval_model.py \ -m image_seq2seq \ -t coco_caption \ -dt valid \ --image-mode resnext101_32x48d_wsl \ --num-cands 100 \ -mf /tmp/coco_caption_model--num-cands 100表示每个样本采样 100 个候选答案配合 rank 类指标--num-cands -1则使用全部候选评估更充分但更慢。对于 2014 测试集可用--test-split 0只评估第 1k 张测试图以快速验证。5. 交互式体验interactive加载训练好的模型进行单轮交互给定一张图片生成描述python parlai/scripts/interactive.py \ -m image_seq2seq \ -t coco_caption \ --image-mode resnext101_32x48d_wsl \ -mf /tmp/coco_caption_model注意该任务本身是单轮图像描述交互时模型根据图片输入直接输出描述语句。与其他任务的协同图片基础设施复用COCO 图片是 ParlAI 视觉任务家族共享的基础设施多个任务直接复用本任务的构建脚本parlai/tasks/visdial/agents.py导入parlai.tasks.coco_caption.build_2014.buildImage下载 VisDial 所用的 2014 图片parlai/tasks/vqa_v1/agents.py复用build_2014与build_2015的buildImageparlai/tasks/vqa_v2/agents.py同样复用 2014/2015 图片构建。这意味着只要在 ParlAI 中跑过 COCO Captions或任一上述任务COCO-IMG-2014、COCO-IMG-2015等图片目录就会被共享复用避免重复下载数十 GB 数据。常见问题与注意事项磁盘与网络首次运行会自动下载大量图片与标注2014 约 3 个 zip 标注 tgz2017 为 3 个图片 zip 2 个标注 zip并做 SHA-256 校验若构建中断重跑会自动检测未完成状态。2017 测试集无标注testdatatype 下没有真实标签只能输出模型生成结果用于外部评测num_examples返回图片数量而非标注条数。--include-rest-val仅对 2014 版本有意义该参数在_setup_data中只作用于 2014 的restval子集2017 版本无 restval 概念。候选采样可复现性Teacher 使用random.Random(episode_idx)作为随机源同一数据下候选采样结果可复现。--image-mode默认不加载图片默认no_image_model仅提供文本标注要训练视觉模型必须显式指定 CNN 模式并确保安装了匹配的 torchvision 版本ResNeXt 需要torch.hub支持。小结COCO Captions 是 ParlAI 中最具代表性的图像 → 文本任务之一通过 agents.py 中版本化的 Teacher 设计同时支持 Karpathy 2014 切分与官方 2017 切分通过三份 build 脚本实现数据的自动下载、校验与多任务共享再配合image_seq2seq模型与ImageLoader的多模式特征提取即可快速搭建图像描述乃至视觉对话的完整训练评估流水线。无论是入门视觉语言建模还是复现多模态对话工作coco_caption都是一个开箱即用、体系完整的起点。赞分享NLP人工智能深度学习【免费下载链接】ParlAIA framework for training and evaluating AI models on a variety of openly available dialogue datasets.项目地址https://gitcode.com/gh_mirrors/pa/ParlAI点击查看免费下载相关推荐ParlAI 图像问答任务 MNIST_QA 全解析从数据构建到 Teacher 实现与调试实战ParlAI 图像问答任务 MNIST_QA 全解析从数据构建到 Teacher 实现与调试实战 MNIST_QA 是 ParlAI 内置的一个轻量级视觉问答NLP人工智能深度学习ParlAI 中的 bAbI 任务完全指南从 1k/10k 数据加载、Teacher 实现到多任务训练ParlAI 中的 bAbI 任务完全指南从 1k/10k 数据加载、Teacher 实现到多任务训练 导读 本文围绕 parlai/tasks/babi/RNLP人工智能深度学习ParlAI 中的 WikiQA 任务从数据构建到 Teacher 实现的开放域问答实战指南ParlAI 中的 WikiQA 任务从数据构建到 Teacher 实现的开放域问答实战指南 WikiQA 是一个基于 Wikipedia 构建的开放域问答NLP人工智能深度学习上一篇CANN/asc-devkit asc_reduce_min归约最小值API下一篇从LocalProcess到KubernetesJupyterHub Spawner选型指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表