Das VSUA-Modell repräsentiert Bilder als strukturierte Graphen, bei denen Knoten die sogenannten visuellen semantischen Einheiten (VSUs) sind: Objekt-, Attribut- und Beziehungseinheiten. Unser VSUA -Modell nutzt die Ausrichtung der Natur zwischen Bildunterschriftswörtern und VSUs.

Wenn Sie diesen Code in Ihrer Forschung nützlich finden, zitieren Sie bitte
@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}}
So installieren Sie alle Submodules: git clone --recursive https://github.com/ltguo19/VSUA-Captioning.git
Weitere Informationen und andere Datensatze finden Sie unter ruotianluo/selfcritical.pytorch
Laden Sie die vorverarbeiteten Coco -Bildunterschriften von Link von Karpathys Homepage herunter. Extrahieren Sie dataset_coco.json aus der ZIP -Datei und kopieren Sie sie in data/ . Diese Datei bietet vorverarbeitete Bildunterschriften und auch Standard-Train-Val-Test-Splits.
Dann tun:
$ python scripts/prepro_labels.py --input_json data/dataset_coco.json --output_json data/cocotalk.json --output_h5 data/cocotalk prepro_labels.py wird alle Wörter, die <= 5 Mal auf ein spezielles UNK -Token auftreten, zuordnen und ein Wortschatz für alle verbleibenden Wörter erstellen. Die Bildinformationen und der Vokabular werden in data/cocotalk.json abgeladen und diskretisierte Bildunterschriftendaten werden in data/cocotalk_label.h5 abgeladen.
Wir verwenden die vorextrahierten Bottom-up-Bildfunktionen. Laden Sie die vorextrahierte Funktion von Link herunter (wir verwenden das adaptive in unseren Experimenten). Zum Beispiel:
mkdir data/bu_data ; cd data/bu_data
wget https://storage.googleapis.com/bottom-up-attention/trainval.zip
unzip trainval.zipDann:
python script/make_bu_data.py --output_dir data/cocobu Dadurch werden data/cocobu_fc , data/cocobu_att und data/cocobu_box erstellt.
Wir verwenden die Szenengraphendaten von Yangxuntu/SGAE. Laden Sie die Dateien coco_img_sg.zip und coco_pred_sg_rela.npy von diesem Link herunter und geben Sie sie in die data und entpacken Sie sie dann. coco_img_sg.zip enthält Szenengrafikdaten für jedes Bild, einschließlich Objektbezeichnungen und Attributen für jedes Feld in den adaptiven Bottom-up-Daten und die semantischen Beziehungsbezeichnungen zwischen Kästchen. coco_pred_sg_rela.npy enthält die Vokabulare für Objekt-, Attribut- und Beziehungsbezeichnungen.
Laden Sie die Dateien vsua_box_info.pkl von diesem Link herunter, der die Größe jedes Feldes und die Breite/Höhe jedes Bildes enthält. Dann tun:
python scripts/cal_geometry_feats.py
python scripts/build_geometry_graph.py Um die Geometrie -Beziehungsmerkmale zu extrahieren und das Geometrie -Diagramm zu erstellen. Dadurch werden data/geometry_feats-undirected.pkl data/geometry-iou0.2-dist0.5-undirected
Insgesamt sollte der Datenordner diese Dateien/Ordner enthalten:
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 Das Zugskript wird Checkpoints in den von --checkpoint_root und --id angegebenen Ordner abgelegt.
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 gibt die GPU an, mit der das Modell ausgeführt wird. --id ist der Name dieses Experiments und alle Informationen und Kontrollpunkte werden in den Ordner checkpoint_root/id abgeladen.--geometry_relation Gibt die Art der zu verwendenden Beziehung an. Richtig: Verwenden Sie Geometriebeziehung, Falsch: Verwenden Sie die semantische Beziehung.--resume_from -Option, um die Experiment-ID zu sein, von der Sie wieder aufnehmen möchten, und verwenden Sie --resume_from_best , um aus dem Best-Performing-Checkpoint oder dem neuesten Kontrollpunkt wieder aufzunehmen.checkpoint_root/id abgeladen und können mithilfe von sh script/tensorboard.sh mithilfe von Tensorboard visualisiert werden.--language_eval 1 , aber vergessen Sie nicht, den Coco-Kapitionen-Code in coco-caption -Verzeichnis herunterzuladen.opts.py Und siehe selbstkritisch. Dieser Code wird aus Ruotian Luos brillantem Bildunterschrift Repo Ruotianluo/selbstkritisch.Pytorch geändert. Wir verwenden die visuellen Funktionen, die von Bottom-up Peteandson80/Bottom-Up-Beachtung bereitgestellt werden, und die von Yangxuntu/SGAE bereitgestellten Szenengrafaten. Danke für ihre Arbeiten! Wenn Sie diesen Code hilfreich finden, zitieren Sie ihre entsprechenden Papiere und unser Papier.