Stanford Dogs Datasetの一部(12カテゴリー・2,289枚)の犬の画像を使って、NVIDIAのDIGITS(Caffeバックエンド)で詳細画像分類(Fine-Grained Visual Categorization)モデルを作成してみました。
データセット
上の記事で使用したStanford Dogs Dataset(http://vision.stanford.edu/aditya86/ImageNetDogs/)の120カテゴリー・20,580枚の中から、今回はWordNet IDの小さな「n02085620-Chihuahua」から「n02088364-beagle」までの12カテゴリー・2,289枚を使用します。
以下のコマンドで、新たにdogsというディレクトリを作成し、
$ mkdir ~/dogs
Stanford Dogs Datasetの「n02085620-Chihuahua」から「n02088364-beagle」までの12個のディレクトリを、新たに作成したディレクトリの中にコピーします。
DIGITSでデータセットの作成
ここでは、以下の記事でインストールしたDIGITSを使用します。
Firefox等のブラウザを起動し、URLにlocalhostを入力すると、DIGITS「Home」ページが表示されます。
DIGITS「Home」ページの左側にある「New Dataset」下の「Images」ボタンをクリックし、プルダウンメニューから「Classification」を選択すると、「New Image Classification Dataset」 ページが表示されます。
このページで、下の図のように、
「Image Type」は、Color
「Image size」は、256 x 256
「Training Images」に、画像データセットへのパス(ここでは、/home/sora/dogs)
「Dataset Name」に、DIGITSにおけるデータセットの名前(ここでは、Dogs12)
を設定し、「Create」ボタンをクリックします。
すると、データセットが作成され、データセットの作成が終了すると、以下のような表示になります。
このページの左上の「DIGITS」ロゴをクリックすると、DIGITS「Home」ページに戻り、作成したデータセット(Dogs12)が表示されます。
DIGITSでモデルの学習
DIGITS「Home」ページの右側にある「New Model」下の「Images」ボタンをクリックし、プルダウンメニューから「Classification」を選択すると、「New Image Classification Model」 ページが表示されます。
このページで、下の図のように、
「Select Dataset」フィールドは、Dogs12
「Standard Networks」タブは、CaffeのAlexNet(ここでは、accuracy (train)を表示させるために、Custom Networkにしています)
「Model Name」に、DIGITSにおけるモデルの名前(ここでは、AlexNet_Dogs12)
を設定し、「Create」ボタンをクリックします。
すると、モデルの学習が開始されます。
(2016/07/17追記)
なお、DIGITSでトレーニング時の精度「accuracy (train)」を表示する方法は、以下の記事をご覧ください。
しかし、グラフを見てみると、accuracy (train)とloss (train)が中途半端な状態で、Training epochsが足りないようです。
上のモデルのTraining epochsを100に変更したモデル(ここでは、AlexNet_Dogs12_Epochs100)を新たに作成し、学習させてみます。
学習結果は、下の図のようになりました。
trainのaccuracyとlossだけ見ると、いい感じなのですが、30-60エポックあたりのval(validation)を見ると、accuracyは上昇せず、lossが増加しているので、過学習していそうな感じです。
まとめ
Stanford Dogs Datasetの一部(12カテゴリー・2,289枚)の犬の画像を使って、NVIDIAのDIGITS(Caffeバックエンド)で詳細画像分類(Fine-Grained Visual Categorization)モデルを学習させてみたところ、過学習していそうな感じはありますが、accuracy (train)が95%位、accuracy (val)が45%位のモデルが作成できました。