【前沿】Pytorch开源VQA神经网络模块,让你快速完成看图问答

【导读】近期,NLP专家Harsh Trivedi使用Pytorch实现了一个视觉问答的神经模块网络,想法是参考CVPR2016年的论文《Neural Module Networks》,通过动态地将浅层网络片段组合成更深结构的模块化网络。这些模块可以通过联合训练来自由组合。代码已经在Github上开源,让我们来看下。

更多结果可以参考这个链接。

https://github.com/HarshTrivedi/nmn-pytorch/blob/master/visualize_model.ipynb

Neural Module Network (NMN) for VQA in Pytorch

注释:这不是一个用于神经模块网络训练的官方资源库。

NMN是通过动态地将浅层网络片段组合成更深结构的模块化网络。这些模块可以通过联合训练来自由组合。本代码是用PyTorch实现的视觉问答的神经模块网络。大部分想法直接来自下面的文章:

Neural Module Networks: Jacob Andreas, Marcus Rohrbach, Trevor Darrell and Dan Klein. CVPR 2016.

如果您在工作中使用本代码,请引用上述文章。我们在下面介绍重现实验结果的说明,首先看一下结果演示:

演示:

更多结果可以用visualize_model.ipynb看到。

https://github.com/HarshTrivedi/nmn-pytorch/blob/master/visualize_model.ipynb

依赖关系:

下面是项目的主要python依赖项: torch, torchvision caffe, matplotlib,numpy, matplotlib and sexpdata

你还需要有斯坦福的解析器(https://nlp.stanford.edu/software/lex-parser.shtml)。一旦加载完成,请确保在.bashrc中设置STANFORDPARSER,以便使目录$STANFORDPARSER / libexec /包含有stanford-parser.jar

下载数据:

您需要从VQA网站下载图像、注释和问题。你也需要下载VGG模型文件来预处理图像。为了节省您的时间和精力,确保下载的文件放置在合适的目录结构中,我准备了几个download.txt

在根目录查找中运行以下命令 find . | grep download.txt。您应该能够看到以下包含download.txt的目录:

./preprocessing/lib/download.txt
./raw_data/Annotations/download.txt
./raw_data/Images/download.txt
./raw_data/Questions/download.txt

每个download.txt都具有特定的指令,您需要在相应的目录中运行wget命令。确保文件与下载数据后相应的download.txt中提到的文件相同。

预处理:

预处理目录包含预处理raw_data所需的脚本。预处理数据被存储在preprocessed_data中。这个仓库中的所有脚本都在一些set上运行。下载数据时,默认设置(目录名称)是train2014val2014。你可以通过使用pick_subset.py构建一个像train2014-subval2014-sub这样的问题类型特定的子集。您需要确保训练/测试/验证集名称与以下脚本中一致(通常在代码顶部设置)。默认情况下,所有内容都可以在默认设置上运行,但是如果您需要特定设置,则需要按照以下注释操作。您需要按顺序运行以下脚本:

1. python preprocessing/pick_subset.py 
   [# Optional: If you want to operate on spcific question-type ]
2. python preprocessing/build_answer_vocab.py         
   [# Run on your Training Set only]
3. python preprocessing/build_layouts.py              
   [# Run on your Training Set only]
4. python preprocessing/build_module_input_vocab.py  
   [# Run on your Training Set only]
5. python preprocessing/extract_image_vgg_features.py 
   [# Run on all Train/ Test / Val Sets]

备忘录:添加setting.py以确保set名称可以用于实验的全局配置。

运行实验:

你可以用命令python train_cmp_nn_vqa.py训练模型,准确率/损失日志存在logs/cmp_nn_vqa.log。当训练完成后,选择的模型自动保存在saved_models/cmp_nn_vqa.pt

可视化模型:

选择保存的模型,并通过运行visualize_model.ipynb将其可视化。

模型评估:

运行命令pythonevaluation/evaluate.py可以对模型进行评估,在stdout上可以看到一个简短的总结报告。

接下来的计划:

  1. 添加更多的文档;
  2. 做一些代码清理工作;
  3. 在VQA数据集上记录此实现的结果;
  4. 在PyTorch中实现NMN的简短博客。

有问题?

请在hjtrivedi@cs.stonybrook.edu上发邮件给我,我会尽快把它修理好。

参考链接:

https://github.com//HarshTrivedi/nmn-pytorch

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2017-12-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CreateAMind

开源|MultiNet模型解决Kitti数据集自动驾驶中的道路分割、车辆检测和街道分类(附源代码)

MultiNet能够同时完成道路分割、汽车检测和道路分类的任务。MultiNet模型的实时存档速度和分割性能都处于最先进水平。详细的模型描述请查阅我们的论文。

2773
来自专栏ATYUN订阅号

使用多种工具组合进行分布式超参数优化

在这篇文章中,我介绍如何使用工具组合来加速超参数优化任务。这里提供了Ubuntu的说明,但可以合理地应用于任何*nix系统。

1614
来自专栏祝威廉

MLSQL如何支持部署SKLearn,Tensorflow,MLLib模型提供API预测服务

部署成API服务时,除了要把raw数据特征化成向量外,研发还要想着怎么加载模型,产生模型的框架五花八门,比如Tensorflow,SKlearn,Spark M...

1374
来自专栏机器之心

资源 | TensorFlow分布式计算机制解读:以数据并行为重

选自clindatsci 作者:Neil Tenenholtz 机器之心编译 参与:Jane W、黄小天 Tensorflow 是一个为数值计算(最常见的是训...

4247
来自专栏ATYUN订阅号

防止在训练模型时信息丢失 用于TensorFlow、Keras和PyTorch的检查点教程

如果你玩过电子游戏,你就会明白为什么检查点(chekpoint)是有用的了。举个例子,有时候你会在一个大Boss的城堡前把你的游戏的当前进度保存起来——以防进入...

6135
来自专栏磐创AI技术团队的专栏

Tensorboard 详解(上篇)

2403
来自专栏Java进阶架构师

dubbo源码解析-详解LoadBalance

终于到了集群容错中的最后一个关键词,也就是LoadBalance(负载均衡),负载均衡必然会涉及一些算法.但是也不用太担心,算法这个词虽然高大上,但是算法也有简...

1643
来自专栏racaljk

2017第八届蓝桥杯决赛(C++ B组)4.发现环

小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。 不过在最...

2644
来自专栏人工智能LeadAI

毫秒级检测!你见过带GPU加速的树莓派吗?

86510
来自专栏fangyangcoder

tensorflow笔记(三)之 tensorboard的使用

http://www.cnblogs.com/fydeblog/p/7429344.html

1495

扫码关注云+社区

领取腾讯云代金券