LoginSignup
2
0

More than 1 year has passed since last update.

Azure ML デザイナーでの画像分類サンプルで何をやっているのか確認してみる。

Posted at

Azure Machine Learning デザイナーとは

Azureの提供する機械学習プラットフォームであるAzure Machine Learningでは自動機械学習やGUIベースで機械学習を行える機能、一般的なものとしてJupyter互換のNotebookが提供されています。本記事ではGUIツールであるデザイナーを用いて画像分類(深層学習)のプロセスをどう組んでいくのか、サンプルから深堀する形で確認します。

サンプル

デザイナーを開くとサンプルがいくつか用意されているのですが、Image Classification using DenseNetを対象とします。

全体の構成は以下の画像のようになっています。
image.png

まず、入力となる画像データセットは以下のようなファイル構造になっている必要があります。

Your_image_folder_name/Category_1/xxx.png
Your_image_folder_name/Category_1/xxy.jpg
Your_image_folder_name/Category_1/xxz.jpeg

Your_image_folder_name/Category_2/123.png
Your_image_folder_name/Category_2/nsdf3.png
Your_image_folder_name/Category_2/asd932_.png

このファイル構造を持ったローカルファイルやデータレイクなどのディレクトリをファイルデータセットとしてワークスペースに登録します。ローカルファイルの場合は.zip等の圧縮ファイル推奨。その後、登録したデータセットをキャンバス上に配置。

Convert to Image Directoryと接続します。これはAzure ML上で画像データを扱うためのImageDirectory型への変換のようなものになっています。

次に来ているSplit Image Directoryはデータを分割することができます。サンプルではTraining/Validationデータ:Testデータ=9:1に分割し、Trainingデータ:Validationデータ=9:1に分割しています。ValidationデータとTestデータは混同されがちですが、推論結果を次の学習に反映する際に用いるのがValidationデータ、汎化性能を測るために1度のみ利用する完全な未知データがTestデータというような解釈で良いと思います。

Init Image Transformationでは、画像の前処理としてどのような変換をかけるのか指定します。ここで指定したパラメータを用いて、後のApply Image Transformを実行します。サンプルでは、ImageDirectory型のデータを分割してから変換を適用しましたが、データ分割前に一括で変換してしまった方がシンプルかもしれません(実行していないので確信は持てませんが)

DenseNetはTrainするモデルを指定しています。理論的なところはDensely Connected Convolutional Networksをご覧ください。画像データの扱える畳み込みニューラルネットワークの一種です。選択肢としてはResNetも対応しています。

Train PyTorch Modelは上記のDenseNet及びResNetをPyTorch上で学習させるためのモジュールです。エポック数バッチサイズ学習率をここで指定します。モジュール名と異なり用途は限られています。データセットが大規模な場合は、GPU型のコンピューティング環境が推奨されるので、ワークスペース上から設定しましょう。各エポックにおける評価のためのValidationデータも入力として必要になってきます。

サンプルの構成には組み込まれていませんが、ハイパーパラメータの調整用のモジュールもあるようです。グリッドサーチ等の設定が可能です。

最後にいつも通り、Score ModelモジュールでTestデータに対して推論を行いモデルの最終的な評価をします。問題なければ推論パイプラインを作成・発行して利用を開始できます。

データのラベル付け

画像分類は教師あり学習に当たります。それゆえ独自の学習データのラベル付けをする際に非常に手間がかかり、これがハードルになってしまうことが多々あります。AzureMLの昨日のアップデートにより、この作業をサポートするGUI機能が追加されました。

ファイルデータセット内の画像に対してラベルを付ける処理がかなり楽になります。ラベル付けの結果はそのままAzure MLデータセットもしくはCOCO形式でエクスポートすることが可能です。学習データ生成から学習までAzureMLワークスペース上でスムーズに連携することが可能です。
image.png

画像数が多い場合はある程度手動で分類した後、MLによるラベル付け機能を有効化することでAIを利用することも可能です。

さいごに

自分のデータでやってみてまた躓くポイントがあれば共有したいと思います!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0