45

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

 5 years ago
source link: https://www.tuicool.com/articles/7r2UzmE
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

今天,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 完成视觉和语言多模态研究项目,如下图所示为视觉问答,它同时需要学习图像和文本相关的知识。

meAR7rY.png!web

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 还计划增加一些工具、任务、数据集和参考模型。

参考文章:https://code.fb.com/ai-research/pythia/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK