当前位置: 首页 > article >正文

NUS-WIDE数据集实战:从原始文件到多模态数据集的完整预处理指南

1. NUS-WIDE数据集简介与下载指南NUS-WIDE是一个经典的多标签图像数据集由新加坡国立大学的研究团队构建。这个数据集包含了269,648个样本和81个类别每个样本可能同时属于多个类别这就是多标签的含义。数据集最初是为了研究网络图像检索而创建的现在已经成为多标签分类和多模态学习领域的重要基准数据集。我第一次接触这个数据集是在做一个跨模态检索项目时当时花了不少时间才搞清楚如何正确下载和处理原始文件。这里把我的经验完整分享给大家避免你们走弯路。数据集主要包含以下几类文件Groundtruth包含AllLabels和TrainTestLabels两个目录存放样本的类别标签Tags文本标签数据包括5018个原始标签和1000个精选标签Concept List81个类别的名称列表Image List样本对应的图像文件名Image Urls图像下载链接下载数据集时建议直接从官方渠道获取。虽然有些镜像站点可能提供打包下载但官方源能确保数据的完整性和最新性。下载后你会得到多个压缩包需要分别解压到同一个目录下。我习惯创建一个名为nuswide的目录来存放所有文件这样后续处理会更方便。2. 数据预处理环境准备在开始处理数据前我们需要准备好Python环境。我推荐使用Anaconda创建一个独立的环境conda create -n nuswide python3.8 conda activate nuswide pip install numpy scipy h5py pillow opencv-python处理NUS-WIDE数据集主要需要以下几个Python库numpy处理大型数组运算scipy用于.mat文件的读写h5py处理HDF5格式数据Pillow图像处理opencv-python图像读取和转换我遇到过的一个常见问题是图像读取失败。有些图片用OpenCV读取会返回None这时可以尝试改用Pillow读取。下面是我常用的图像读取函数import cv2 from PIL import Image import numpy as np def read_image(img_path): img cv2.imread(img_path) if img is None: # OpenCV读取失败 with Image.open(img_path) as img_f: img np.asarray(img_f) if img.ndim 2: # 灰度图转RGB img np.repeat(img[:, :, np.newaxis], 3, axis2) img cv2.cvtColor(img, cv2.COLOR_RGB2BGR) return img3. 标签数据处理实战标签数据是NUS-WIDE的核心部分存放在Groundtruth目录下。这里有两个子目录AllLabels和TrainTestLabels。我建议使用AllLabels因为它包含了所有样本的完整标签信息。处理标签数据的步骤如下首先读取Concepts81.txt获取类别名称和对应ID然后处理AllLabels下的81个标签文件最后将标签转换为numpy数组保存import os import numpy as np import scipy.io as sio # 读取类别名称 cls_id {} with open(Concepts81.txt, r) as f: for cid, line in enumerate(f): cls_id[line.strip()] cid # 初始化标签数组 N_SAMPLE 269648 N_CLASS len(cls_id) labels np.zeros((N_SAMPLE, N_CLASS), dtypenp.int8) # 处理每个标签文件 label_dir Groundtruth/AllLabels for cf in os.listdir(label_dir): c_name cf.split(.txt)[0].split(Labels_)[-1] cid cls_id[c_name] with open(os.path.join(label_dir, cf), r) as f: for sid, line in enumerate(f): if int(line) 0: labels[sid][cid] 1 # 保存结果 np.save(labels.npy, labels) sio.savemat(labels.mat, {labels: labels}, do_compressionTrue)这里有个需要注意的地方原始标签文件中可能存在极少数异常值。建议在处理前先检查一遍所有标签文件确保只包含0和1。4. 图像数据组织与管理NUS-WIDE的图像文件分布在多个子目录中这在实际使用时不太方便。我推荐将所有图像文件统一组织到一个目录下可以通过创建软链接来实现import os image_list ImageList/Imagelist.txt image_src Flickr # 原始图像目录 image_dest images # 目标目录 if not os.path.exists(image_dest): os.makedirs(image_dest) with open(image_list, r) as f: for sid, line in enumerate(f): line line.strip().replace(\\, /) # 统一路径分隔符 src_path os.path.join(image_src, line) dest_path os.path.join(image_dest, f{sid}.jpg) os.symlink(src_path, dest_path) # 创建软链接在处理图像时我发现数据集中有少量损坏的图像文件。我的建议是先尝试用不同库读取OpenCV/Pillow如果都失败可以记录下这些样本ID在后续处理中排除这些样本或使用占位图像5. 文本标签处理与多模态整合NUS-WIDE的文本标签存放在NUS_WID_Tags目录下主要有两种处理方式第一种方法从All_Tags.txt中提取1000个精选标签tag_id {} with open(NUS_WID_Tags/TagList1k.txt, r, encodingutf-8) as f: for tid, line in enumerate(f): tag_id[line.strip()] tid texts np.zeros((N_SAMPLE, len(tag_id)), dtypenp.int8) with open(NUS_WID_Tags/All_Tags.txt, r, encodingutf-8) as f: for sid, line in enumerate(f): tags line.split()[1:] for t in tags: if t in tag_id: texts[sid][tag_id[t]] 1第二种方法直接使用AllTags1k.txttexts np.zeros((N_SAMPLE, 1000), dtypenp.int8) with open(NUS_WID_Tags/AllTags1k.txt, r) as f: for sid, line in enumerate(f): texts[sid] list(map(int, line.split()))经过对比测试我发现第二种方法与DCMH论文中使用的数据更吻合建议采用这种方法。保存文本标签的方法与保存图像标签类似np.save(texts.npy, texts) sio.savemat(texts.mat, {texts: texts}, do_compressionTrue)6. 数据清洗与子集创建原始数据中存在一些需要清洗的情况完全没有任何标签的样本图像读取失败的样本标签不一致的重复样本我建议创建一个干净样本的索引列表clean_indices [] for i in range(N_SAMPLE): if labels[i].sum() 0: # 无任何标签 continue if texts[i].sum() 0: # 无任何文本标签 continue clean_indices.append(i) clean_indices np.array(clean_indices) np.save(clean_indices.npy, clean_indices)NUS-WIDE常使用两个子集TC-21样本数最多的21个类别TC-10样本数最多的10个类别创建子集的方法label_sums labels.sum(axis0) top21_classes np.argsort(label_sums)[-21:][::-1] top10_classes np.argsort(label_sums)[-10:][::-1] labels_21 labels[:, top21_classes] labels_10 labels[:, top10_classes]7. 数据验证与常见问题排查在处理过程中有几个常见问题需要注意重复样本数据集中有少量重复图像但标签可能不一致标签异常极少数样本的标签值可能不是0或1图像损坏少量图像文件可能无法正常读取验证数据一致性的方法# 检查标签一致性 for i in range(N_CLASS): assert set(np.unique(labels[:, i])) {0, 1} # 检查文本标签一致性 assert texts.shape (N_SAMPLE, 1000) assert set(np.unique(texts)) {0, 1} # 检查重复样本 image_ids set() with open(ImageList/Imagelist.txt, r) as f: for line in f: img_id line.strip().split(_)[-1].split(.)[0] if img_id in image_ids: print(f发现重复图像: {line.strip()}) image_ids.add(img_id)如果发现数据问题可以根据实际情况选择排除问题样本手动修正标签使用默认值替代8. 最终数据集的组织与保存完成所有预处理后我建议按以下结构组织最终数据集nuswide_processed/ ├── images/ # 所有图像文件或软链接 ├── labels.npy # 完整标签矩阵 ├── labels.mat # 兼容MATLAB的标签文件 ├── texts.npy # 文本标签矩阵 ├── texts.mat # 兼容MATLAB的文本标签 ├── clean_indices.npy # 干净样本索引 ├── labels_21.npy # TC-21子集标签 ├── labels_10.npy # TC-10子集标签 └── README.txt # 数据集说明保存为多种格式可以方便不同工具使用。例如.npy文件适合Python快速加载.mat文件兼容MATLABHDF5格式适合大型数据集。最后分享一个实用技巧在处理完成后可以使用以下命令创建压缩包方便分享和备份tar -czvf nuswide_processed.tar.gz nuswide_processed/预处理NUS-WIDE数据集确实需要耐心和细心但一旦完成这些准备工作后续的研究和实验就会顺利得多。我在多个项目中都使用过这个数据集发现前期投入的时间在后期会带来很大回报。特别是在处理多模态任务时良好的数据组织能让模型训练和评估过程更加高效。

