O modelo vsua representa imagens como gráficos estruturados, onde os nós são os chamados unidades semânticas visuais (VSUs): objeto, atributo e unidades de relacionamento. Nosso modelo VSUA faz uso da natureza do alinhamento entre as palavras da legenda e o VSUS.

Se você achar este código útil em sua pesquisa, cite -se
@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 os submódulos: git clone --recursive https://github.com/ltguo19/VSUA-Captioning.git
Para mais detalhes e outros conjuntos de dados, consulte Ruotianluo/Auto-Crítico.pytorch
Faça o download das legendas de coco pré -processadas do Link da página inicial de Karpathy. Extrair dataset_coco.json do arquivo zip e copie -o para data/ . Este arquivo fornece legendas pré-processadas e também divisões de teste de trem padrão.
Então faça:
$ python scripts/prepro_labels.py --input_json data/dataset_coco.json --output_json data/cocotalk.json --output_h5 data/cocotalk prepro_labels.py mapeará todas as palavras que ocorrem <= 5 vezes para um token UNK especial e criará um vocabulário para todas as palavras restantes. As informações e o vocabulário da imagem são despejados em data/cocotalk.json e os dados de legenda discretizados são despejados em data/cocotalk_label.h5 .
Usamos os recursos de imagem de baixo para cima pré-extraídos. Faça o download do recurso pré-extraído do link (usamos o adaptativo em nossos experimentos). Por exemplo:
mkdir data/bu_data ; cd data/bu_data
wget https://storage.googleapis.com/bottom-up-attention/trainval.zip
unzip trainval.zipEntão:
python script/make_bu_data.py --output_dir data/cocobu Isso criará data/cocobu_fc , data/cocobu_att e data/cocobu_box .
Usamos os dados do gráfico de cenas da Yangxuntu/SGAE. Faça o download dos arquivos coco_img_sg.zip e coco_pred_sg_rela.npy deste link e coloque -os nos data da pasta e descompacte -os. coco_img_sg.zip contém dados de gráficos de cena para cada imagem, incluindo rótulos de objeto e rótulos de atributos para cada caixa nos dados de baixo para cima adaptável e nos rótulos de relacionamento semântico entre caixas. coco_pred_sg_rela.npy contém os vocabulários para os rótulos do objeto, atributo e relação.
Faça o download dos arquivos vsua_box_info.pkl deste link, que contém o tamanho de cada caixa e a largura/altura de cada imagem. Então faça:
python scripts/cal_geometry_feats.py
python scripts/build_geometry_graph.py Para extrair os recursos da relação geometria e construir o gráfico de geometria. Isso criará data/geometry_feats-undirected.pkl e data/geometry-iou0.2-dist0.5-undirected .
No geral, a pasta de dados deve conter esses arquivos/pastas:
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 O script do trem despejará pontos de verificação na pasta especificada por --checkpoint_root e --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 a GPU usada para executar o modelo. --id é o nome deste experimento e todas as informações e pontos de verificação serão despejados na pasta de checkpoint_root/id .--geometry_relation Especifica o tipo de relacionamento a ser usado. Verdadeiro: Use a relação geometria, FALSE: Use o relacionamento semântico.--resume_from Opção para ser o ID da experiência do qual deseja retomar e usar --resume_from_best para escolher se deve retomar do ponto de verificação com melhor desempenho ou do ponto de verificação mais recente.checkpoint_root/id e podem ser visualizados usando o Tensorboard por sh script/tensorboard.sh .--language_eval 1 , mas não se esqueça de baixar o código da captura de coco no diretório coco-caption .opts.py E consulte autocrítica.pytorch para obter mais orientações de treinamento. Este código é modificado a partir da brilhante imagem de Ruotian Luo, legending repo Ruotianluo/Auto-Crítico.pytorch. Utilizamos os recursos visuais fornecidos pelo PeteANDERSON80/UP-ATTENÇÃO DE BONDA E BONTEUTIVO e pelos dados do gráfico de cenas fornecidos por Yangxuntu/SGAE. Obrigado por seus trabalhos! Se você achar esse código útil, considere citar seus papéis correspondentes e nosso artigo.