【Image Cpationing PyTorch Implementation】数据预处理

数据集

需要指出的是Flick8k_text/Flickr8k.token.txt 中共有8092*5=40460条描述,但是Flickr8k_Datasets 中只有8091张图片,原因在于Flickr8k.token.txtline 6731 处有问题

2258277193_586949ec62.jpg.1#0 people waiting for the subway
2258277193_586949ec62.jpg.1#1 Some people looking out windows in a large building .
2258277193_586949ec62.jpg.1#2 Three people are waiting on a train platform .
2258277193_586949ec62.jpg.1#3 Three people standing at a station .
2258277193_586949ec62.jpg.1#4 two woman and one man standing near train tracks .

当然实际上我们并不需要用到Flickr8k_text ,这里采用的是Andrej Karpathy's training, validation, and test splits. 提供了划分好的json文件,里面保存了每张图的caption,以dataset_flickr8k.json 为例,利用如下代码读取json文件

import json
with open('dataset_flickr8k.json','r') as j:
    data = json.load(j)

得到data字典,可以查看结构为

#data有两个键值,data['images'],data['dataset']
#data['dataset']: 'flickr8k' 表明该json文件是属于哪个数据库
#data['images']是一个列表,长度为8000,说明只用到了8000张图片
#列表中每个元素是一个字典,其keys为[sentids', 'imgid', 'sentences', 'split', 'filename']
#sentids:[0,1,2,3,4]表示4句描述的id
#imgid:0 表示图片id
#sentences是一个列表,每个元素是一个字典{'tokens':[word]},也就是把一句话变成多个词的列表
#split:'train'表示是训练集的
#filename:'xxx.jpg'表示图片文件名

猜你喜欢

转载自www.cnblogs.com/doragd/p/11254571.html