相关文章:

NUS-WIDE数据集实战:从原始文件到多模态数据集的完整预处理指南

1. NUS-WIDE数据集简介与下载指南 NUS-WIDE是一个经典的多标签图像数据集,由新加坡国立大学的研究团队构建。这个数据集包含了269,648个样本和81个类别,每个样本可能同时属于多个类别(这就是多标签的含义)。数据集最初是为了研究网…...

HunyuanVideo-Foley惊艳效果:AI生成神经反馈音乐与脑波同步音效实验

HunyuanVideo-Foley惊艳效果:AI生成神经反馈音乐与脑波同步音效实验 1. 技术背景与核心能力 HunyuanVideo-Foley是一款突破性的AI音视频生成系统,专为创造沉浸式多媒体体验而设计。该系统最引人注目的能力在于其神经反馈音乐生成技术,能够根…...

Electron应用打包体积优化实战:从30MB瘦身到15MB,我的electron-builder.yml配置清单

Electron应用打包体积优化实战:从30MB瘦身到15MB 最近在优化一个Electron应用的打包体积时,发现初始生成的安装包竟然达到了30MB。经过一系列配置调整和优化,最终成功将体积缩减到15MB。这个过程让我深刻体会到,electron-builder…...

Z-Image-Turbo-rinaiqiao-huiyewunv 数据预处理管道构建:使用Python自动化准备训练数据

