ImageNet數(shù)據(jù)集下載、解壓

本文處理對象為 ILSVRC2012 分類數(shù)據(jù)集。

一、下載:

首先進入ImageNet 官網:

ImageNet 官網鏈接

用學生郵箱注冊并登錄后才能免費下載,因此如果沒有注冊的話,需要首先用學生郵箱注冊賬戶。

這里需要注意的是:

  • 不翻墻的話會導致注冊失?。。。?/li>

PS:可能有人因為想找迅雷下載鏈接而點進了這篇帖子,為了避免你們空手離開,我就貼一個下載鏈接吧,如果有用的話就麻煩點個贊和關注吧~
訓練集迅雷種子文件:提取碼:46aw
驗證集百度云:提取碼:7bt4
標簽映射文件百度云:提取碼:axte

下載以下3個文件即可:

ILSVRC2012_img_train.tar
ILSVRC2012_img_val.tar
ILSVRC2012_devkit_t12.tar.gz

二、解壓:

假設3個文件所在目錄為:

/home/data/imagenet

1.解壓訓練集:

執(zhí)行命令:

cd /home/data/imagenet

進入該文件目錄下。執(zhí)行命令:

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 目錄下。執(zhí)行命令:

cd train

進入 train 目錄下。執(zhí)行命令:

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

查看該目錄下的文件夾數(shù)量,若解壓成功,則返回1000。執(zhí)行命令:

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

查看 train 目錄下所有文件(圖片)的數(shù)量,若解壓成功,則返回1281167。

2.解壓驗證集:

執(zhí)行命令:

cd /home/data/imagenet

進入3個文件所在的根目錄。執(zhí)行命令:

mkdir val

創(chuàng)建解壓驗證集的文件夾。執(zhí)行命令:

tar xvf ILSVRC2012_img_val.tar -C ./val

將驗證集圖像解壓到 val 目錄下。此時 val 目錄下是50000張圖像,并沒有被分類到1000個文件夾下。因此需要將驗證集中的圖像進行分類存放。
執(zhí)行命令:

tar -xzf ILSVRC2012_devkit_t12.tar.gz

解壓下載的第3個文件,該文件中記錄著驗證集中的圖像名及其類別標簽之間的映射關系。
在 '/home/data/imagenet' 目錄下創(chuàng)建 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()

運行該腳本后,驗證集就處理成功了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容