服の画像を種類ごとに分類する画像分類AIの作成方法
はじめに
今回はMatrixFlowを用いて、画像分類で服の画像を種類ごとに分類するAIを作成します。
AIを作成するのは難しく感じるかもしれませんが、MatrixfFlowでは、プログラミングの知識がなくても直感的にAIを作成することができます。
実際にデータを使ってAIを作っていきましょう。
◆目次◆
1. 題材と分析手法の説明
2. プロジェクトの説明
3. AIを作成する流れ
4. データセットの説明
5. レシピ
6. 学習
7. 学習結果
8. 推論
9. まとめ
1.題材と分析手法の説明
今回の記事では、プログラミングを使わずにAIを作れるMatrixFlowで、ファッション画像を種類ごとに分類していきます。
画像分類は教師あり学習の1つです。教師あり学習は正解・不正解のある学習データをAIに学習させる方法です。
今回は、ファッション画像の分類の正解をAIに学習させることで、種類ごとの画像の特徴を覚えさせます。
そして、分類したい画像を入力したとき、その画像がどの種類に分類されるかをAIが判断します。
このような画像分類をすることができれば、目視では大変な画像分類の作業を簡単にすることができます。また、製品の仕分けや画像による検索、在庫の管理などに活用することができます。
2.プロジェクトの説明
MatrixFlowではまず初めに「プロジェクト」を作成します。
「プロジェクト」とは、MatrixFlowで作成したAIを管理する単位のことです。
プロジェクトの中にはAIの作成に使用したデータや作成したAIを保存することができます。
3.AIを作成する流れ
ここでは、AIを作成する全体的な流れを簡単に説明していきます。
まず、AIを作成するにはデータセットが必要です。AIはデータセットのデータをもとに学習や予測をしていきます。
次にどの列をAIに予測してもらいたいかを選択します。ここで選択しなかった列は、AIが予測をするときの判断材料となり、どのくらい重要な判断材料だったかを学習結果で比べることができます。
そして、AIが利用できるデータの形にするために、データの前処理を行います。前処理では欠損値の修正や文字のデータの数値化をすることができます。
しかし、今回の画像分類では、「予測する列の選択」と「前処理」を行う必要はありません。
データの準備ができれば、レシピの作成を行います。レシピは、AIが処理を行う手順を示すもので、MatrixFlowではブロックとブロックを結ぶだけで作成することができます。
最後にAIに学習をさせます。AIの学習が完了すれば、学習結果を確認したり、推論を行ったりすることができるようになります。
ここまでがAIを作成する大まかな流れでした。
では、さっそくAIを作成していきましょう。
MatrixFlowにログインし、「新規プロジェクトを作成する」からプロジェクトを作成します。
今回は自分でAIを作成していくので、「自分でAIを構築する」を選択します。
プロジェクトの名前と説明を記入し、必要であればタグを追加しましょう。
4.データセットの説明
次に、データセットの設定をします。
画像分類のデータセットは、フォルダの構造が決まっています。これから説明するフォルダ構造でないデータセットを使うと、正常にMartixFlowが動作しないので注意しましょう。
まず、任意の名前のフォルダの中に「images」という名前のフォルダを用意します。
「images」というフォルダは画像用のフォルダです。
そして、「images」のフォルダの中にラベルごとのフォルダを作っていきます。このラベルの中に該当する画像のデータを入れていきます。
最後に1番上に位置する任意の名前のフォルダをZIP形式に圧縮します。
構造や名前の間違いには気を付けましょう。
具体的に犬と猫の画像を分類する場合で説明すると、まず、1番上のフォルダを「学習用」とし、その配下に「images」というフォルダを作成します。
「images」というフォルダの中には「犬」と「猫」のフォルダを作ります。そして、犬と猫の画像をそれぞれのフォルダに入れていきます。ここで、犬の画像を猫のフォルダに入れてしまうと、AIが犬の画像を猫だと認識してしまう可能性があるので、注意しましょう。
最後に「学習用」と名付けた1番上のフォルダをZIP形式にして、完成です。
今回はFashion_Mnist(https://github.com/zalandoresearch/fashion-mnist)を使います。
「images」のフォルダの中には「シャツ」や「ドレス」など用意したファッション画像の種類10個を用意します。そして、それぞれのラベルに該当するファッション画像をいれていきます。
データの準備ができれば、使用したいデータセットのZIPファイルをドラッグ&ドロップで、アップロードします。
「データセットをアップロードする」をクリックし、データセットの設定は完了です。
5.レシピ
ここからはAIの設計図となるレシピを作成していきます。
MatrixFlowでは自分で1からレシピを作ったり、テンプレートのレシピを使用したりすることができます。どちらの方法でもドラッグ&ドロップをするだけでレシピを作ることができるので非常に簡単です。
まず、最初から配置されている「データの入り口」というブロックを選択し、データの種類を画像に変更します。
そして、「ディープラニング」の中にあるブロックを以下の画像のように配置します。
ブロック同士の繋ぎ方は、ブロックにポインターを合わせて、ピンクの丸から繋ぎたいブロックまで引っ張るだけです。
ここから細かいパラメーターの設定を説明していきます。
まず1つ目の「全結合層」を選択し、「活性化関数」を「ReLU」に、「出力サイズ」を「512」とします。ここでの設定の詳細は省きますが、より詳しく知りたいという方はぜひこちらからMartixFlowのUdemyの講座をご確認ください。
次に2つ目の「全結合層」のパラメーターを変更していきます。「活性化関数」を「恒等関数」に「出力サイズ」を「10」とします。この「10」という値は、分類するラベルの数を表します。ここでは、ファッション画像の種類が10個あったので、10を入力します。
次にその他のブロックタイプから「損失関数」を配置します。そして、2つ目の全結合層から「損失関数」と最初から配置されている「精度評価」を繋げます。
さらにその他のブロックタイプにある「ラベル入り口」を配置し、下の画像のように「精度評価」と「損失関数」と繋ぎます。「ラベル入り口」から2つのブロックに矢印の方向が向いていることに注意しましょう。
最後に「ラベル入り口」のクラス数を「10」にします。これは今回のファッション画像のラベル数と等しくなります。
これでレシピの作成は終了です。
レシピが完成すれば、「レシピを保存する」をクリックします。
レシピの「名前」と「説明」を入力して、レシピの作成は終了です。
ちなみに、今回作成した画像分類のレシピは、サンプルレシピの「白黒画像の10分類CNN」と同じです。サンプルレシピを使う際には、パラメーターを変更するのを忘れないようにしましょう。
6.学習
レシピができれば、AIの学習を始めていきます。
「学習を実行する」をクリックして、AIの学習をスタートさせましょう。
数分後に結果が表示されました。学習結果は次のパートで詳しくみていきます。
7.学習結果
学習結果ではAIの精度を確認することができます。
今回のAIは「テストデータ正解率」が84.1%になっています。
「テストデータ正解率」は、テストデータの予測結果のうち実際の正解とどれだけ一致しているかを示す評価指標です。
今回は、予測の8割以上が実際の正解と一致しているAIなので、精度が高いと言えるでしょう。
具体的には、「シャツ」の画像をAIに入力すると、8割以上の可能性で「シャツ」という結果が得られるということになります。
そして、「精度評価」から先ほど紹介した「テストデータ正解率」と「テストデータ損失関数の値」を確認することができます。
「テストデータ損失関数の値」は、予測結果と正解のズレ具合を示す評価指標です。値が小さいほど精度が良い証拠となります。
また、「学習データ」を選択すると、学習データの「学習データ正解率」と「学習データ損失関数の値」を確認することができます。
今回はそれぞれ、85.9%と0.323を示しており、精度がいいAIと言えます。
また、学習情報のグラフからは、学習した画像に対して、過度に学習をしていないかを確認できます。
AIが過度に学習している状態を過学習といいます。
過学習をしていると、学習データでは正解率が高い結果を得られますが、テストデータや推論では正解率が下がってしまいます。
過学習をしているかどうかは、学習情報の学習データとテストデータの正解率・損失関数のズレから確認できます。ズレが大きい場合には、過学習をしている可能性が高くなります。
より詳しい内容は、UdemyのMatrixFlowの講座をご確認ください。
学習結果を確認することができれば、「学習済みAIを保存する」をクリックして保存しましょう。
8.推論
推論では学習データ以外のデータを用いて、AIに予測をしてもらいます。AIを実際に使用するために必要な機能です。
推論は学習が終わったあと「このAIを使って推論する」を選択するか、「学習済みのAI」から「AIを予測する」を選択すれば始めることができます。
そして、「データセットの選択」から推論のために用意していた推論データをドラッグ&ドロップします。
その後、「推論を実行する」を選択しましょう。
推論の結果がでました。
目視で確認するとAIが予測した分類と実際の画像の分類が正確に予測することができていることがわかります。
しかし、下の画像のように他の画像の結果をみるとドレスがコートだと判断されているものがあり、全てが正確に分類されているわけではないことがわかります。
AIの精度を上げるためには、学習時間を変更したり、パラメータを調整したりする方法があります。
困った時には、MartixFlowでは精度の高め方や不明点をAIコンサルタントに相談することができるので、ご安心ください。
9.まとめ
今回の記事では、画像分類で服の画像を種類ごとに分類するAIを作成していきました。
MatrixFlowを用いれば、プログラミングの知識がなくても、簡単にAIを作成することができます。
この機会にMatrixFlowで業務の課題を解決してみませんか?
MatrixFlowでは、画像分類だけでなく、売上予測やテキストデータの分類などをすることができます。
困りごとやご相談があれば、以下のサイトからお問合せください。
・マニュアル http://www.matrixflow.net/manual/top/
・問い合わせ http://www.matrixflow.net/contact/