Z-Image-Turbo-rinaiqiao-huiyewunv 数据预处理管道构建:使用Python自动化准备训练数据 你是不是也遇到过这样的情况:好不容易找到了一个心仪的图像生成模型,比如Z-Image-Turbo-rinaiqiao-huiyewunv,想用自己的数据训练一下&…...

从nvidia-smi到npu-smi:给CUDA开发者的华为昇腾NPU监控指南

从nvidia-smi到npu-smi:CUDA开发者快速掌握昇腾NPU监控的实战手册 当你的技术栈从英伟达GPU扩展到华为昇腾NPU时,监控工具的使用体验就像从自动挡切换到手动挡——虽然最终目的地相同,但操作逻辑需要重新适应。作为曾经每天与nvidia-smi打交道…...

EcomGPT-中英文-7B电商模型Vue前端集成:打造智能电商管理后台

EcomGPT-中英文-7B电商模型Vue前端集成:打造智能电商管理后台 你是不是也遇到过这样的场景?作为电商运营,每天要写几十条商品描述、营销文案,绞尽脑汁也想不出新花样;面对海量的用户评论,想快速了解用户情…...

Qwen3-Reranker-0.6B效果展示:代码搜索Query ‘Python list to dict‘重排

Qwen3-Reranker-0.6B效果展示:代码搜索Query Python list to dict重排 今天咱们来聊聊一个特别实用的AI工具——Qwen3-Reranker-0.6B。你可能听说过各种大语言模型,但这个模型有点不一样,它专门干一件事:帮你从一堆文本里找出最相…...

告别fdisk!用parted命令轻松管理4TB以上大硬盘(附实战案例)

告别fdisk!用parted命令轻松管理4TB以上大硬盘(附实战案例) 当你的NAS存储阵列需要扩容到8TB,或是数据库服务器要配置12TB的RAID组时,传统的fdisk工具会在第一个指令就给你泼冷水——它根本不认识超过2TB的磁盘空间。这…...

OpenClaw+Qwen3-32B科研助手:文献综述自动化实践

