El modelo VSUA representa imágenes como gráficos estructurados donde los nodos son las llamadas unidades semánticas visuales (VSU): unidades de objeto, atributo y relación. Nuestro modelo VSUA utiliza la naturaleza de alineación entre las palabras de subtítulos y las VSU.

Si encuentra este código útil en su investigación, por favor cita
@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}}
Para instalar todos los submódulos: git clone --recursive https://github.com/ltguo19/VSUA-Captioning.git
Para obtener más detalles y otro conjunto de datos, ver ruotianluo/autocrítico.pytorch
Descargue los subtítulos de Coco preprocesados desde el enlace de la página de inicio de Karpathy. Extraiga dataset_coco.json del archivo zip y cópielo en data/ . Este archivo proporciona subtítulos preprocesados y también divisiones estándar de prueba de entrenamiento de tren.
Entonces haz:
$ python scripts/prepro_labels.py --input_json data/dataset_coco.json --output_json data/cocotalk.json --output_h5 data/cocotalk prepro_labels.py asignará todas las palabras que ocurren <= 5 veces a un token UNK especial, y creará un vocabulario para todas las palabras restantes. La información de la imagen y el vocabulario se visten en data/cocotalk.json y los datos de subtítulos discretizados se arrojan a data/cocotalk_label.h5 .
Utilizamos las características de imagen de abajo hacia arriba preextracidas. Descargue la función preextracida del enlace (utilizamos la adaptativa en nuestros experimentos). Por ejemplo:
mkdir data/bu_data ; cd data/bu_data
wget https://storage.googleapis.com/bottom-up-attention/trainval.zip
unzip trainval.zipEntonces:
python script/make_bu_data.py --output_dir data/cocobu Esto creará data/cocobu_fc , data/cocobu_att y data/cocobu_box .
Utilizamos los datos del gráfico de la escena de Yangxuntu/Sgae. Descargue los archivos coco_img_sg.zip y coco_pred_sg_rela.npy desde este enlace y póngalos en los data de la carpeta y luego descifrarlos. coco_img_sg.zip contiene datos de gráficos de escena para cada imagen, incluidas las etiquetas de los objetos y las etiquetas de los atributos para cada cuadro en los datos adaptativos de abajo hacia arriba y las etiquetas de la relación semántica entre los cuadros. coco_pred_sg_rela.npy contiene los vocabularios para las etiquetas de objeto, atributo y relación.
Descargue los archivos vsua_box_info.pkl de este enlace, que contiene el tamaño de cada cuadro y el ancho/altura de cada imagen. Entonces haz:
python scripts/cal_geometry_feats.py
python scripts/build_geometry_graph.py Para extraer las características de la relación de geometría y construir el gráfico de geometría. Esto creará data/geometry_feats-undirected.pkl y data/geometry-iou0.2-dist0.5-undirected .
En general, la carpeta de datos debe contener estos archivos/carpetas:
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 El script del tren arrojará puntos de control en la carpeta especificada por --checkpoint_root y --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 especifica la GPU utilizada para ejecutar el modelo. --id es el nombre de este experimento y toda la información y los puntos de control se arrojarán a la carpeta checkpoint_root/id .--geometry_relation Especifica el tipo de relación a usar. Verdadero: use la relación de geometría, Falso: use la relación semántica.--resume_from opción para ser la identificación del experimento de la que desea reanudar y usar --resume_from_best para elegir si se reanudará desde el punto de control de mejor rendimiento o el último punto de control.checkpoint_root/id , y se pueden visualizar utilizando TensorBoard por sh script/tensorboard.sh .--language_eval 1 opción, pero no olvide descargar el código de COCO-Caption en el directorio coco-caption .opts.py Y ver autocrítico.pytorch para obtener más guía de entrenamiento. Este código se modifica de la brillante imagen de Ruotian Luo Repo Ruotianluo/AutoCritical.pytorch. Utilizamos las características visuales proporcionadas por PeteAnderson80/Atención ascendente de abajo hacia arriba, y los datos del gráfico de la escena proporcionados por Yangxuntu/Sgae. ¡Gracias por sus obras! Si encuentra útil este código, considere citar sus documentos correspondientes y nuestro artículo.