Facebook 发布了一个全新的多任务学习框架 Pythia,它基于 PyTorch 且可用于视觉和语言的联合任务。Pythia 是一种模块化的即插即用框架,数据科学家和机器学习开发者能快速构建、复现和构建基准模型。

项目地址:https://github.com/facebookresearch/pythia

Pythia 是个啥?

Pythia 是一个深度学习框架,它支持视觉和语言领域的多任务处理。该框架搭建于开源的 PyTorch之上,其模块化、即插即用的设计使得研究者可以迅速构建模型。Pythia 是为视觉和语言任务设计的,如与视觉数据相关的问答和自动生成图像注释。

Pythia 不但支持分布式训练及多种数据集,同时还支持自定义的损失函数、度量标准、调度和最优化器等。Pythia 还提供了常用的视觉和语言层级模块,它们都支持分布式训练。Pythia 另一个特点是内建了很多语料库,包括 VQA、VizWiz、TextVQA 和 VisualDialog,它们可以用于多任务学习,即 Pythia 能同时在多个语料训练单一多任务模型。

总体而言,Pythia 的特性主要有以下几点:

  • Model Zoo:SoTA 视觉和语言模型的推理实现,包括 LoRRA(VQA 和 TextVQA 的 SoTA)、Pythia 模型(VQA 2018 挑战赛冠军)和 BAN。
  • 多任务:支持多任务,允许在多个数据集上同时训练。
  • 数据集:包括对多种数据集内置的支持,有 VQA、VizWiz、TextVQA 和 VisualDialog。
  • 模块:提供对视觉和语言领域中多个常用层的实现。
  • 分布式:支持基于 DataParallel 和 DistributedDataParallel 的分布式训练。
  • 非指定:不指定构建在其上的数据集和模型实现。
  • 定制化:定制损失函数、度量标准、调度、最优化器、TensorBoard,满足所有定制化需求。

Pythia 有啥用?

Pythia 包含了 Facebook 在最近的 AI 竞赛(VQA 2018 挑战赛和 Vizwiz 2018 挑战赛)中获胜的元素。特征包括推理实现,以展示之前的 SOTA 模型如何达到相关基准结果并快速评估新模型。除了多任务,Pythia 还支持分布式训练、一系列数据集以及定制损失函数、度量、调度和优化器。

  • Pythia 官方文档:https://learnpythia.readthedocs.io/en/latest/

我们可以使用 Pythia 完成视觉和语言多模态研究项目,如下图所示为视觉问答,它同时需要学习图像和文本相关的知识。

Pythia 怎么用?

Pythia 的安装非常简单,各种依赖项也都会自动安装:

# Clone Pythia repository
git clone https://github.com/facebookresearch/pythia ~/pythia # Install dependencies and setup
cd ~/pythia
python setup.py develop
  1. 获取数据

Pythia 目前支持的数据集要求有两部分,即特征和 ImDB。例如,对于 TextVQA,我们需要下载如下数据和预训练权重。

cd ~/pythia;
# Create data folder
mkdir -p data && cd data; # Download and extract the features
wget https://dl.fbaipublicfiles.com/pythia/features/open_images.tar.gz
tar xf open_images.tar.gz # Get vocabularies
wget http://dl.fbaipublicfiles.com/pythia/data/vocab.tar.gz
tar xf vocab.tar.gz # Download detectron weights required by some models
wget http://dl.fbaipublicfiles.com/pythia/data/detectron_weights.tar.gz
tar xf detectron_weights.tar.gz # Download and extract ImDB
mkdir -p imdb && cd imdb
wget https://dl.fbaipublicfiles.com/pythia/data/imdb/textvqa_0.5.tar.gz
tar xf textvqa_0.5.tar.gz
  1. 训练

下载数据后就可以直接训练了:

cd ~/pythia;
python tools/run.py --tasks vqa --datasets textvqa --model lorra --config *\*
configs/vqa/textvqa/lorra.yml
  1. 推断

如果需要运行推断或生成预测,我们可以下载对应的预训练模型,并运行以下命令行:

cd ~/pythia/data
mkdir -p models && cd models; wget https://dl.fbaipublicfiles.com/pythia/pretrained_models/textvqa/lorra_best.pthcd ../.. python tools/run.py --tasks vqa --datasets textvqa --model lorra --config *\*
configs/vqa/textvqa/lorra.yml --resume_file data/models/lorra_best.pth *\*
--evalai_inference 1 --run_type inference
  • 完整的示例可以在 colab 上查看:https://colab.research.google.com/drive/1Z9fsh10rFtgWe4uy8nvU4mQmqdokdIRR

Pythia 有何重要之处

Pythia 使得进入不断发展中的视觉和语言子领域这一过程变得更加平滑,可以让研究人员专注于更快的原型和实验。Facebook 的目标是通过提高这些模型和结果的复现性来加速进程。如此一来,社区就能更容易地构建成功的系统,并对其进行基准测试。

