こんにちは。データサイエンティストチームの八木です。
画像のラベル付け、皆さんどうされていますか?地味で大変ですが、後々の工程にも影響を与える大切な作業ですよね。現在たくさんのアノテーションツールが出ており、ご自身のタスクや状況にあったツールを使用されていると思いますが、実は Azure Machine Learning (Azure ML) でも画像データのラベル付けができるのをご存知でしょうか。今回は Azure Machine Learning スタジオのラベル付け機能を使用して、楽に早くラベル付けを行う方法をご紹介します。
まず、Azure Machine Learning とは、Microsoft が提供する機械学習モデルのトレーニング、デプロイ、自動化、管理などに使用できるクラウドベースの機械学習サービスのことです。その中のサービスの一つである Azure Machine Learning スタジオは、Azure ML でのデータサイエンティスト開発者向けの Web ポータルとしてたくさんの機能が用意されており、以下のサービスで構成されています。
※ML Studio (classic) と Azure Machine Learning スタジオは別物です。Microsoft では、新しく使い始める方には ML Studio (classic) ではなく、Azure Machine Learning の使用を推奨しています。
Azure Machine Learning スタジオには主に以下の機能があります。
Azure ML のデータのラベル付け機能を使ってみて、私が思う良い点と気を付ける点は以下です。
以降の章では、画像分類を行う際の Azure ML の データのラベル付け機能の簡単な使い方を、「事前準備」、「ラベル付けプロジェクトの作成」、「ラベル付け」、「ML Assist 機能」、「ラベル付けデータのエクスポート」の 5ステップでご紹介します。
今回は、Oxford-IIIT Pet Dataset というデータセットを使っていきますので、必要な方は以下からダウンロードしてください。これは CC BY-SA 4.0 のもと配布されている、犬・猫のデータセットです。犬 25種と猫 12種の合計 37種 7500枚程度の画像から構成されています。
あとは Azure ポータルからご自身のサブスクリプションにアクセスし、Azure ML を作成すれば事前準備は完了です。次は Azure ML での設定に進みましょう。
ラベル付けプロジェクトは、Azure Machine Learning にて使用できます。
[プロジェクト名] を入力し、[ラベル付けタスクの種類] を選択したら、[次へ] をクリックします。
今回は dog と cat で画像の分類を実施したいので、以下としました。
ラベル付けタスクの種類は、以下から選択することができます。
ここからデータセットの作成に入ります。
① [+データセットの作成]をクリックし、[ローカルファイル] をクリックします。
② データセットの名前を入力します。入力が完了しましたら、[次へ] をクリックします。
今回は、データセットの名前は pet-dataset としました。データセットについて説明を残しておきたい方は、[説明] にデータセットの概要を記入しておきましょう。
③ [参照] をクリックするとファイル選択の画面が開きますので、データを選択します。
今回は犬と猫の画像を 5枚ずつ選択しました。
④ [次へ] をクリックします。
⑤ 最後に確認の画面が出ますので、問題なければ、[作成] をクリックします。
データセットの作成に成功すると、以下のように通知されます。
⑥ 作成したデータセットを選択し、[次へ] をクリックします。
オプションとして、データセットを定期的にチェックしデータセットの更新があった際に新しいデータとして自動で追加してくれる機能があります。今回は途中で画像を増やす場合があるため、[増分更新を有効にする] をオンにし、[次へ] をクリックします。
今回は dog と cat の 2つを入力し、[次へ] をクリックします。
[詳細なタスク手順の URL] には、データセットの詳細 URL やラベル付けの資料などのリンクを貼っておくと便利です。また、[タスクの説明] の箇所には手順やラベル付けの際の注意点など、ラベル付け担当者に向けた説明文を記載できます。
ML Assist とはアノテーション前のデータに対して付与するラベルを推定してくれる機能です。推定には手動でラベル付けしたデータを用いてトレーニングされたモデルが使用されます。これは、Ignite 2020 でデザイナーや AutoML とともに GA が発表された機能で、機械学習で学習・推論したラベリング結果を活用することでラベリング作業を加速できます。
この機能を選択すると、GPU の Azure Machine Learning コンピューティングのコストが発生するので、注意してください。
[ML Assist によるラベル付けを有効にする] を選択します。コンピューティング先は、[既定の使用] を選ぶと、既定のコンピューティングクラスターが作成されます。[カスタマイズ] を選択すると、自分でコンピューティング クラスターのスペックを選択することができます。
[プロジェクトの作成] をクリックししばらく待っていると、以下のように [プロジェクトの作成が失敗しました] と表示されることがあります。内容をよく見ると、[GPU コンピューティング ターゲットを作成するための十分なクォータがありません。要求するクォータを増やして、カスタム コンユーティングを作成し、支援付き機械学習ラベル付けを有効にできます。] とのことですので、まずご自身の Azure ポータルからクォータを確認し不足している方は引き上げ要求を行いましょう。
ただ、私の方で試したときは、クォータが十分にある状態にもかかわらず、同エラーが出てしまったため、[カスタマイズ] で作成することにしました。その際の手順もご紹介します。
① [カスタマイズ] を選び、[作成] をクリックします。
② [コンピューティング クラスターの作成] 画面が出ましたら、自分が作成したいスペックのマシンを選択します。
※私のケースでは、以下のページではまだマシン選択ができませんでした。いったん [次へ] をクリックします。
③ [コンピューティング クラスターの作成] 画面に進んだら、コンピューティング名、最小ノード数など必要な情報を記入します。
※私と同じケースの方は、ここで各情報を入力後に [戻る] を押し、[仮想マシンの選択] のページに戻ります。
すると、[仮想マシンの選択] のページに戻ると好きなマシンを選択できるようになっていました。
④ マシンの選択と情報の入力が完了したら、[作成] をクリックします。
無事プロジェクトが作成できました。
では、早速ラベル付けに入っていきます。先ほど作成したダッシュボードを見ていきましょう。
※[方法] タブには手順「② ラベル付けプロジェクトの作成」の「7.命令のラベル付け (省略可能)」で入力した情報が表示されます。[詳細な指示の表示] には、登録した URL のリンクが貼られていますので、ラベル付けの資料などにすぐアクセスすることができます。
[送信] のクリックは [Alt]+Enter のショートカットキーでも実行することができます。
あとは、ぽちぽちとラベル付けを行っていくだけです。タグ付けした結果は自動保存され、再開時は前回終了した位置から再開できます。
ここで、複数人でラベル付けを行う際などに便利な機能をご紹介します。
[データ] の [ラベル付けデータ] から、[プロパティ] を選択すると、画像の詳細やラベル付けにかかった時間を見ることができます。
ラベルが誤っている場合は、ページの上部で [Reject] (却下) を選択します。 タグが削除され、画像はラベル付けされていないデータとして戻されます。
以下のように表示方法を変えれば複数の画像のアノテーション情報を表形式でまとめて確認することもできます。
ここまで来ましたら、ML Assist 機能を試してみたいと思います。
① Azure ML のデータストアから、workspaceblobstore を選択し、その中のアカウント名をクリックします。
② Azure ポータルのストレージアカウントのページに遷移するので、左ウィンドウの [Storage Explorer (プレビュー)] をクリックします。
③ [Azure ML-blobstore-{任意の文字列}] の UI から、作成した日時のフォルダを選択すると、以下のようにAzure ML から登録した画像が確認できますので、[アップロード] をクリックし、必要な枚数だけアップロードします。
今回は 400枚程度アップロードしてみました。
※ここでアップロードしてから Azure ML に反映されるまで、時間がかかることがあります。
Azure ML のデータラベル付けのダッシュボード画面から確認すると、ラベル付けに使用するデータが増えていることが確認できます。
100枚ほどラベル付けを実施してから、ダッシュボード画面を見てみると、[ML によるラベル付けの実験] の [トレーニング] の欄が実行中に変わっていることが分かります。
ただ、[ML によるラベル付けの実験] の欄を見ると、[トレーニング] は実行されていますが、[推論]は開始されていません。まだラベル付けを自動化するには足りないようです。
そこで画像を150枚追加し、合計 400枚程度ラベル付けをしてみたところ、推論が実行され [事前ラベル付け] に値が入っていることを確認できました。
[ラベル データ] から、画像を確認してみると、ML Assist によるラベル付けが行われ、タグが選択されている状態で画像が表示されています。あとは、画像とラベルがあっているかを確認し、送信するだけになりました。
トレーニングや推論はラベル付けした画像数に応じて自動で実行されるようです。別のプロジェクトで実施した際は 300枚程度で事前ラベル付けができていましたので、最低限で試したい方は、300 枚程度アノテーションした状態で一度確認してみてください。
ラベル付けされたデータをエクスポートは大変簡単で、[エクスポート] からご自身が使用したい形式でエクスポートするだけです。エクスポートは、ラベル付けがすべて終わっていない状況でも可能です。
現在は、CSV ファイル、COCO ファイル、Azure ML データセットとしてエクスポートすることが可能です。また、Azure ML データセットを Pandas データフレーム、もしくは、Torchvision データセットとして Notebooks で読み込む方法についてドキュメントも用意されていますので、気になる方はこちらもあわせてご確認ください。
無事ラベル付けを行いエクスポートすることができましたので、自分の使用したいサービスやモデルで使用してみましょう。
「機械学習導入支援サービス」はこちら今回は、Microsoft の Azure ML を使用して画像データセットのラベル付けを実施してみました。Azure データソースとの連携が容易で、アノテーションしたデータをすぐに Azure ML で取り込んで使用できるので、Azure ML で画像分類、物体検知などをされる際はぜひ Azure ML のデータのラベル付け機能を使ってみてください。
弊社では、このような Azure のサービスを使用した AI 活用支援をはじめ、様々な分野での機械学習モデル構築を承っております。現行の作業を軽減してより重要な作業に時間を当てたい、取得しているデータを活用して課題解決を行いたいなど AI 活用を検討中のご担当者の方がいましたら、ぜひお問い合わせください。まず何から始めればよいか悩んでいるといったお客様も、お気軽にご相談いただければと思います。
※参考 URL
関連ページ |