โมเดล 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}}
ในการติดตั้ง submodules ทั้งหมด: git clone --recursive https://github.com/ltguo19/VSUA-Captioning.git
สำหรับรายละเอียดเพิ่มเติมและชุดข้อมูลอื่น ๆ ดู ruotianluo/selficitical.pytorch
ดาวน์โหลดคำอธิบายภาพ Coco ที่ถูกประมวลผลล่วงหน้าจากลิงก์จากหน้าแรกของ Karpathy แยก dataset_coco.json จากไฟล์ zip และคัดลอกลงใน data/ ไฟล์นี้ให้คำบรรยายภาพล่วงหน้าและแยกการทดสอบรถไฟ Val-test มาตรฐาน
แล้วทำ:
$ python scripts/prepro_labels.py --input_json data/dataset_coco.json --output_json data/cocotalk.json --output_h5 data/cocotalk prepro_labels.py จะแมปคำทั้งหมดที่เกิดขึ้น <= 5 ครั้งกับโทเค็นพิเศษ UNK และสร้างคำศัพท์สำหรับคำทั้งหมดที่เหลือ ข้อมูลภาพและคำศัพท์จะถูกทิ้งลงใน data/cocotalk.json และข้อมูลคำบรรยายใต้ภาพ discretized จะถูกทิ้งลงใน data/cocotalk_label.h5
เราใช้คุณสมบัติภาพจากล่างขึ้นบนก่อน ดาวน์โหลดคุณลักษณะที่สกัดล่วงหน้าจากลิงค์ (เราใช้ Adaptive ในการทดลองของเรา) ตัวอย่างเช่น:
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 เป็นรหัสทดลองที่คุณต้องการกลับมาทำงานต่อและใช้ --resume_from_best เพื่อเลือกว่าจะกลับมาทำงานต่อจากจุดตรวจที่ดีที่สุดหรือจุดตรวจสอบล่าสุดcheckpoint_root/id โดยอัตโนมัติและสามารถมองเห็นได้โดยใช้ Tensorboard โดย sh script/tensorboard.sh--language_eval 1 แต่อย่าลืมดาวน์โหลดรหัส Coco-caption ลงในไดเรกทอรี coco-captionopts.py และดู critical.pytorch สำหรับคำแนะนำการฝึกอบรมเพิ่มเติม รหัสนี้ได้รับการแก้ไขจากคำบรรยายภาพที่ยอดเยี่ยมของ Ruotian Luo repo ruotianluo/critical.pytorch เราใช้คุณสมบัติภาพที่จัดทำโดย PeteAnderson80/จากล่างขึ้นบนและข้อมูลกราฟที่จัดทำโดย Yangxuntu/Sgae ขอบคุณสำหรับผลงานของพวกเขา! หากคุณพบว่ารหัสนี้มีประโยชน์โปรดพิจารณาอ้างถึงเอกสารที่เกี่ยวข้องและกระดาษของเรา