美文网首页
ImageNet数据集下载、解压

ImageNet数据集下载、解压

作者: 西北小生_ | 来源:发表于2021-12-16 15:36 被阅读0次

    本文处理对象为 ILSVRC2012 分类数据集。

    一、下载:

    首先进入ImageNet 官网:

    ImageNet 官网链接

    用学生邮箱注册并登录后才能免费下载,因此如果没有注册的话,需要首先用学生邮箱注册账户。

    这里需要注意的是:

    • 不翻墙的话会导致注册失败!!!

    PS:可能有人因为想找迅雷下载链接而点进了这篇帖子,为了避免你们空手离开,我就贴一个下载链接吧,如果有用的话就麻烦点个赞和关注吧~
    训练集迅雷种子文件:提取码:46aw
    验证集百度云:提取码:7bt4
    标签映射文件百度云:提取码:axte

    下载以下3个文件即可:

    ILSVRC2012_img_train.tar
    ILSVRC2012_img_val.tar
    ILSVRC2012_devkit_t12.tar.gz

    二、解压:

    假设3个文件所在目录为:

    /home/data/imagenet

    1.解压训练集:

    执行命令:

    cd /home/data/imagenet
    

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

    mkdir train && tar -xvf ILSVRC2012_img_train.tar -C train && for x in `ls train/*tar`; do fn=train/`basename $x .tar`; mkdir $fn; tar -xvf $x -C $fn; rm -f $fn.tar; done
    

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

    cd train
    

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

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

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

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

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

    2.解压验证集:

    执行命令:

    cd /home/data/imagenet
    

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

    mkdir val
    

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

    tar xvf ILSVRC2012_img_val.tar -C ./val
    

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

    tar -xzf ILSVRC2012_devkit_t12.tar.gz
    

    解压下载的第3个文件,该文件中记录着验证集中的图像名及其类别标签之间的映射关系。
    在 '/home/data/imagenet' 目录下创建 Python 脚本,假设命名为“unzip.py”,其内容如下:

    from scipy import io
    import os
    import shutil
    
    def move_valimg(val_dir='./val', devkit_dir='./ILSVRC2012_devkit_t12'):
        """
        move valimg to correspongding folders.
        val_id(start from 1) -> ILSVRC_ID(start from 1) -> WIND
        organize like:
        /val
           /n01440764
               images
           /n01443537
               images
            .....
        """
        # load synset, val ground truth and val images list
        synset = io.loadmat(os.path.join(devkit_dir, 'data', 'meta.mat'))
        
        ground_truth = open(os.path.join(devkit_dir, 'data', 'ILSVRC2012_validation_ground_truth.txt'))
        lines = ground_truth.readlines()
        labels = [int(line[:-1]) for line in lines]
        
        root, _, filenames = next(os.walk(val_dir))
        for filename in filenames:
            # val image name -> ILSVRC ID -> WIND
            val_id = int(filename.split('.')[0].split('_')[-1])
            ILSVRC_ID = labels[val_id-1]
            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
            output_dir = os.path.join(root, WIND)
            if os.path.isdir(output_dir):
                pass
            else:
                os.mkdir(output_dir)
            shutil.move(os.path.join(root, filename), os.path.join(output_dir, filename))
    
    if __name__ == '__main__':
        move_valimg()
    

    运行该脚本后,验证集就处理成功了。

    相关文章

      网友评论

          本文标题:ImageNet数据集下载、解压

          本文链接:https://www.haomeiwen.com/subject/lhdvfrtx.html