VSUA模型将图像表示为结构图,其中节点是所谓的视觉语义单元(VSUS):对象,属性和关系单元。我们的VSUA模型利用了字幕单词和VSU之间的对齐性质。

如果您发现此代码对您的研究有用,请引用
@inproceedings{guo2019vsua,
title={Aligning Linguistic Words and Visual Semantic Units for Image Captioning},
author={Longteng Guo, Jing Liu, Jinhui Tang, Jiangwei Li, Wei Luo, and Hanqing Lu},
booktitle={ACM MM},
year={2019}}
要安装所有子模型: git clone --recursive https://github.com/ltguo19/VSUA-Captioning.git
有关更多详细信息和其他数据集,请参见Ruotianluo/pycritical.pytorch
从karpathy的主页下载链接中的可可标题。从zip文件中提取dataset_coco.json ,然后将其复制到data/中。该文件提供了预处理的字幕以及标准的火车 - val测试拆分。
然后做:
$ python scripts/prepro_labels.py --input_json data/dataset_coco.json --output_json data/cocotalk.json --output_h5 data/cocotalk prepro_labels.py将将发生的所有单词映射到特殊的UNK令牌,并为所有其余单词创建词汇。图像信息和词汇被倾倒到data/cocotalk.json和离散的字幕数据被倾倒到data/cocotalk_label.h5中。
我们使用预先提取的自下而上图像功能。从链接下载预提取功能(我们在实验中使用自适应功能)。例如:
mkdir data/bu_data ; cd data/bu_data
wget https://storage.googleapis.com/bottom-up-attention/trainval.zip
unzip trainval.zip然后:
python script/make_bu_data.py --output_dir data/cocobu这将创建data/cocobu_fc , data/cocobu_att和data/cocobu_box 。
我们使用Yangxuntu/sgae的场景图数据。从此链接下载文件coco_img_sg.zip和coco_pred_sg_rela.npy ,然后将它们放入文件夹data中,然后将其解压缩。 coco_img_sg.zip包含每个图像的场景图数据,包括自适应自下而上数据中每个框的对象标签和属性标签,以及框之间的语义关系标签。 coco_pred_sg_rela.npy包含对象,属性和关系标签的词汇。
从此链接下载文件vsua_box_info.pkl ,其中包含每个框的大小以及每个图像的宽度/高度。然后做:
python scripts/cal_geometry_feats.py
python scripts/build_geometry_graph.py提取几何关系特征并构建几何图。这将创建data/geometry_feats-undirected.pkl和data/geometry-iou0.2-dist0.5-undirected 。
总体而言,数据文件夹应包含这些文件/文件夹:
cocotalk.json # additional information about images and vocab
cocotalk_label.h5 # captions
coco-train-idxs.p # cached token file for cider
cocobu_att # bottom-up feature
cocobu_fc # bottom-up average feature
coco_img_sg # scene graph data
coco_pred_sg_rela.npy # scene graph vocabularies
vsua_box_info.pkl # boxes and width and height of images
geometry-iou0.2-dist0.5-undirected # geometry graph data python train.py --gpus 0 --id experiment-xe --geometry_relation True火车脚本将将检查点转储到由--checkpoint_root和--id指定的文件夹中。
python train.py --gpus 0 --id experiment-rl --geometry_relation True --learning_rate 5e-5 --resume_from experiment-xe --resume_from_best True --self_critical_after 0 --max_epochs 50--gpu指定用于运行模型的GPU。 --id是该实验的名称,所有信息和检查点将被倾倒到checkpoint_root/id文件夹。--geometry_relation指定要使用的关系类型。正确:使用几何关系,错误:使用语义关系。--resume_from选项是您要从中恢复的实验ID,并使用--resume_from_best来选择是从表现最好的检查点还是最新的检查点恢复。checkpoint_root/id中,并且可以使用sh script/tensorboard.sh使用Tensorboard可视化。--language_eval 1选项,但不要忘记将可可托代码下载到coco-caption目录中。opts.py并参见自我批判性。 该代码是根据Ruotian Luo出色的图像字幕ruotianluo/pycritical.pytorch修改的。我们使用自下而上的Peteanderson80/自下而上注意的视觉功能,以及Yangxuntu/sgae提供的场景图数据。感谢他们的工作!如果您发现此代码有帮助,请考虑引用其相应的论文和我们的论文。