ImageNet 数据集的下载及解压操作

数据集下载

对于 ImageNet 数据集的下载部分,可以参照以下博客:ImageNet数据集下载
对于图像分类任务相关的数据集主要包含以下几个:
ILSVRC2012_img_train.tar 对应 ImageNet 的训练集.
ILSVRC2012_img_val.tar 对应的是 ImageNet 的验证集。
ILSVRC2012_img_test_v10102019.tar 对应的是 ImageNet 的测试集。
LSVRC2012_img_test_patch_v10102019.tar 是对2019年10月10日以前的 test 集的部分更改(总共替换了2张图像),将其解压后覆盖进测试集即可,训练集和验证集没有发生变化。(If you downloaded ILSVRC 2012 test images on or before 10/10/2019, please apply LSVRC2012_img_test_patch_v10102019.tar to replace a subset of images (a total of 2 images are replaced). Note that training and validation images are not affected.)
ILSVRC2012_devkit_t12.tar.gz 文件记录着验证集中的图像名及其类别标签之间的映射关系,对应的下载链接在上面博客的 Development kit (Task 1 & 2) 部分。

对于图像分类任务来说,通常仅用到 ILSVRC2012_img_train.tar 作为训练集训练模型,然后在 ILSVRC2012_img_val.tar 集上验证用于评估模型的性能,所以仅需下载这两个数据集。下面将介绍这两个数据集的解压过程。

数据集解压

下载完 ImageNet 的 训练集和测试集之后,将其移动到相应的目录下,如博主移动到了如下的 ~/VSCode/DataSet/ImageNet 目录下,打开终端进入上面的目录通过 ls 命令查看如下:
在这里插入图片描述

训练集

对于训练集来说,ILSVRC2012_img_train.tar 解压得到是1000个类名.tar 的压缩文件(对应1000个类别)。

# 创建train的文件夹
mkdir train
# 解压训练集到指定的train文件夹中
tar -xvf ILSVRC2012_img_train.tar -C train

ImageNet 数据集的下载及解压操作_第1张图片

# 进入解压后的train目录
cd ./train
# 查看./train目录下的文件
ls

ImageNet 数据集的下载及解压操作_第2张图片

接下来,还需要对这1000个 .tar 文件进行进一步的解压。可以将 ./train/*.tar 目录下的这1000个 .tar 文件通过下面的代码解压到 ./train/class_name 对应的目录中并删除 .tar 文件,之后就得到了对应的图像。打开终端进入到~/VSCode/DataSet/ImageNet 目录,在这个目录新建一个 tar_train.sh 文件通过循环解压 train 文件夹中所有的 .tar 文件,具体操作如下:

# 打开终端进入到~/VSCode/DataSet/ImageNet目录
# 用文本编辑器创建一个tar_train.sh文件
gedit ./tar_train.sh

然后将下面的代码复制到创建./tar_train.sh文件当中,保存并退出

#!/usr/bin/sh  
for x in $(ls ./train/*.tar)
do
	echo $x
	filename=`basename $x .tar`
	echo $filename
	mkdir ./train/$filename -p
	tar -xvf $x -C ./train/$filename
	rm $x
done
# 通过cat命令查看刚才创建的./tar_train.sh文件内容
cat ./tar_train.sh

# 执行./tar_train.sh循环解压train文件夹中所有的.tar文件
sh ./tar_train.sh

ImageNet 数据集的下载及解压操作_第3张图片
执行 sh ./tar_train.sh 需要一段时间,执行完之后解压操作就结束了,下面进入到当前目录下的 train 文件夹下,通过 ls 命令查看 train 文件夹下的文件。
ImageNet 数据集的下载及解压操作_第4张图片
为了查看解压得到的图片,可以随便进入 train 文件夹下的一个类别目录,通过 ls 命令查看该类别目录下的图片。例如,进入 n01440764 目录下,通过 ls 命令查看该类别下所有图片名称。
ImageNet 数据集的下载及解压操作_第5张图片
到此,ImageNet 数据集的训练集 ILSVRC2012_img_train.tar 已解压到 train 目录下了,之后就可以删除训练集的压缩包 ILSVRC2012_img_train.tar 文件和解压代码的 tar_train.sh 文件了。

rm tar_train.sh  ILSVRC2012_img_train.tar

ImageNet 数据集的下载及解压操作_第6张图片

验证集

对于验证集来说,使用下面的解压命令即可得到对应的图像。

# 创建val的文件夹
mkdir val
# 解压命令 解压到指定的val文件夹中
tar -xvf ILSVRC2012_img_val.tar -C val

ImageNet 数据集的下载及解压操作_第7张图片

# 进入解压后的val目录
cd ./val
# 查看./val目录下的文件
ls

验证集解压后的文件中直接是对应的图像,并不像训练集一样按照类名的文件进行划分,因此解压完就可以直接用了。
ImageNet 数据集的下载及解压操作_第8张图片
对于有些项目可能需要验证集的目录结构与训练集保持一样(每个类别的图像分别放在同一个类名命名的文件夹下),这需要对验证集进行进一步的处理,将所有的图像放到其对应类名的文件夹中。有需要的可以按照下面的教程自行执行即可,不需要的可以跳过下面的步骤。

对于调整验证集目录结构的操作,可以下载 Breadcrumbsimagenetloader.torch/valprep.sh 项目中的 valprep.sh 文件,然后将其放入验证集的 ./val 目录里执行(注意 valprep.sh 放在的是 val 目录里,和图像一样均处于该目录),执行完删除该文件即可。之后就可以进入对应类别的文件夹下查看相应的图像了。

# 在val目录下执行valprep.sh
sh valprep.sh
# 查看val目录下的文件
ls

ImageNet 数据集的下载及解压操作_第9张图片

# 没问题就可以删除valprep.sh文件了
rm valprep.sh
# 进入某个类别的文件夹下,并查看对应目录下包含的文件
cd ./n01440764
ls

ImageNet 数据集的下载及解压操作_第10张图片
到此,ImageNet 数据集的验证集 ILSVRC2012_img_val.tar 已解压到 val 目录下(并根据valprep.sh文件将相同的类别分类到了对应类别的文件夹下面),之后就可以删除训练集的压缩包 ILSVRC2012_img_train.tar 文件了。

rm tar_train.sh ILSVRC2012_img_val.tar

测试集

对于测试集的解压,和验证集一样,解压后便可直接得到的图像本身,仅需新建一个 test 文件夹然后执行解压命令即可。由于 ImageNet 数据集通常使用 train 集训练,使用 val 集用于评估,通常不用 test 集,所以在这里便不对测试集文件 ILSVRC2012_img_test_v10102019.tar 的解压进行讲解,有需要的自行执行下面的命令即可。

# 创建test的文件夹
mkdir test
# 解压命令 解压到指定的test文件夹中
tar -xvf ILSVRC2012_img_test_v10102019.tar -C test
# 查看test目录下的文件
cd ./test
ls

附一个ImageNet数据集下载、解压的教程:
ImageNet数据集 & 下载

你可能感兴趣的:(python)