imagenet 数据集准备

本文介绍如何处理ImageNet数据集,包括解压训练集、下载标签文件、转换图片为lmdb格式及生成均值文件等步骤,为深度学习模型训练做好准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/drdeep/article/details/50835974

1.数据集折腾

需要将训练集解压,

ILSVRC2012_img_train.tar解压后是1000个tar文件,每个tar文件表示1000个分类中的一个类。需要对这1000个tar文件再次解压。在train目录下执行unzip.sh文件,最后得到1000个文件夹。每个文件夹中是该类的图片。ILSVRC2012_img_val.tar解压后的文件夹包含了所有的验证集图片。

unzip.sh

dir=./

for x in `ls *.tar`

do

filename=`basename $x .tar`

mkdir $filename

tar -xvf $x -C ./$filename

done 

2.下载标签文件

在caffe目录下执行命令 ./data/ilsvrc12/get_ilsvrc_aux.sh,下载一些训练需要的附加文件。其中train.txt是训练数据集的ground truth文件,val.txt是验证数据集的ground truth文件。需要这两个文件在生成lmdb数据库时提供label信息。

3.转换成lmdb文件

所有的图片都归一化为256*256的大小,对于一个长方形图片,首先将短边变成256的长度,然后剪裁图片中心的256*256部分。

将examples/imagenet/create_imagenet.sh文件中,将为RESIZE=false更改为RESIZE=true,将所有图片归一化为256*256的大小。注意需将文件中的训练数据集和测试数据集的地址更改为服务器中实际存放的地址,即文件中设置

TRAIN_DATA_ROOT=/dataset/ imagenet/train/

VAL_DATA_ROOT=/dataset/imagenet/val/

执行该文件后生成训练数据和验证数据的lmdb数据库:ilsvrc12_train_lmdb 、ilsvrc12_val_lmdb。

4.得到均值文件

 训练集图片的平均值存储于data/ilsvrc12/imagenet_mean.binaryproto。如果没有该文件,执行

./examples/imagenet/make_imagenet_mean.sh可以生成该文件。



### 使用PyTorch下载和加载ImageNet数据集 对于希望利用PyTorch框架开展基于ImageNet数据集的研究或开发工作的用户而言,直接从官方渠道获取完整的ImageNet数据集是一个重要步骤。然而,需要注意的是,PyTorch本身并不提供内置接口来自动下载整个ImageNet数据集[^2]。 #### 获取ImageNet数据集 为了获得ImageNet数据集,建议访问官方网站并遵循其指引完成注册流程以获取下载权限。该过程可能涉及填写申请表单以及同意使用条款等内容。一旦获得了合法使用权,则可以根据个人需求选择不同版本的数据子集(例如大小调整后的图像尺寸如32x32像素等)进行下载[^4]。 #### 加载ImageNet数据集到PyTorch项目中 当本地已有准备好的ImageNet文件夹结构后,可以采用`datasets.ImageFolder`类轻松实现数据读取功能。此工具允许开发者仅需指定根目录路径即可快速构建训练集与验证集实例对象,并支持多种预处理操作配置选项,从而极大地简化了前期准备工作量[^1]。 ```python from torchvision import datasets, transforms import torch.utils.data as data transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), ]) train_dataset = datasets.ImageFolder(root='path_to_train_data', transform=transform) val_dataset = datasets.ImageFolder(root='path_to_val_data', transform=transform) train_loader = data.DataLoader(train_dataset, batch_size=64, shuffle=True) val_loader = data.DataLoader(val_dataset, batch_size=64, shuffle=False) ``` 上述代码片段展示了如何设置转换函数链路(resize、center crop 和 tensor conversion),并通过指明各自对应的磁盘位置创建两个Dataset对象——分别对应于训练阶段使用的样本集合及其标签信息;最后借助DataLoader封装成批次形式供后续模型迭代调用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值