Le modèle VSUA représente les images comme des graphiques structurés où les nœuds sont les unités sémantiques soi-disant visuelles (VSUS): objet, attribut et unités relationnelles. Notre modèle VSUA utilise la nature d'alignement entre les mots de légende et les VSU.

Si vous trouvez ce code utile dans votre recherche, veuillez citer
@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}}
Pour installer tous les sous-modules: git clone --recursive https://github.com/ltguo19/VSUA-Captioning.git
Pour plus de détails et d'autres ensembles de données, voir Ruotianluo / auto-critique.pytorch
Téléchargez les légendes de CoCo prétraitées à partir du lien depuis la page d'accueil de Karpathy. Extraire dataset_coco.json à partir du fichier zip et les copier dans data/ . Ce fichier fournit des légendes prétraitées ainsi que des séparations standard de tests Train-Val.
Alors faites:
$ python scripts/prepro_labels.py --input_json data/dataset_coco.json --output_json data/cocotalk.json --output_h5 data/cocotalk prepro_labels.py mappera tous les mots qui se produisent <= 5 fois vers un jeton UNK spécial et créeront un vocabulaire pour tous les mots restants. Les informations d'image et le vocabulaire sont jetés dans data/cocotalk.json et des données de légende discrétisées sont déversées dans data/cocotalk_label.h5 .
Nous utilisons les fonctionnalités d'image ascendante pré-extraites. Téléchargez la fonctionnalité pré-extraite de Link (nous utilisons l'adaptative dans nos expériences). Par exemple:
mkdir data/bu_data ; cd data/bu_data
wget https://storage.googleapis.com/bottom-up-attention/trainval.zip
unzip trainval.zipAlors:
python script/make_bu_data.py --output_dir data/cocobu Cela créera data/cocobu_fc , data/cocobu_att et data/cocobu_box .
Nous utilisons les données du graphique de la scène de Yangxuntu / Sgae. Téléchargez les fichiers coco_img_sg.zip et coco_pred_sg_rela.npy à partir de ce lien et mettez-les dans les data du dossier, puis décompressez-les. coco_img_sg.zip contient des données de graphique de scène pour chaque image, y compris les étiquettes d'objets et les étiquettes d'attributs pour chaque case dans les données ascendantes adaptatives, et les étiquettes de relation sémantique entre les boîtes. coco_pred_sg_rela.npy contient les vocabulaires pour les étiquettes de l'objet, de l'attribut et de la relation.
Téléchargez les fichiers vsua_box_info.pkl à partir de ce lien, qui contient la taille de chaque case et la largeur / hauteur de chaque image. Alors faites:
python scripts/cal_geometry_feats.py
python scripts/build_geometry_graph.py Pour extraire les caractéristiques de la relation de géométrie et construire le graphique de géométrie. Cela créera data/geometry_feats-undirected.pkl et data/geometry-iou0.2-dist0.5-undirected .
Dans l'ensemble, le dossier de données doit contenir ces fichiers / dossiers:
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 Le script de train videra les points de contrôle dans le dossier spécifié par --checkpoint_root et --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 Spécifie le GPU utilisé pour exécuter le modèle. --id est le nom de cette expérience et toutes les informations et points de contrôle seront jetés dans le dossier checkpoint_root/id .--geometry_relation Spécifie le type de relation à utiliser. VRAI: Utilisez la relation géométrie, False: Utilisez la relation sémantique.--resume_from pour être l'ID d'expérience que vous souhaitez reprendre et utiliser --resume_from_best pour choisir de reprendre le point de contrôle le mieux performant ou le dernier point de contrôle.checkpoint_root/id et peuvent être visualisées à l'aide de Tensorboard par sh script/tensorboard.sh .--language_eval 1 , mais n'oubliez pas de télécharger le code de caption coco dans le répertoire coco-caption .opts.py Et voir autocritique.pytorch pour plus de conseils de formation. Ce code est modifié à partir de la brillante image de Ruotian Luo sous-titrant Ruotianluo / auto-critique.pytorch. Nous utilisons les caractéristiques visuelles fournies par ascendante Peteanderson80 / ascendante, et les données du graphique de la scène fournies par Yangxuntu / SGAE. Merci pour leurs œuvres! Si vous trouvez ce code utile, envisagez de citer leurs papiers correspondants et notre article.