0


linux下载/解压ImageNet-1k数据集

文章目录

前言

  1. 本文在Linux中,处理对象为ILSVRC2012数据集(ImageNet-1k

一、数据集下载

ImageNet官网链接

在Linux上也可以直接用命令行进行下载:

  • 训练集(ILSVRC2012_img_train.tar):
  1. wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar --no-check-certificate
  1. 验证集(ILSVRC2012_img_val.tar):
  1. wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar --no-check-certificate
  1. 标签映射文件(ILSVRC2012_devkit_t12.tar.gz):
  1. wget https://image-net.org/data/ILSVRC/2012/ILSVRC2012_devkit_t12.tar.gz --no-check-certificate

二、解压

1.训练集

执行命令,进入该文件目录下:

  1. cd /home/data/imagenet

执行命令,将训练集解压到文件夹 train 目录下:

  1. mkdir train &&tar -xvf ILSVRC2012_img_train.tar -C train &&forxin`ls train/*tar`;dofn=train/`basename $x .tar`;mkdir$fn;tar -xvf $x -C $fn;rm -f $fn.tar;done

执行命令,进入 train 目录下:

  1. cd train

执行命令,查看该目录下的文件夹数量,若解压成功,则返回1000:

  1. ls -lR|grep"^d"|wc -l

执行命令,查看 train 目录下所有文件(图片)的数量,若解压成功,则返回1281167:

  1. ls -lR|grep"^-"|wc -l

2.验证集

执行命令,进入3个文件所在的根目录:

  1. cd /home/data/imagenet

执行命令,创建解压验证集的文件夹:

  1. mkdir val

执行命令,将验证集图像解压到 val 目录下:

  1. tar xvf ILSVRC2012_img_val.tar -C ./val

此时 val 目录下是50000张图像,并没有被分类到1000个文件夹下。因此需要将验证集中的图像进行分类存放。
执行命令,解压ILSVRC2012_devkit_t12.tar.gz这个文件:

  1. tar -xzf ILSVRC2012_devkit_t12.tar.gz

该文件中记录着验证集中的图像名及其类别标签之间的映射关系。

在 ‘/home/data/imagenet’ 目录下创建 Python 脚本,假设命名为“unzip.py”,其内容如下:

  1. from scipy import io
  2. import os
  3. import shutil
  4. defmove_valimg(val_dir='./val', devkit_dir='./ILSVRC2012_devkit_t12'):"""
  5. move valimg to correspongding folders.
  6. val_id(start from 1) -> ILSVRC_ID(start from 1) -> WIND
  7. organize like:
  8. /val
  9. /n01440764
  10. images
  11. /n01443537
  12. images
  13. .....
  14. """# load synset, val ground truth and val images list
  15. synset = io.loadmat(os.path.join(devkit_dir,'data','meta.mat'))
  16. ground_truth =open(os.path.join(devkit_dir,'data','ILSVRC2012_validation_ground_truth.txt'))
  17. lines = ground_truth.readlines()
  18. labels =[int(line[:-1])for line in lines]
  19. root, _, filenames =next(os.walk(val_dir))for filename in filenames:# val image name -> ILSVRC ID -> WIND
  20. val_id =int(filename.split('.')[0].split('_')[-1])
  21. ILSVRC_ID = labels[val_id-1]
  22. WIND = synset['synsets'][ILSVRC_ID-1][0][1][0]print("val_id:%d, ILSVRC_ID:%d, WIND:%s"%(val_id, ILSVRC_ID, WIND))# move val images
  23. output_dir = os.path.join(root, WIND)if os.path.isdir(output_dir):passelse:
  24. os.mkdir(output_dir)
  25. shutil.move(os.path.join(root, filename), os.path.join(output_dir, filename))if __name__ =='__main__':
  26. move_valimg()

回到imagenet下,执行该文件,进行验证集分类存放进1000个文件夹:

  1. cd /home/data/imagenet
  1. python unzip.py

总结

这样就成功啦!!


本文转载自: https://blog.csdn.net/qq_45588019/article/details/125642466
版权归原作者 小周_ 所有, 如有侵权,请联系我们删除。

“linux下载/解压ImageNet-1k数据集”的评论:

还没有评论