FAIR MMF框架的从零开始
MMF 框架简介(A modular framework for vision & language multimodal)
1.框架特色
MMF 是基于Python 与Pytorch完成的与视觉&语言相关的多模态模块化框架,易于复现并且具有极强的可扩展性。
MMF的官方网页:https://mmf.sh/
它包含以下几个方面的特点:
1.1 模型池(Model Zoo):模型池中包含当前主流的视觉&语言模型的参考实现,包括VisualBERT,ViLBERT,M4C(TextVQA和TextCaps上的SoTA),Pythia(VQA 2018挑战赛冠军)等模型。
1.2 支持多任务:支持一起训练多个数据集。
1.3 数据集:该框架支持多种数据集,包括VQA,VizWiz,TextVQA,Visual Dialog和COCO Caption等。运行特定的脚本文件可以自动为用户下载并设置数据集的格式。但是在实际使用过程中,数据下载过程中需要访问国外站点,由于网络的原因很容易发生自动下载失败。笔者采用了先于本地下载成功(…)后,再将其上传到服务器(winscp等)进行实验的方法
1.4 网络层模块化:MMF提供许多视觉&语言模型常用网络层的实现。
1.5 分布式:MMF支持使用DistributedDataParallel进行分布式训练。
2.框架搭建与运行
在本节,将以FAIR 提出的M4C模型为例,在MMF框架下完成实验。
Paper:Iterative Answer Prediction with Pointer-Augmented Multimodal Transformers for TextVQA
arxiv:https://arxiv.org/abs/1911.06258
2.1 框架搭建
2.1.1 Conda下虚拟环境创建
conda create -n mmf python=3.7
source activate mmf
conda install pytorch torchvision cudatoolkit=10.2
2.1.2 从源代码安装
git clone https://github.com/facebookresearch/mmf.git
cd mmf
pip install --editable .
如果由于网络问题git clone速度太慢的话,一般来说可以采用两种方案:
- 先将github代码保存到gitee码云仓库后,再对码云仓库内代码进行git clone 。
- 直接从https://github.com/facebookresearch/mmf里下载代码的zip文件,然后上传至服务器解压,将目录名从mmf-master修改为mmf,cd mmf 后再以同样命令进行安装。
2.2 实验准备
2.2.1 下载数据集
在MMF框架中,模型处理的数据对象并非是原始的数据,而是原始数据经过一系列特征提取(图像Faster-RCNN, OCR的Fasttext / PHOC,Question的Tokenization)之后的数据,数据集自动下载模块位于…/mmf/mmf/utils/download.py文件中。
数据集的下载地址在…/mmf/mmf/configs/zoo/datasets.yaml文件中。
以TextVQA数据集为例,
textvqa:
defaults:
version: 0.5.5_2020_06_30
resources:
features:
- url: https://dl.fbaipublicfiles.com/pythia/datasets/textvqa/defaults/features/features.tar.gz
file_name: features.tar.gz
hashcode: 960f69c651f5c6532b4e9d8310597aa8d21c65074768c9702ea822e4b2867a0d
annotations:
- url: mmf://datasets/textvqa/defaults/annotations/annotations.tar.gz
file_name: annotations.tar.gz
hashcode: a72e43e19b4fd1b4b96e45de71a7d0fab0d860cd36ccf12b597c2c6a202eb10b
extras:
- url: mmf://datasets/textvqa/defaults/extras.tar.gz
file_name: extras.tar.gz
hashcode: 68dc3b4aeffe4dce24ebb5d373baf0c304fbfbec73f0c1550118a85e90286e38
caffe2:
version: 0.5.5_2020_04_28
resources:
features:
- url: mmf://datasets/textvqa/defaults/features/features.tar.gz
file_name: features.tar.gz
hashcode: f78f6a8e3c7c9c40c8034303457ebcbd5f2bf999cf8aeeba0f6b6f5403dd7bcf
ocr_en:
version: 0.5.5_2020_04_28
resources:
features:
- url: mmf://datasets/textvqa/ocr_en/features/features.tar.gz
file_name: features.tar.gz
hashcode: 3542dff9338540ff2add59bb2db290d9ea5f82a4f21ab07fe39351a82b699ee0
ocr_ml:
version: 0.5.5_2020_04_28
resources:
features:
- url: mmf://datasets/textvqa/ocr_ml/features/features.tar.gz
file_name: features.tar.gz
hashcode: 98d361e64d88df93483847c3e2