处理Flickr8k数据集

处理Flickr8k数据集

数据集下载链接:https://www.kaggle.com/datasets/adityajn105/flickr8k?resource=download
包括8091张图像,1个文本文件包含对每张图像的5个描述。

目的:只是借此数据集记录一下文本处理基础方法,如果开展相应的项目,应该参考官方的数据集处理和数据集分割方式。

流程如下:

0、数据集情况

文本存储在 captions.txt 中,记录方式如下: 第一行给出的表示方式为 “image, caption”。
在这里插入图片描述
图像数据:
在这里插入图片描述

1、读取文本并将每张图像的caption group到一起
import os
import json
import random
from collections import defaultdict, Counter
from PIL import Image
from matplotlib import pyplot as plt
import string
### 读取文件为list
def read_txt_as_list(txt_path):
    f = open(txt_path)
    f_list = []
    for line in f:
        f_list.append(line.strip())
    return f_list

caption_path = './flickr8k/captions.txt'
caption_txt = read_txt_as_list(caption_path)

### 创建一个字典,key为img_name,value为5个对应的caption
flickr8k_dict = defaultdict(list)   # 用defaultdict的好处是值默认初始化
for i in range(1, len(caption_txt)): # 从1开始因为第一行为标识表示
    comma_pos = caption_txt[i].find(',')  # 第一个逗号分隔name和caption
    img_name = caption_txt[i][:comma_pos]
    img_caption = caption_txt[i][comma_pos+1:]
    flickr8k_dict[img_name].append(img_caption)
2、随机分割数据集
### 获得所有的图像名称即keys
all_img_names = list(flickr8k_dict.keys(
### Flickr8k 数据集概述 Flickr8k 数据集包含 8000 张不同主题的图像,每张图像配有 5 个不同的文本描述[^2]。该数据集广泛应用于计算机视觉领域,特别是针对图像字幕生成的研究。 ### 数据集下载与使用说明 为了方便研究人员访问此数据集,官方提供了多种方式来获取: - **官方网站**: 用户可以直接从 [Flickr8k 官方网站](https://forms.illinois.edu/sec/1713398) 提交申请表单请求下载权限。 - **Kaggle 平台**: 另一种便捷的方式是从 Kaggle 获取,地址为 [Flickr8k on Kaggle](https://www.kaggle.com/adityajn105/flickr8k),注册账号后即可免费下载完整的数据包。 ### 图像标注详情 对于每一幅图片而言,除了原始图像外,还附带有一个详细的 CSV 文件记录着对应的五条英文描述语句。这些描述不仅限于简单的物体名称列举,而是尽可能详尽地描绘了场景内的活动、人物姿态以及相互间的关系等内容。 ### 数据结构解析 当解压缩下载后的文件夹时,会发现如下目录结构: ``` flickr8k/ ├── images/ │ ├── image_0.jpg │ └── ... └── captions.txt ``` 其中 `images` 文件夹内存储的是所有的 JPG 格式的图片;而 `captions.txt` 则是以纯文本形式保存了所有图片的文字描述信息,其格式通常为 “image_name#caption_number caption”,例如:“1000268201_693b08cb0e.jpg#0 A child in a pink dress is climbing up a small slide.” ```python import pandas as pd # 加载 Caption 文本文件 df_captions = pd.read_csv('path_to_flickr8k/captions.txt', sep='\t') print(df_captions.head()) ``` 通过上述代码可以轻松加载并查看部分图片及其关联的描述文字。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值