Facebook最新力作Pythia:模块化、即插即用,极大简化模型进展(2)
注册表 受到Redux全球商店的启发,Pythia生态系统所需的有用信息已在注册表中注册。可以将注册表视为框架的多个部分所需的信息的通用存储,并在需要该信息的任何地方起作用信息源。 注册表还基于如上所述的唯一密钥来注册模型、任务、数据集等。 注册表的函数可以用作需要注册的类的装饰器(例如模型等) 配置 根据研究需要,Pythia中的大多数参数/设置都是可配置的。 Pythia特定的默认值(training_parameters)存在于: pythia/common/defaults/configs/base.yml 其中详细的注释描述了每个参数的用法。为了便于使用和模块化,每个数据集的配置分别保存在: pythia/common/defaults/configs/tasks/[task]/[dataset].yml 可以从Tasks中的表中获取数据集的[task]值和数据集部分。模型配置也是分开的,并且是用户在创建自己的模型时需要定义的部分。 由于每个数据集的单独配置,这个概念可以扩展到执行多任务并在此包含多个数据集配置。 处理器 处理器的主要目的是使数据处理流程尽可能与不同数据集相似,并允许代码重用。 处理器接受带有与所需数据相对应key的字典,并返回带有处理数据的字典。这有助于通过修复所需的签名来使处理器独立于逻辑的其余部分。 处理器用于所有数据集以切换数据处理需求。在处理器文档中了解有关处理器的更多信息。 SampleList SampleList受到了maskrcnn-benchmark中BBoxList的启发,但更为通用。与Pythia集成的所有数据集都需要返回一个Sample,该Sample将被整理到SampleList中。 现在,SampleList带有许多方便的功能,可以轻松地批量处理和访问事物。对于例如样本是带有一些key的字典。在SampleList中,这些key的值将根据它是张量还是列表而被巧妙地分组,并分配回该字典。 因此,终端用户可以很好地将这些key组合在一起,并可以在他们的模型中使用它们。与Pythia集成的模型接收SampleList作为参数,这再次使trainer对模型和数据集不再有任何影响。在其文档中了解有关Sample和SampleList的更多信息。 预训练模型在Pythia中使用预训练模型进行推理很容易。从下表中选取一个预训练模型,并按照步骤进行推理或生成预测让EvalAI评估。(注意,这部分内容需要先安装教程中介绍的数据,教程链接在文末) 现在,假设你到预培训模型model是link(从table中选择>右键单击>复制链接地址),相应的配置应该位于configs/[task]/[dataset]/[model].yml。例如,vqa2 train_and_val的配置文件应该是configs/vqa/vqa2/pythia_train_and_val.yml。现在要运行EvalAI的推断,请运行以下命令: 如果要在val上进行培训或评估,请相应地将run_type改为train或val。你还可以使用多个运行类型,例如进行训练、对val进行推断、还可以将--run_type设置为train+val+inference进行推断。 如果删除--evalai_inference论证,Pythia 将执行推断并直接在数据集上提供结果。请注意,对于测试集,这是不能用的,因为我们没有它们的答案/目标。因此,这对于在本地执行 val集的推理很有用。 如果删除--evalai_inference论证,Pythia 将执行推断并直接在数据集上提供结果。请注意,对于测试集,这是不能用的,因为我们没有它们的答案/目标。因此,这对于在本地执行 val集的推理很有用。 下表显示了各种预培训模型的评估指标: Demo演示 相关资源: Github: https://github.com/facebookresearch/pythia Demo: https://colab.research.google.com/drive/1Z9fsh10rFtgWe4uy8nvU4mQmqdokdIRR 教程: https://learnpythia.readthedocs.io
(编辑:ASP站长网) |