Facebook 希望,在移除一些障碍之后,研究者能够更加快速地开发出人类和智能机器交流的新方法。这项工作还应该帮助研究者开发适应性 AI,将多种理解综合成更基于上下文的、多模态的理解。除了本次开源的内容外吗,Facebook 还计划增加一些工具、任务、数据集和参考模型。

Pythia:Facebook最新开源的视觉、语言多任务学习框架的更多相关文章

  1. 牛亚男:基于多Domain多任务学习框架和Transformer,搭建快精排模型

    导读: 本文主要介绍了快手的精排模型实践,包括快手的推荐系统,以及结合快手业务展开的各种模型实战和探索,全文围绕以下几大方面展开: 快手推荐系统 CTR模型--PPNet 多domain多任务学习框架 ...

  2. MMF的初步介绍:一个规范化的视觉-语言多模态任务框架

    在VQA, Image Caption等任务中,构建模型是一件工作量较大的工作.有没有什么能减少这些重复的工作量呢?与此同时,Pytorch,tensorflow等开源的深度学习工具包发布,大大减少了 ...

  3. 开源图形库 c语言-图形图像库 集合[转]

    开源图形库 c语言-图形图像库 集合[转] Google三维API O3D O3D 是一个开源的 Web API 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准. ...

  4. 2013 年 —— Facebook 在开源方面的工作介绍

    自从 Facebook 的第一行PHP代码,第一句 MySQL 的 INSERT 语句,开源就已经是我们工程哲学中的一个重要的部分. 现在,我们使用.维护并为大量的主要项目做出了贡献——涉及多种领域如 ...

  5. 开源的c语言人工神经网络计算库 FANN

    这年头机器学习非常的火,神经网络算是机器学习算法中的比较重要的一种.这段时间我也花了些功夫,学了点皮毛,顺便做点学习笔记. 介绍人工神经网络的基本理论的教科书很多.我正在看的是蒋宗礼教授写的<人 ...

  6. 2014年Facebook的开源成就

    2014是Facebook开源硕果丰硕的一年,其开源项目经理詹姆斯·皮尔斯(James Pearce)连续12天发布开源博客文章展示全年该社交网站在此领域取得的成就. 皮尔斯公布的成就包括以下内容: ...

  7. Facebook 正式开源其大数据查询引擎 Presto

    Facebook 正式宣布开源 Presto —— 数据查询引擎,可对250PB以上的数据进行快速地交互式分析.该项目始于 2012 年秋季开始开发,目前该项目已经在超过 1000 名 Faceboo ...

  8. 直接拿来用!Facebook移动开源项目大合集

    直接拿来用!Facebook移动开源项目大合集 时间:2014-04-22 15:37 作者:唐小引 随着iOS依赖管理工具CocoaPods和大量第三方开源库成熟起来,业界积累了大量的优秀开源项目. ...

  9. 应用于Java中的一个开源的表达式语言(Expression Language)

    OGNL(英文全称:Object Graph Navigation Language,中文名:对象导航图语言)是应用于Java中的一个开源的表达式语言(Expression Language),它被集 ...

随机推荐

  1. Golang函数-匿名函数与闭包函数

    Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  2. 51nod 1294 :修改数组 && HDU 5256:序列变换

    1294 修改数组 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  取消关注 给出一个整数数组A,你可以将任何一个数修 ...

  3. CAD转PDF再由pdf转jpg图片

    免费的PDF转JPG图片 https://www.gaitubao.com/pdf-to-jpg/

  4. springcloud--ruul(路由网关)

    Zuul的主要功能就是路由转发和过滤器 实例: 1:添加依赖pom.xml: <dependencies> <dependency> <groupId>org.sp ...

  5. cf 757C. Felicity is Coming!

    这个题还是比较劲的(题意太神了),才知道vector还可以==和排序,扒题解大法好!! #include<bits/stdc++.h> #define lowbit(x) x&(- ...

  6. 【转】R函数-diag()函数

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lili_wuwu/article/det ...

  7. Hadoop完全高可用集群安装

    架构图(HA模型没有SNN节点) 用vm规划了8台机器,用到了7台,SNN节点没用   NN DN SN ZKFC ZK JNN RM NM node1 *     *         node2 * ...

  8. springboot - 映射 /error 到自定义且实现了ErrorController的Controller

    1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...

  9. 面向对象第二个特征-继承(Inheritance)

    面向对象第二个特征-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java中的继承概述 1>.继承概述 多个类种存在相同属性和行为时,讲这 ...

  10. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring CGLlB动态代理

    JDK 动态代理使用起来非常简单,但是它也有一定的局限性,这是因为 JDK 动态代理必须要实现一个或多个接口,如果不希望实现接口,则可以使用 CGLIB 代理. CGLIB(Code Generati ...