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