OpenClawQwen3-32B科研助手:文献综述自动化实践 1. 为什么需要自动化文献综述 作为一名计算机视觉方向的博士生,我每周需要阅读数十篇论文。传统的工作流程是:手动下载PDF→逐篇阅读→摘录关键观点→整理成表格。这个过程不仅耗时&#xff…...

CentOS虚拟机启动卡在紧急模式?别慌,手把手教你用xfs_repair修复XFS元数据损坏

CentOS虚拟机启动卡在紧急模式?手把手教你用xfs_repair拯救XFS元数据 当你正准备开始一天的工作,突然发现CentOS虚拟机无法正常启动,屏幕上赫然显示着"emergency mode"的红色警告。这种突如其来的系统崩溃,往往让运维人…...

Mac开发者必备:OpenClaw对接Qwen3-32B镜像开发环境配置

Mac开发者必备:OpenClaw对接Qwen3-32B镜像开发环境配置 1. 为什么选择OpenClawQwen3-32B组合 去年我在开发一个自动化文档处理工具时,发现常规的RPA方案无法处理非结构化数据。直到尝试将OpenClaw与Qwen3-32B结合,才真正实现了"理解-决…...

Chandra OCR真实测评:对比GPT-4o,开源OCR模型表现如何

Chandra OCR真实测评:对比GPT-4o,开源OCR模型表现如何 最近在整理一堆扫描版的实验报告和学术论文,里面混杂着复杂的表格、手写注释和数学公式,真是让人头疼。传统的OCR工具,比如Tesseract,处理这种文档就…...

Tauri开发手记——1.从零到一:环境搭建与首次构建实战

1. 环境准备:从零搭建Tauri开发环境 第一次接触Tauri开发时,环境搭建往往是最让人头疼的环节。作为一个跨平台桌面应用框架,Tauri需要同时处理前端和后端(Rust)的依赖关系。我在Windows系统上踩过不少坑,现…...

Vite 8 架构革新:从双引擎到 Rolldown 统一打包的演进之路

1. Vite 8 架构革新的背景与痛点 如果你用过 Vite 7 或更早版本,一定对它的闪电般开发体验印象深刻。这主要得益于 Vite 独特的双引擎架构:开发时用 esbuild 实现毫秒级启动,生产环境则用 Rollup 保证打包质量。但我在实际项目中发现&#xf…...

Mac Mouse Fix终极指南:重新定义macOS鼠标交互体验的开源解决方案

Mac Mouse Fix终极指南:重新定义macOS鼠标交互体验的开源解决方案 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 在macOS生态系统中&#xff0…...

C 语言从 0 入门(一)|VS2022 完整环境搭建 + 第一个 C 语言程序详解

大家好,我是网域小星球。前面的 Wireshark 抓包实战系列已经全部完结,从本文开始,正式开启一个全新的学习板块:C 语言从 0 到实战入门。 作为网络工程、计算机相关专业的核心基础语言,C 语言贴近计算机底层&#xff0…...

电缆电热耦合与热仿真:COMSOL中电缆铺设的热分析模拟与应用研究

电缆电热耦合仿真 comsol 电缆铺设热仿真电缆散热设计这事看起来简单,实操起来全是坑。上个月给某变电站做电缆沟热仿真,甲方拿着计算器咔咔按公式说肯定没问题,结果实测温度超了十几度。后来用COMSOL重新建模才发现,土壤热阻和邻…...

FireRedASR-AED-L语音搜索应用:电商场景实战

FireRedASR-AED-L语音搜索应用:电商场景实战 1. 引言 想象一下这个场景:一位正在做饭的用户手上沾满面粉,突然想起需要购买烘焙材料,只需对着手机说"帮我找高筋面粉",下一秒就能看到精准的商品搜索结果。这…...

弦音墨影保姆级教程:解决‘米色宣纸背景不显示’‘朱砂按钮无响应’等常见问题

弦音墨影保姆级教程:解决‘米色宣纸背景不显示’‘朱砂按钮无响应’等常见问题 1. 引言:优雅水墨AI的实用指南 「弦音墨影」是一款将尖端人工智能技术与中国传统美学深度融合的视频理解与视觉定位系统。它以"水墨丹青"为视觉灵魂&#xff0c…...

