インターンシップ_KUT version1.0.3 スパイス Deep Learning

インターンシップ_KUT version1.0.3 スパイス Deep Learning

 

こんにちは!

Nextremer高知インターンの甲原、藤田、小松です。

 

今回の記事はインドインターンシップ中間報告part2になります!

 

と、その前に、、、

せっかくインドに来ているので、
インドのお話を少しさせていただきたいと思います。

 

今年インドでは,9月17日から27日までがガネーシャ祭り(ガネーシャ・チャトゥルティー)です!
我々高知インターン一同、運よくこの期間にインドへ来ることができたので、Nextremer Indiaの社員さんたちとともにガネーシャ祭りに行って参りました!

 

「夢をかなえる像」でおなじみのガネーシャは

・商売繁盛

・学問

・財産・富

・開運

の神様と言われており、広く礼拝されている神様です。

 

ガネーシャ祭りでは、町中のいたるところにガネーシャの像が飾られていて、
聞くところによると全部で500体以上もの像が飾られているそうです。

 

また、それぞれ異なるタイプの像が飾られているので、
見ていて飽きないですし、見た目もとてもきらびやかでまさに異国!という感じでした。
また,ガネーシャ祭りの中でも,我々がいるプネ市のフェスティバルが大がかりで有名だそうです!

 

なので,わたしたちが連れて行ってもらったところは,
ガネーシャの像のなかでも特に豪華な像が置かれていて,

 

純金でつくられたガネーシャ

3

人の2倍以上もの大きさのガネーシャ

5

などなど

4

2

 

すべてに圧倒されました。

 

インドに行ってみようかなとお考えのみなさま,
是非是非こちらのフェスティバルを体験したいただきたいです!本当におすすめです!

ただし,ものすごい人でにぎわっているので身の回りには十分に気を付けないといけないです。
それだけはご注意を!


さて,余談話もほどほどにしまして

前回の記事では、画像収集について紹介いたしましたが、
今回はその続き、いよいよ4種類のスパイスの画像を機械学習させる段階をご紹介いたします。

 

画像収集が終わり、無事サーバに画像データを送ることも完了したので、
次は、データベースを作成します。

画像データをデータベースに格納しておき、そのデータベースから画像データを読み込ませるためです。

 

データベース作成に必要なファイルは、

・画像データセット
・画像ファイル名とその画像のカテゴリ番号をタグ付けし、列挙したテキストファイル(以下のような中身になってます)

  sample_1.jpg 0
  sample_2.jpg 0
  sample_3.jpg 1
     .
     .
     .

 

データベースは学習用とテスト用の2つ作成する必要がありますので、

 

・学習用に各スパイスの画像 1000枚 × 4種類 で4000枚

・テスト用に各スパイスの画像 50枚 × 4種類 で200枚

 

それぞれデータベースを作成しました。

ちなみにデータベースを作成する際に画像をリサイズできるみたいで、
画像収集の時点ではリサイズを行なわなくてもいいみたいです。
この段階で初めてこの事実がわかりました。これもまた経験ですね。

 

続いて、データベース作成の次は平均画像を生成します。

学習用のデータベースの全画像を平均した画像を生成します。
しかし!なぜかこの平均画像の生成にエラー出まくりで、

 

なかなか生成することができずに苦労しました。

 

Caffeのエラーを調べる際には、日本語サイトももちろん参照しますが、
英語サイトのほうが、割に有益な情報を載せてくれているので、そちらもかなり参照しました。
世界各国の人々からの情報が載っているため、情報量がそもそも違います。

 

そして、なんとかエラーを解消して平均画像を作成することに成功しました。

 

あとは、ネットワークモデル定義を行い、
そのモデル定義ファイルとソルバーファイルを使って学習させるのみです!

 

Caffeのリファレンスモデルの定義ファイルをコピーし、
新しいモデル定義ファイルを作成します。

 

ネットワークモデル定義は、以下の点を編集しました。

・読み込む画像(データベース)のパスをわたしたちの作成したデータベースのパスに変更
・学習用とテスト用それぞれのパスを変更
・最終層(layer)の名前を変更
・結果出力数をスパイスの種類数 4 に変更

 

ソルバーファイルもモデル定義ファイル同様に、Caffeリファレンスモデルのソルバー設定ファイルをコピーして作成します。

 

ソルバーファイルでは以下の点を編集しました。

・モデル定義ファイルのパスを、自分達で作成したモデル定義ファイルのパスに変更
・反復回数を1000に変更
・スナップショット数、ステップサイズを1000に変更
・ソルバーモードをGPUにする(GPUで処理してくれる)
・test_iter、test_intervalを100に設定

 

ソルバーファイルは学習量に応じてパラメータを調整するみたいです。
ネットの情報を頼りに上記の数値に設定しました。

 

さあ、きました!!
機械に学習させる準備が整ったので、いよいよ学習を実行します!

 

わたしたちが今回行なうやり方はファイン・チューニングという方法で、
大規模のデータセットを使って学習したネットワーク(ILSVRC2012で学習済みのCaffeリファレンスモデル)から、目的とする別のデータセットで学習し直す方法です。

 

なのでトレーニングさせる際には、CaffeのリファレンスモデルをWeightとして使用します。

 

GPUモードで行なった結果、1時間もかからないうちに学習は終了しました。

 

調べているときに見た情報では、学習させるのにとても時間がかかる
と書かれているものが多くて、割とどきどきしながらファイン・チューニングの実行を見守っていました。

なので、思ったよりも学習が終了するのが速くてびっくりしました!
と同時に大丈夫なのかな、、、うまく学習できたのだろうか?という不安も生まれました。

 

しかし、なんであれ4種類のスパイス(CROVE、BLACK PEPPER、FENNEL、JEERA)
の学習済みモデルが出来たことに感激であります。

 

エラーと戦いまくる日々はつらいものがありました。
ようやくここまで進むことができて本当に本当にうれしいです。


 

さあ、次回はいよいよわたしたちの作ったモデルを使って実際にスパイスを認識させてみた結果をご報告します!!!

どうなるか楽しみですね!!

また、次回でわたしたちのインターンブログは最終回となります。

最終回にてインドでのインターンシップでのそれぞれの思いをみなさんにお伝えすることができれば幸いです。

 

 

 

 

banner_1

 

会社HPページはこちら!

会社ホームページへ