ImageNet データセットのダウンロード、前処理、アップロード

このドキュメントでは、Cloud TPU VM アーキテクチャで使用する ImageNet データセットをダウンロード、前処理、アップロードする方法について説明します。

ImageNet は画像データベースです。このデータベース内では画像が階層に編成されていて、階層の各ノードには数百、数千もの画像が含まれています。

ImageNet データベースのサイズによっては、モデルのトレーニングにはかなりの時間がかかる場合があります。代替手段として、このデータセットの fake_imagenet と呼ばれるデモバージョンを使用する方法もあります。このデモバージョンを使用すると、モデルのテストが可能になり、同時に、完全な ImageNet データベースの使用に伴うストレージ要件と時間要件が削減されます。

完全版の ImageNet データセットの前処理

ImageNet データセットは、トレーニング データ、検証データ、画像ラベルの 3 つの部分で構成されます。

トレーニング データには 1,000 個のカテゴリと 120 万個の画像が含まれており、ダウンロードしやすいようにパッケージ化されています。検証データとテストデータは、ImageNet トレーニング データには含まれていません(重複は削除されています)。

検証データとテストデータは、Flickr やその他の検索エンジンから収集された 150,000 枚の写真で構成され、1,000 個のオブジェクト カテゴリの存在または不在のラベルが付いています。1,000 個のオブジェクト カテゴリには ImageNet の内部ノードとリーフノードの両方が含まれますが、両者は重複しません。ラベルの付いた 50,000 枚の画像のランダムなサブセットが、1,000 個のカテゴリのリストとともに検証データとしてリリースされています。残りの画像は評価用に使用され、ラベルなしでリリースされています。

完全な ImageNet データセットの前処理手順

ML モデルで使用する ImageNet の完全なデータセットを準備するには、次の 5 つの操作を行います。

  1. ダウンロード先に空き容量があることを確認します。
  2. ターゲット ディレクトリを設定します
  3. ImageNet サイトに登録して、ダウンロード権限をリクエストします。
  4. データセットをローカル ディスクまたは VM インスタンスにダウンロードします。

  5. 前処理スクリプトとアップロード スクリプトを実行します。

容量の要件を確認する

データセットをローカルマシンにダウンロードする場合でも、VM インスタンスにダウンロードする場合でも、ダウンロード先に約 300 GiB の空き容量が必要です。

TPU VM のデフォルトのディスク割り当ては 100 GiB です。TPU VM へのダウンロードには 300 GiB が必要なため、TPU VM インスタンスにダウンロードする場合は、200 GiB の追加容量を持つ耐久性のあるブロック ストレージ ボリュームを追加してからダウンロードする必要があります。TPU VM の場合、df -ha コマンドを実行して空き容量を確認できます。アタッチされたディスクのサイズ変更の詳細については、Google Cloud Hyperdisk ボリュームの設定を変更するPersistent Disk ボリュームのサイズを増やすをご覧ください。

耐久性のあるブロック ストレージを追加するときは、ディスクをマウントしたディレクトリをメモしておいてください。例: /mnt/disks/mnt-dir

ターゲット ディレクトリを設定する

ローカルマシンまたは VM インスタンスで、ダウンロードしたデータを格納するディレクトリ構造を設定します。

  1. データをダウンロードするディレクトリに移動します。永続ディスクを使用している場合は、DATASET_ROOT_DIR をディスクがマウントされているディレクトリに置き換えます(例: /mnt/disks/mnt-dir)。

    cd DATASET_ROOT_DIR
  2. ダウンロード ターゲット(ローカルマシンまたは TPU VM)に imagenet などのディレクトリを作成します。

    mkdir imagenet
    
  3. このディレクトリに、trainvalidation という 2 つのサブディレクトリを作成します。

    mkdir