プログラミング上達したい人が書くブログ

プログラミング上達したい人が書くブログ

主に、アニメやPython、C++、競技プログラミング(初心者)について書きたいです。また、1週間に一つの記事を心掛けています。学生です。備忘録と書かれたものは他人に見せることを考えて書いてないため見にくいです。

Neural Network Console 使ってリンゴとブドウの分類してみた Part1

はじめに

 今まではテストデータを使ってやってきたけれども、自分で画像を集めて1から分類してみました。

データセット作ってみる

 ニューラルネットワークで必ず必要になるのがビッグデータですが、今回は集める方法としてImagespiderというソフトを使いました。ダウンロードはこのサイトでできます。また、画像は一つのフォルダ内にものごとのフォルダに保存する必要があります。例えば、今回は「NNCtestフォルダ」内の「リンゴというフォルダ」と「ブドウというフォルダ」内にそれぞれダウンロードした画像が入っています。

 そこまで終わったら、ニューラルネットワークコンソールのホーム画面からDATASETを選択し、左上にある「Create Dataset」を選択します。下画像でいう真ん中上部の青くなっている部分のことです。

 

f:id:sachishimei:20170913101540p:plain

 

 「Create Dataset」を選択していただくと、以下の画像のような画面が出てくると思います。「Source Dir」は、今回データセットにするジャンル分けされた画像が入っているフォルダを選択します。今回でいえば、前述した「NNCtestフォルダ」を選択します。「Output Dir」は、作ったDatasetのcsvファイル保存する場所を選択します。ただ、注意点として「Source Dirフォルダ」と一緒のところには保存できません。右下のRatio(%)は、訓練用データとテストに用いるデータの比率を設定することができます。以下の画面を例にすると、すべての画像データの内98%を訓練に、2%をテストデータとして使っています。

*すいません。2%だとあまりにもテストデータが少なすぎたためこれ以降50%ずつでやっています。

 

その他の細かいリファレンスは以下に掲載してあります。

support.dl.sony.com

 

 

f:id:sachishimei:20170913101355p:plain

 

 すべて設定し終わった後にApplyを押すと、Datasetが作成されます。作成後は以下のような画面が出現してデータセットの画像が確認できます。ただ、今回の場合ImagespiderがGoogle画像検索で出た画像をまとめてダウンロードするという性質上、関係なさそうな画像が含まれています。そこは、Datasetを増やすか自分の目で判定するかして、制度を上げる必要があります。ただ、後者の場合ニューラルネットワークの訓練データが10000くらいに増えたら到底不可能のため、現実的ではありません。

 

f:id:sachishimei:20170913103410p:plain

 

 また、同じようなことをしてもらうとわかるのですが、すべての画像をテストデータにできていないのです。つまり、いくつかは失敗しているということです。そして、そのままニューラルネットワークの設計をして実行すると、

FileNotFoundError: [Errno 2] No such file or directory: '失敗した画像のURL'

というエラーが出現します。そのため、同じようなエラーが出たときは、その対策として、上部の入力で行ったOutShape Dirに書いたフォルダ内に成功している画像の一覧があるため、それを用いてもう一度Datasetを作り直すとうまくいきます。

 

さらに、画像の名前が%2...のようにちょっとおかしい、文字化けしているような状態になっている場合はその画像を直した方がいいです。でないと、

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 2: invalid start byte

というエラーがでます。

 

中間休憩

 長くなったため次回まで続きます。また、やっていく過程でエラーが結構頻発しているためどこかでまとめた記事でも出そうと思っています。