LoginSignup
11
13

More than 5 years have passed since last update.

CaffeによるILSVRC2012の実行

Posted at

ILSVRCとは?

ILSVRC(ImageNet Large Scale Visual Recognition Challenge)は、ImageNetが毎年主催するコンピュータによる物体認識精度を競うコンテスト。ILSVRC2012に関する詳細は以下。
http://www.image-net.org/challenges/LSVRC/2012/

Caffeのインストール

詳細は以下を参照。
http://qiita.com/htsst/items/1cfda725c1cb0f0e3ef6

Caffeをインストールしたディレクトリを$CAFFE_HOMEとする。

データのダウンロード

ImageNetのサイトのDownload>Original Imagesから"ILSVRC2012 image data"をダウンロードする。
アカウント登録が必要で、Term of Accessへの許諾(非商用な研究・教育が利用目的であること)が必要。
http://www.image-net.org/challenges/LSVRC/2012/nonpub-downloads

以下のものをダウンロードする。

  • Development kit (Task 1 & 2)
  • Development kit (Task 3)
  • Training images (Task 1 & 2)
  • Training images (Task 3)
  • Validation images (all tasks)
  • Test images (all tasks)
#!/bin/bash

# Development kit (Task 1 & 2), 2.5MB
wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_devkit_t12.tar.gz
md5sum ILSVRC2012_devkit_t12.tar.gz

# Development kit (Task 3), 22MB
wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_devkit_t3.tar.gz
md5sum ILSVRC2012_devkit_t3.tar.gz

# Training images (Task 1 & 2), 138GB
wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_train.tar
md5sum ILSVRC2012_img_train.tar

# Training images (Task 3), 728MB
wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_train_t3.tar
md5sum ILSVRC2012_img_train_t3.tar

# Validation images (all tasks), 6.3GB
wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_val.tar
md5sum ILSVRC2012_img_val.tar

# Test images (all tasks), 13GB
wget http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_test.tar
md5sum ILSVRC2012_img_test.tar

ファイルをダウンロードしたディレクトリを$ILSVRC2012_IMAGE_DATA_DIRとする。
ファイルのダウンロードに1日程度かかる。ファイルの展開やcaffe形式への変換を含め600GB程度の容量が必要。

データの展開

$ILSVRC2012_IMAGE_DATA_DIRにtrain, val, testディレクトリを作り、それぞれ展開する。trainはtarファイル群が展開されるので、下記のシェルスクリプトでディレクトリ毎に展開する。(シェルスクリプトはこのサイトを参照)
train3はTask3(犬の種別判定)用なので現時点では使用しない。

#!/bin/sh

files="./n*.tar"
for filepath in ${files}
do
  filename=`basename ${filepath} .tar`
  mkdir ${filename}
  tar -xf ${filename}.tar -C ${filename}
done

展開後は中間tarファイルは必要ないので削除してもよい。(130GBほど圧迫する)

caffe形式への変換

ILSVRC2012のOriginal Imagesのファイル名をダウンロードする。

$ cd $CAFFE_HOME/data/ilsvrc12/
$ ./get_ilsvrc_aux.sh

画像の生成を行う。create_imagenet.shを編集して各PATHを設定する。
EXAMPLEで指定したPATHの中にリサイズ画像が格納される。(240GBほど必要)

EXAMPLE = $ILSVRC2012_IMAGE_DATA_DIR/examples
DATA =  $CAFFE_HOME/data/ilsvrc12
TOOLS = $CAFFE_HOME/build/tools
TRAIN_DATA_ROOT = $ILSVRC2012_IMAGE_DATA_DIR/train
VAL_DATA_ROOT = $ILSVRC2012_IMAGE_DATA_DIR/val

RESIZE = true

コマンドを実行する。1.5時間ほど時間がかかる。

$ ./create_imagenet.sh

最後に、平均画像の計算をする。
make_imagenet_mean.shを編集して各PATHを設定する。

EXAMPLE = $ILSVRC2012_IMAGE_DATA_DIR/examples
DATA = $CAFFE_HOME/data/ilsvrc12
TOOLS = $CAFFE_HOME/build/tools

コマンドを実行する。計算結果は、DATA/imagenet_mean.binaryprotyに出力される。

$ ./make_imagenet_mean.sh

AlexNetでの学習

cd $CAFFE_HOME

models/bvlc_alexnet/train_val.prototxtに上記でデータを用意したデータへのPATHを設定する。

   source: "$ILSVRC2012_IMAGE_DATA_DIR/examples/ilsvrc12_train_lmdb"
   source: "$ILSVRC2012_IMAGE_DATA_DIR/examples/ilsvrc12_val_lmdb"

学習を実行する。LD_LIBRARY_PATHにCUDAとCUDNNのライブラリへのPATHを設定することに注意。

$./build/tools/caffe train --solver=models/bvlc_alexnet/solver.prototxt -gpu 0,1,2,3,4,5,6,7

以下から学習済みのcaffemodelのダウンロードもできる。
http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13