NVIDIA DIGITSでファインチューニングしてみた

ILSVRC2012データセットでトレーニング済みのAlexNetモデルを、NVIDIA DIGITS上でファインチューニングして、Caltech-256データセット用のAlexNetモデルを作成してみました。

ファインチューニング用のprototxtは、ここ(alexnet_finetune.prototxt)からダウンロードできます。

スポンサーリンク

データセットの準備

データセットとして、Caltech-256を使用します。

Training Imagesのフォルダ(caltech_256_train)とValidation Imagesのフォルダ(256_ObjectCategories)を作成するため、このファイル(caltech256.sh.txt)をダウンロードして、以下のコマンドを実行します。

$ mv caltech256.sh.txt caltech256.sh
$ sh caltech256.sh

DIGITSでファインチューニング

Dataset

「New Image Classification Dataset」ページでは、下記のような設定を行って、「Dataset Name」に名前(ここでは、Caltech256)を入力した後、「Create」ボタンをクリックします。

Model

「New Image Classification Model」ページでは、下記のような設定を行います。「Select Dataset」は、上で作成したDataset(ここでは、Caltech256)を選択し、「Base Learning Rate」は、0.001等の小さめの数値を設定します。

ネットワークモデルは、「Custom Network」タブを選択し、ここ(alexnet_finetune.prototxt)の内容をコピーし、テキストエリアにペーストします。

「Pretrained model(s)」は、こちらのページ(https://github.com/BVLC/caffe/tree/master/models/bvlc_alexnet)からダウンロードしたbvlc_alexnet.caffemodelを指定します。

「Model Name」に名前(ここでは、AlexNet_Finetune-Caltech256)を入力した後、「Create」ボタンをクリックします。

トレーニングの結果は、以下のようになりました。

「Trainig epochs」は9エポックですが、validationのtop-1 accuracyは70%をこえています。

まとめ

ILSVRC2012データセットでトレーニング済みのAlexNetモデルを、NVIDIA DIGITS上でファインチューニングして、Caltech-256データセット用のAlexNetモデルを作成してみました。