nlp_structbert_sentence-similarity_chinese-large部署教程:NVIDIA Container Toolkit深度配置

nlp_structbert_sentence-similarity_chinese-large部署教程:NVIDIA Container Toolkit深度配置 1. 项目概述 今天要介绍的是一个特别实用的中文语义相似度分析工具——基于StructBERT-Large模型开发的本地化解决方案。这个工具专门解决中文句子对的语义匹配问题&…...

WorkshopDL:跨平台Steam创意工坊下载器,突破平台限制获取海量模组资源

WorkshopDL:跨平台Steam创意工坊下载器,突破平台限制获取海量模组资源 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否曾在Epic Games或GOG平台购…...

使用ComfyUI搭建可视化DeOldify工作流

使用ComfyUI搭建可视化DeOldify工作流 想给家里的老照片上色,但觉得写代码太麻烦?或者想把手头的黑白视频变成彩色,却不知道从何下手?今天,我们就来聊聊一个特别有意思的玩法:用ComfyUI这个可视化工具&…...

智能视频转PPT工具:让会议记录与学习资料提取效率提升300%

智能视频转PPT工具:让会议记录与学习资料提取效率提升300% 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 副标题:如何告别3小时手动截图,5分钟完…...

移动开发实战:Flutter集成LongCat-Image-Edit实现宠物滤镜APP

移动开发实战:Flutter集成LongCat-Image-Edit实现宠物滤镜APP 1. 引言 你有没有想过,给你的宠物猫拍张照片,然后让它变成一只熊猫医生或者小老虎?现在这不再是幻想!通过Flutter框架和LongCat-Image-Edit模型的结合&a…...

OpenClaw备份策略:nanobot镜像的模型权重与技能配置定期同步

OpenClaw备份策略:nanobot镜像的模型权重与技能配置定期同步 1. 为什么需要备份OpenClaw工作区 上周我的开发机突然蓝屏,硬盘分区表损坏。当我发现过去三个月精心调教的OpenClaw技能配置和模型微调权重全部丢失时,那种痛彻心扉的感觉让我意…...

游戏开发必备:Unity中三维坐标系转换的5种实战技巧(附代码)

Unity三维坐标系转换实战指南:从原理到代码实现 在游戏开发中,三维物体的旋转和坐标系转换是构建沉浸式体验的核心技术。无论是角色转向、镜头跟随还是物理模拟,开发者都需要精准控制物体在三维空间中的方位。Unity作为主流游戏引擎&#xff…...

保姆级教程:手把手配置GD32的RTC外部低速时钟(LXTAL)与内部IRC40K

GD32 RTC时钟源配置实战:从LXTAL到IRC40K的深度解析 在嵌入式开发中,实时时钟(RTC)模块的稳定运行往往决定了设备的时间记录精度和低功耗表现。作为GD32微控制器的重要外设之一,RTC模块支持多种时钟源配置方案,其中外部低速晶振(L…...

高效智能抖音直播下载工具:一站式解决方案

高效智能抖音直播下载工具:一站式解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经为错过精彩的抖音直播而遗憾?是否想要保存喜欢的直播内容却苦于没有合适的工具&a…...

AHB-Lite时序图深度解读:那些官方文档没明说的‘潜规则’与设计陷阱

AHB-Lite时序图深度解读:那些官方文档没明说的‘潜规则’与设计陷阱 在数字IC设计中,AHB-Lite总线作为AMBA3.0协议家族的核心成员,以其简洁高效的架构成为片上系统互连的首选方案。然而,许多工程师在通过官方文档掌握基础协议后&a…...

S2-Pro算法能力深度评测:在经典LSTM时间序列预测任务中的表现

S2-Pro算法能力深度评测:在经典LSTM时间序列预测任务中的表现 1. 评测背景与目标 时间序列预测一直是机器学习领域的经典难题,而LSTM作为处理序列数据的利器,被广泛应用于金融、气象、工业等领域。本次评测聚焦S2-Pro大模型在算法实现与优化…...