对于 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
# 进入解压后的train目录
cd ./train
# 查看./train目录下的文件
ls
接下来,还需要对这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
执行 sh ./tar_train.sh
需要一段时间,执行完之后解压操作就结束了,下面进入到当前目录下的 train
文件夹下,通过 ls
命令查看 train
文件夹下的文件。
为了查看解压得到的图片,可以随便进入 train
文件夹下的一个类别目录,通过 ls
命令查看该类别目录下的图片。例如,进入 n01440764
目录下,通过 ls
命令查看该类别下所有图片名称。
到此,ImageNet 数据集的训练集 ILSVRC2012_img_train.tar 已解压到 train 目录下了,之后就可以删除训练集的压缩包 ILSVRC2012_img_train.tar 文件和解压代码的 tar_train.sh 文件了。
rm tar_train.sh ILSVRC2012_img_train.tar
对于验证集来说,使用下面的解压命令即可得到对应的图像。
# 创建val的文件夹
mkdir val
# 解压命令 解压到指定的val文件夹中
tar -xvf ILSVRC2012_img_val.tar -C val
# 进入解压后的val目录
cd ./val
# 查看./val目录下的文件
ls
验证集解压后的文件中直接是对应的图像,并不像训练集一样按照类名的文件进行划分,因此解压完就可以直接用了。
对于有些项目可能需要验证集的目录结构与训练集保持一样(每个类别的图像分别放在同一个类名命名的文件夹下),这需要对验证集进行进一步的处理,将所有的图像放到其对应类名的文件夹中。有需要的可以按照下面的教程自行执行即可,不需要的可以跳过下面的步骤。
对于调整验证集目录结构的操作,可以下载 Breadcrumbsimagenetloader.torch/valprep.sh 项目中的 valprep.sh 文件,然后将其放入验证集的 ./val
目录里执行(注意 valprep.sh 放在的是 val 目录里,和图像一样均处于该目录),执行完删除该文件即可。之后就可以进入对应类别的文件夹下查看相应的图像了。
# 在val目录下执行valprep.sh
sh valprep.sh
# 查看val目录下的文件
ls
# 没问题就可以删除valprep.sh文件了
rm valprep.sh
# 进入某个类别的文件夹下,并查看对应目录下包含的文件
cd ./n01440764
ls
到此,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数据集 & 下载