Skip to content

yuani114/NLPproject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 

Repository files navigation

NLPproject

论文:BMVC2019 Look and Modify: Modification Networks for Image Captioning

环境

Python 3.6 + PyTorch 0.4

数据集

输入(准备数据):

MS COCO2014 dataset 图片文件:train2014.zipval2014.zip. 解压放置在data preperation/images
注解文件:instance_train2014.json,instance_val2014.json(注释文件).放置在data preperation/caption data下,格式如下:

#其中还包含80种物体类别,20种语义类别(未列出)
annotation{
    "id" : int,
    "image_id" : int,
    "category_id" : int,
    "segmentation" : RLE or [polygon],
    "area" : float, 
    "bbox" : [x,y,width,height],
    "iscrowd" : 0 or 1,
}

categories[{
    "id" : int,
    "name" : str,
    "supercategory" : str,
}]

重划分文件:dataset_coco.json(正确的字幕,并将coco中的train和val合并并重新划分成train/val/test),放置在data preperation/caption data

输出:

使用prepare_captions.py处理以上文件,得到:
TRAIN_name_coco.json (存储图像名,例如:COCO_train2014_000000205672.jpg,按顺序对应于TRAIN_CAPTIONS_coco.json的字幕)
TRAIN_IMAGE_coco.hdf5 (存储图像数据)
TRAIN_CAPTIONS_coco.json (存储已编码字幕,例如:[9488,6,50,..,9489..,0],其中'9488代表一句话开始,9489代表一句话结束',数字索引对应单词可从WORDMAP_coco.json找到)
TRAIN_CAPLENS_coco.json (存储已编码字幕长度,例如:上一行的[9488,6,50,..,9489..,0]中不为0的个数是13个,则文件中对应位置就是13)
WORDMAP_coco.json (单词字典,存储每个单词以及其索引,例如:"i": 1, "n": 2, "f": 3,...."swaddled": 9485, "dentist": 9486, ")
作为后续的train_eval.py的输入。

输入(训练数据):

TRAIN_name_coco.json
TRAIN_IMAGE_coco.hdf5
TRAIN_CAPTIONS_coco.json
TRAIN_CAPLENS_coco.json
WORDMAP_coco.json
TRAIN_CAPUTIL_coco.json (github中直接给的,其中主要内容是previous caption,即需要修改的字幕,格式如下:{"COCO image name": {"caption": "previous caption to modify", "embedding": [512-d DAN embedding of previous caption], "attributes": [the indiced of the 5 extracted attributes], "image_ids": the COCO image id})
给的文件里面还有一个叫TRAIN_GENOME_DETS.json的东西,暂时不知道是用来做什么的,应该是bottom-to-up features中专用的

输出:

还没得到...,因为代码中有点错误,而且没改好,跑出结果的话应该就能知道数据了。

以上文件的具体说明:

image
上面是mscoco中的一张图片
TRAIN_name_coco.json中它是"COCO_val2014_000000522418.jpg"
TRAIN_CAPTIONS_coco.json它是[9488, 916, 43, 389, 916, 50, 3, 931, 273, 9489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
TRAIN_CAPLENS_coco.json对应到的长度就是10
对应到WORDMAP_coco.json中构建出来句子就是["<start>": 9488,"a": 916,"woman": 43,"cutting": 389,"a": 916,"large": 50,"sheet": 931,"cake": 273,"<end>": 9489]连起来就是 a woman cutting a large sheet cake
dataset_coco.json也存在该句子:{..."tokens": ["a", "woman", "cutting", "a", "large", "white", "sheet", "cake"], "raw": "A woman cutting a large white sheet cake."...}
TRAIN_CAPUTIL_coco.json对应的需要修改的句子就是:{..."caption": "a woman in a beanie is looking at a white bed"...}
【注:coco数据集中,一个图片对应了5个字幕,就是说TRAIN_name_coco.json中的一个name会对应TRAIN_CAPTIONS_coco.json中5个[.....]

小总结

需要修改的字幕:TRAIN_CAPUTIL_coco.json
标准的字幕:原始存在dataset_coco.json,经过处理转变成encoded形式,存在TRAIN_CAPTION_coco.json
【注:我拿TRAIN_CAPUTIL_coco.jsondataset_coco.json中的字幕内容和图片做了下对比,其中有些句子(previous caption)对比标准句子是有明显错误的,需要修改;有些看起来说的没错,但是可以补充更多细节(这也是edit的一种)。】

代码和提到的一些json文件(里面无train2014.zipval2014.zip):https://pan.baidu.com/s/1POxjymJrd9gcvjYYHTjrMQ
提取码:2k3j

About

语言信息处理大作业数据集相关

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published