GGNN-LSTM,using scene graph to generate captions
放出来的目的是为了让对graph neural network(图神经网络)和encoder-decoder based attention感兴趣的人更快的了解这方面的知识。
框架草图.png
演示了更多的细节。
python3.5+pytorch0.4.1
-
train_object.txt或者test_object.txt 是graph中的node,代表图中的节点,其中每一行是一个graph的object,relationship和attribute都当作graph的node,比如clock by sidewalk就代表代表当前graph共有3个节点;
-
train_rela.txt或者test_rela.txt 是graph的关系relationship,每一行是一个graph中的所有的relationship,比如sidewalk,by by,clock代表sidewalk和by之间有连线,by和clock之间有连线;
-
train_phrase.txt或者test_phrase.txt是ground-truth的caption,用于train时decoder的输入和test时evaluation;
上述三个文件每行互相对应,即相同行代表同一个graph的信息。
-
train.py 运行直接进行训练;
-
sample_batch.py 是运用测试;
-
model.py 包括了graph network(相当于encoder network),attention network和lstm(相当于decoder)network;
-
build_vocab.py是建立字典库,生成data/vocab.pkl,我已经给了vocab.pkl,你可以不运行bulid_vocab.py;
-
data_loader.py 是把生成的graph和对应的caption组成pair送给网络进行train和test;
-
process_Scenegraph.py 是处理生成graph,我已经给data/annotation,你不必运行;
-
word_split 也是对数据的预处理;
-
其他文件都是我在实现过程中做的一些to do list,还有实现过程中的一些增删改还有debug记录。