アラカン"BOKU"のITな日常

文系システムエンジニアの”BOKU”が勉強したこと、経験したこと、日々思うこと。

Caltechのカラー画像を使って、LeNetによる分類をやってみる/使い方19:ニューラルネットワークコンソール

久しぶりに画像分類です。

 

手書き数字のMNISTやモノクロの文字画像ではなく、カラー画像データを使いたいと思います。

 

とはいえ、自分で用意するのは大変です。

 

なので、今回は、カルフォルニア工科大学が機械学習用に配布してくれている「Computational Vision At CALTECH」のカラー画像データを使います。

 

モデルは、サンプルのLeNetを改造して動かします。

 

ResNetでやらない言い訳

 

ニューラルネットワークコンソールには、ImageNetの画像をDATASETに使うResNetのサンプルがあるので、最初、こちらをやろうと思ったのですが、ちょっと時間がかかりそうなので、方針を変えました。

 

なんで、時間がかかりそうかというと。

 

まず、ResNetのサンプルを動かすには、ImageNet(http://www.image-net.org/) からデータをダウンロードして、DATASETを作る必要があるんですね。

 

ちなみに、そのまま動かすと、こんなエラーがでて一瞬で終わります(^^;)。

f:id:arakan_no_boku:20171101205846j:plain

 

で、ユーザ登録してダウンロードをしようとしたのですが、なんと、ダウンロードの承認を得るのに5日間程度かかりそうだ・・というメッセージが返ってきました。

 

こんなメッセージです。

We are reviewing your request. When we approve your request, we will notify you by email. You should expect to hear from us in 5 work days.  

 

つまり、「確認して承認したらメールで連絡する。5営業日以内に連絡が来ることを期待してください」です。

 

ということで、今、承認メールを待ってます。

 

もし、承認がおりてデータを取得できたら記事にしますね。

 

2017/11/12追記

結局、承認メールは届かず、却下されたのか、会社のスパムフィルターで承認メールが削除されてしまったのかはわかりません。とりあえずメゲました。

 

CALTECH画像データを取得する

 

カルフォルニア工科大学の「Computational Vision At CALTECH」の画像データ・セットは以下のサイト(画像にリンクをはってます)から取得できます。

f:id:arakan_no_boku:20171102201127j:plain

 

こちらのページには、ホント色々な画像データ・セットがあるんですけど、今回は一番手頃な「caltech101」を選びます。

f:id:arakan_no_boku:20171102201555j:plain

 

ここから「101_ObjectCategories.tar.gz (131Mbytes)」をDownloadして解凍します。

 

101種類のカテゴリに分類されたカラー画像データがはいってます。

 

ダウンロードしたデータをリサイズする

 

ただ、この画像は、縦横のサイズが揃っているわけではありません。

 

なので、ニューラルネットワークコンソールで使うには、リサイズしてサイズを一定にする必要があります。

 

リサイズは適当な画像リサイズソフトを使ってやります。

 

”BOKU"は、Ralphaを愛用しているので、図例はそれで載せておきます。

www.vector.co.jp

 

サイズを小さくするので、比較的シンプルな画像を3つ選んで、128X128サイズにリサイズしました。

f:id:arakan_no_boku:20171102220921j:plain

 

適当な場所にフォルダを作って、リサイズ後のファイルをその下にコピーします。

 

その時にサブフォルダの名前は、それは「0」「1」「2」等に修正しておきます。

 

注意点としては、画像を置いたフォルダに他の余分なファイルを置かないことです。

 

これでデータの準備は終わりです。

 

ニューラルネットワークコンソール側作業

 

ニューラルネットワークコンソールを起動します。

 

最初にDATASETの登録をしておきます。

 

Create Objectボタンを押します。

f:id:arakan_no_boku:20171102222537j:plain

 

登録方法は、以下の記事で一回紹介していますので、こちらを参照ください。

arakan-pgm-ai.hatenablog.com

 

今回はこんな感じで設定しました。

f:id:arakan_no_boku:20171102224610j:plain

 

カラーなので、OutputChannelは、3(RGB)です。

 

新しいDATASETができました。

f:id:arakan_no_boku:20171102224832j:plain

 

さて、後はサンプルプロジェクトのLeNet.sdcproj を開いて、別名で保存し、ネットワークをこのDATASETに置き換えて、レイヤーを組み替えていきます。

 

CALTECHデータを使えるように変更する 

 

とはいえ、実は変更するところはあまりないです。

 

まず、DATASETは上で作成したものに差し替えます。

f:id:arakan_no_boku:20171102234731j:plain

 

EDITタブでINPUTの設定を変更します。

f:id:arakan_no_boku:20171102235039j:plain

 

1,28,28がデフォルトなので、カラーの128x128画像にあわせて、「3,128,128」と打ち替えるだけです。

 

後は、今回は3つのカテゴリのみチョイスしているので、softmaxの直前のAffineのOUTPUTを「3」にします。

f:id:arakan_no_boku:20171102235438j:plain

 

変更はこれだけです。

 

後は、自動計算で設定されるのを、そのまま使います。

 

最後にCOFIGタブで、BatchSizeとepocheを修正します。

f:id:arakan_no_boku:20171102235712j:plain

 

Caltechの画像は1カテゴリあたり、40~60枚程度なので、バッチサイズをデフォルトの64のままだとエラーで学習されません。

 

とりあえず、16とか8とか小さな数にしておく必要があります。

 

あと、データ枚数が少ないので、せめてepoche数だけでも100くらいに増やしておきます。

 

これで、上書き保存します。

 

最終的なネットワークモデルはこんな感じです。

f:id:arakan_no_boku:20171103000143j:plain

 

学習と評価

 

学習した結果としては、こんな感じです。

f:id:arakan_no_boku:20171103002021j:plain

 

うーん。

 

微妙。

 

続けて、評価を行います。

f:id:arakan_no_boku:20171103074915j:plain

 

accuracy(正確さ)が71.79%・・・。

 

学習データが非常に少ないので予想はしてましたが、なんともはや・・な結果です。

 

 

さすがに、フルカラーの画像データ・セットを学習するのに、40枚程度のサンプル数では少なすぎるみたいですねえ。

 

モノクロの手書き数字のMNISTですら、10種類で約60000枚学習させて、やっと98%以上の数字がだせるくらいですからね。

 

仕方ないですね。

 

とりあえず、今回はこんなところです。

 

次回は、この状態(学習可能なデータが少ない制約下)で何ができるか考えてみたいと思います。

 

関連情報

ニューラルネットワークコンソールの関連記事一覧はこちらです。

arakan-pgm-ai.hatenablog.com

NNabla関連の記事一覧はこちらです。

arakan-pgm-ai.hatenablog.com

 

f:id:arakan_no_boku:20171115215731j:plain