Azure Custom Visionで画像認識モデルを作る

昨日はAWS Rekognition カスタムラベルを使った画像認識モデルの作り方について書いたのですが、今日はMicrosoftです。Azure Custom Visionを使ってみようと思います。

料金

Custom Visionの料金体系は、トレーニングにかかった時間と、予測(分類)を行う画像の枚数です。トレーニングは1時間あたり2,240円、予測は1,000枚あたり224円です。

無料枠が提供されており、毎月、5,000枚の画像を使ったトレーニングと10,000枚までの予測を行うことができます。無料枠の提供期間は1年間です。

Custom Visionを使用可能にする

Custom Visionを使い始めるには、Azureにサインインした後、MarketplaceからCustom Visionのリソースを作成する必要があります。Custom Visionの提供元はもちろんMicrosoftとなっています。

作成オプションとしてはトレーニングと予測の「両方」を選びます。それぞれのリソースの価格レベルは、今回は無料枠のFree F0を選択しました。

しばらく待って、Custom Visionのデプロイが完了したら、リソースに移動します。

APIキーの取得などができますが、Custom Visionではブラウザベースでモデルの作成を行うことができるので、Custom Visionポータルに移動します。少なくともこの画面からCustom Visionに移動した場合はAPIキーなどは不要のようです。

Custom Visionポータルで画像認識モデルを作成

Custom Visionポータルはドメインも異なり、このような画面が表示されます。「SIGN IN」ボタンをクリックします。Azureとのシングルサインオンが有効になっていますが、複数のAzureアカウントがある場合は、アカウントの選択画面が表示されます。通常は、特にユーザ登録やログインの操作は必要なく、次の画面に遷移します。

まず、プロジェクトを作成します。作成済みのプロジェクトがある場合は、この画面に表示されるので、そのプロジェクトに再度アクセスすることができます。

プロジェクト作成画面では、プロジェクト名などの他に、プロジェクトタイプとドメイン(作成する画像認識モデルのジャンルという意味)を選択します。

プロジェクトタイプには、Classification(画像分類)とObject Detection(物体識別)があります。今回は、Classificationを選択しました。

ドメインは、汎用のGeneralの他にFoodやLandmark、Retail(小売)といったものがあり、作成したい画像認識モデルに近いものを選ぶと良いでしょう。また、compactという種類のドメインも準備されており、こちらを使うとエッジデバイスでのリアルタイム認識に適したモデルを作成することができます。

ドメインについての詳細は、Microsoftのドキュメントを参照すると良いでしょう。

プロジェクトを作成したら、こちらの画面から画像データをアップロードします。ラベル付けもこの画面で行うことができます。

Custom Visionでは、トレーニングデータとテストデータの分割は自動的に行われるため、ここで考慮する必要は特にありません。

画像のアップロードとラベル付けが終わったら、「Train」ボタンをクリックします。

トレーニングタイプを選択する画面が表示されます。今回はQuick Trainingを選択しました。Advanced Trainingを選択すると、トレーニングにかける時間を指定することができます。Custom Visionではトレーニングにかける時間でコストが決まるので、予算制約がある場合は指定すると良いでしょう。

最後に、「Train」ボタンをクリックするとトレーニングと評価が始まります。

トレーニングの完了と評価

トレーニングが終わると、Performanceタブにこのように評価指標が表示されます。(データを変えて再トレーニングする度にIterationが増えていきます。下図はIteration 2なので、2回目のトレーニング結果ということになります。)

モデル全体のPrecision(適合率)/Recall(再現率)/APのほか、ラベル(タグ)毎の指標も表示されます。

ラベル毎の適合率は例えば、犬と猫の画像から犬の画像を探したい場合、犬と予測した画像のうち、実際に犬の画像であった割合です。モデル全体の適合率は、ラベル毎の適合率の平均値です。

ラベル毎の再現率は、上記の例では実際に犬の画像のうち、犬と予測できた割合であり、モデル全体の再現率はその平均値です。

今回作成したモデルは犬と猫ではないのですが、Precisionが52.5%、Recallが24.2%となっています。ある予測結果の正解率は半分を超えるけれども、全体の中からは4分の1程度しかその画像を見つけ出せていないので、良好な結果とはいえませんね。(これはCustom Visionがダメだという意味ではなく、与えたデータの問題や、選択したドメインとの相性によるものです。)

また、APは物体識別で用いられることの多い指標ですので、ここでは説明を省きます。

モデルのAPI化

Custom Visionで作成したモデルは、この画面のPredictionsタブで画像をアップロードして画像の分類を行うことができるほか、Performanceタブの「Publish」ボタンをクリックしてWeb API化することもできます。

通常の用途では、ここでWeb API化して、任意のアプリケーションから呼び出して使用するということになるでしょう。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。