murel:视觉问答的多模态关系推理

murel.bootstrap.pytorch的Python项目详细描述


#murel:mulmodal relational reasoning for visual question answering

**murel network**是一种端到端学习的机器学习模型,用于回答有关图像的问题。首先,它提取场景的图形表示,其中每个节点是一个对象或区域。其次,它将问题表示与murel单元多次融合,以逐步优化视觉和问题交互。最后,通过一个隐式注意机制和一个双线性模型来回答这个问题。有趣的是,murel网络并不包括一个明确的注意机制,通常是最先进模型的核心。它对场景的丰富矢量表示甚至可以用于可视化每一步的推理过程。

<;p align="center">;
<;img src="https://github.com/cadene/murel.bootstrap.pytorch/blob/master/assets/murel嫒net.png?raw=true"width="900"/>;
<;/p>;

**murel cell**是一种新颖的推理原语,它模拟了问题和图像区域之间的交互。它的成对关系模块通过在建模中考虑节点的邻域关系,丰富了每个节点的多模态表示。

<;p align="center">;
<;img src="https://github.com/cadene/murel.bootstrap.pytorch/blob/master/assets/murel嫒cell.png?raw=true"width="600"/>;
<;/p>;

此外,我们还提供了预先训练的模型和复制实验所需的所有代码。anaconda](1-python-3--anaconda)
*[作为独立项目](2-as-standalone-project)
*[下载数据集](3-download-datasets)
*[作为python库](2-as-a-python-library)
*[快速启动](快速启动)
*[训练模型](训练模型)
*[评估一个模型(evaluate-a-model)
*[重现结果](\重现结果)
*[vqa2(vqa2数据集)
*[vqacp2(vqacp2)(vqacp2数据集)
*[tdiuc数据集]
*[pretrained模型(pretrained模型)
*[有用命令](有用命令)
*[pretrained模型(pretrained模型)
*[引文]
*[引文][引文][引文][引文]。;引文)
*[海报](海报)
*[作者](作者)
*[确认](确认)



python 3&anaconda

我们不支持python 2。我们建议您使用[anaconda]安装python 3(https://www.continum.io/downloads)。然后,您可以创建一个环境。作为独立项目,conda create--name murel python=3.7
source activate murel
git clone--recursive https://github.com/cadene/murel.bootstrap.pytorch.git
cd murel.bootstrap.pytorch
pip install-r requirements.txt
``

下载数据集

下载注释,vqa实验的图像和功能:
``
bash murel/datasets/scripts/download_vqa2.sh
bash murel/datasets/scripts/download_vgenome.sh
bash murel/datasets/scripts/download_tdiuc.sh
bash murel/datasets/scripts/download_vqacp2.sh
```

**注意:*这些功能有从预先训练过的快速RCNN中提取。我们暂时不提供用于预训练或提取特征的代码。作为一个python库)

您可以通过一种简单的方式访问数据集和模型:
``python
from murel.datasets.vqacp2 import vqacp2
from murel.models.networks.murel戋net import murelnet
from murel.models.networks.murel戋cell import murelcell
from murel.models.networks.pairwise import要做到这一点,您可以使用pip:
`````

pip install murel.bootstrap.pytorch
``````

pip或从源代码安装:
`````
git clone https://github.com/cadene/murel.bootstrap.pytorch.git
python setup.py install
````

**注意:*o构建在[block.bootstrap.pytorch]之上(https://github.com/cadene/block.bootstrap.pytorch)。我们从后者导入vqa2、tdiuc、vgenome。



创建相应的实验目录并启动培训过程。例如,您可以通过运行:
```
python-m bootstrap.run-o murel/options/vqa2/murel.yaml
```
将在"logs/vqa2/murel"中创建几个文件:
-[options.yaml](https://github.com/cadene/block.bootstrap.pytorch/blob/master/assets/logs/vrd/block/options.yaml)(选项副本)
-[logs.txt](https://github.com/cadene/block.bootstrap.pytorch/blob/master/assets/logs/vrd/block/logs.txt)(打印历史)
-[logs.json](https://github.com/cadene/block.bootstrap.pytorch/blob/master/assets/logs/vrd/block/logs.json)(批次和时间统计)
-[查看.html](http://htmlpreview.github.io/?https://raw.githubusercontent.com/cadene/block.bootstrap.pytorch/master/assets/logs/vrd/block/view.html?token=aedvlldsyn3hsr7go5sdbxeyunknqheks5ctf6 wa%3d)(学习曲线)
-ckpt-last-engine.pth.tar(上一个epoch的检查点)
-ckpt-last-model.pth.tar
-ckpt-last-optimizer.pth.tar
-ckpt-best-eval-epoch.predicate.r-u 50-engine.pth.tar(最佳epoch的检查点)
-ckpt_best庘u eval庘epoch.predicate.r庘50庘model.pth.tar
-ckpt庘u best庘u epoch.predicate.r庘50庘u optimizer.pth.tar

在[选项目录](https://github.com/cadene/murel.bootstrap.pytorch/blob/master/murel/options)中提供了许多选项。

培训过程结束后,您可以在测试集上评估模型。在本例中,[boostrap/run.py](https://github.com/cadene/bootstrap.pytorch/blob/master/bootstrap/run.py)从实验目录加载选项,恢复验证集上的最佳检查点,并在跳过训练集(训练分割为空)。多亏了"-misc.logs_name",日志将被写入新的"logs_predicate.txt"和"logs_predicate.json"文件中,而不是附加到"logs.txt"和"logs.json"文件中。
````
python-m bootstrap.run\
-o logs/vqa2/murel/options.yaml\
--exp.resume best_acciency廑top1\
--dataset.train\u split-traset.train\u split-trade\br/>--dataset.eval\u split-test\br/>--misc.logs\u name谓词
``









vqa2 vqa2 dataset数据集







关于valset.

```
python-m bootstrap.run\
-o murel/options/vqa2/murel.yaml\
--exp.dir logs/vqa2/murel
````

在5%的休息时间进行评估。然后提取测试集上最佳检查点的预测。最后,我们在evalai网站上提交了一个json文件。

````
python-m bootstrap.run \
-o murel/options/vqa2/murel.yaml \
--exp.dir logs/vqa2/murel trainval \
--dataset.proc分裂trainval

python-m bootstrap.run \
-o logs/vqa2/murel trainval/options.yaml\
--exp.resume best_eval_epoch.accurity_top1 \
--dataset.train_split \
--dataset.eval_split test \
--misc.logs_name test
````

但是我们从VisualGenome数据集添加对。

````
python-m bootstrap.run\
-o murel/options/vqa2/murel.yaml\
-exp.dir logs/vqa2/murel trainval-vg\
-dataset.proc分割trainval\
-dataset.vg true

python-m bootstrap.run\
-o原木/VQA2/Murel_Trainval_VG/Ooptions.yaml \
--exp.resume best_eval_epoch.accurity_top1 \
--dataset.train_split \
--dataset.eval_split test \
--misc.logs_name test
````

valset.

```
python-m murel.比较vqa-val-d日志/vqa2/murel日志/vqa2/attention
````

您需要在[evalai platform]上提交一个json文件(http://evalai.cloudcv.org/web/challenges/challenge page/80/my submission)。测试集上的求值步骤创建json文件,该文件包含对完整测试集上模型的预测。例如:`logs/vqa2/murel_trainval_vg/results/test/epoch,19/openended_mscoo_test2015_model_results.json`。为了获得testdev或测试集的精确度,必须提交此文件。





\vqacp2数据集


\\\\\\\\vqacp2数据集训练与评估(train/val值)

`````
python-m bootstrap.run\
-o murel/options/vqacp2/murel.yaml\
>-exp.dirloglog/vqacp2/murel/vqacp2/murel/o murel/murel/options/vqacp2/murel.yaml/murel-log/exp.dir-log/vqacp2p2p/vqacp2/>比较val set

```
python-m murel.比较vqa-val-d日志/vqacp2/murel日志/vqacp2/attention
````


\tdiuc数据集

在训练结束时,我们评估测试集上的最佳检查点。TDIUC指标在每个历元结束时计算和显示。它们也存储在"logs.json"和"logs\test.json"中。

````
python-m bootstrap.run\
-o murel/options/tdiuc/murel.yaml\
--exp.dir logs/tdiuc/murel

python-m bootstrap.run\
-o logs/tdiuc/murel/options.yaml\
--exp resume best撸eval撸epoch.accuracity撸top1\
--dataset.train_split\
--dataset.eval_split test\
--misc.logs_name test
````


`````比较实验可以通过在valset或testset上显示它们的最佳度量来比较实验。

`````
python-m murel.compare_tdiuc_val-d logs/tdiuc/murel日志/tdiuc/attention
python-m murel.compare\u tdiuc-test-d日志/tdiuc/murel日志/tdiuc/attention
````

` ` ` ` `
` ` ` ` ` ` ` `
` ` ` ` `


` ` ` ` ` `
` ` ` ` ` ` `

` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `



不是创建"view.html"文件,而是将创建tensorboard文件:
```
python-m bootstrap.run-o murel/options/vqa2/murel.yaml\
--view.name tensorboard
`````
``````
```````
tensorboard--logdir=logs/vqa2
````

一个(https://github.com/cadene/bootstrap.pytorch/blob/master/bootstrap/options/mnist-plotly-tu-tensorboard.yaml-l38)。





使用特定的gpu进行特定的实验:

````````
cuda-u-visibu-devices=0 python-m boostrap.run-o murel/options/vqa2/murel/murel.yaml
````````
````````````` ` ` `>
用于当前的终端会话:
```
export cuda_visible_devices=0
````

在本例中,我们使用非缺省学习率运行一个实验。因此,我还覆盖了实验目录路径:
``
python-m bootstrap.run-o murel/options/vqa2/murel.yaml\
--optimizer.lr 0.0003\
--exp.dir logs/vqa2/murel-lr,0.0003
```

在覆盖"exp.resume"选项时指定实验目录中的选项文件(默认值为none):
````
python-m bootstrap.run-o logs/vqa2/murel/options.yaml \
--exp.resume last
````

```
自己的图像功能




` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `{Cadene ` `{Cadene ` U 2019 ` U CVPR,
作者{{Cadene,雷米和本尤尼斯,赫迪和汤米,尼古拉斯和科德和科德,马提尤},
`{标题{{{穆雷尔:{{m}多模{{多模{{{{多模}回答},
书名{{ieee}计算机视觉与模式识别会议{cvpr},
年份{2019},
url={http://remicadene.com/pdfs/paper-cvpr2019.pdf}
}
````

[Remi Cadene](http://remi cadene.com)(索邦)、[Matthieu Cord](http://webia.lip6.fr/~ Cord)(索邦)和[Nicolas Thome](http://cedric.cnam.fr/~Thomen/)(CNAM)。

[可视化名称](todo)和[vqacp2](todo),本研究项目中使用的数据集。



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何运行一个在播放歌曲的同时创建和更改UI的方法?   eclipse错误:无法找到或加载主类Java,因为类文件anme和类名不同?   两个数字相加得到一个值的java算法   java我可以更改字符串吗?   java Hibernate 5.2:以编程方式从其他jar加载映射   java如何访问随机跳转到固定位置的二进制文件   java是解析器实现中文档的功能   Javasocket的两端齐平   java查找将两个非常大的整数之和除以相等块的步骤   java如何在Restlet中调用带超时的异步HTTP客户端   java如何从servlet请求将hashmap传递给jsp。塞塔提布特   java Spring MVC HTTP状态500–内部服务器错误,Servlet。servlet[dispatcher]的init()引发异常   java即使没有alpha通道,如何将PNGFiles加载为ARGB_8888?   java将subscribe的返回类型映射到其他类型   javascript如何在安卓 WebView中启用longpress操作下载图像?   java将字符串作为hashmap值的一部分添加到StringList中   JavaSpringAOP:代表类型声明其他方法或字段   Java将二进制序列转换为字符   java使用ApachePOI获取最后一行值   为什么要在FPS(每秒帧数)跟踪器中添加时间?(爪哇)