デレステ MV 画像収集 bot をコーディングレスでつくる ① Custom Vision Service でモデルを構築

06 October 2017
#Azure#Custom Vision Service#Azure Logic Apps

最近デレステにハマりました。 にょわー

楽しいですよね、MV 鑑賞。

自分で MV のスクリーンショットを撮るのも最高ですが、他の P たちのスクリーンショットを見るのも良いものです。

そこで、Twitter からデレステの MV のスクリーンショット画像のみを収集する bot をつくることにしました。特に、推しである鷺沢文香さんのスクリーンショットを集めることを目的として設計します。

このデレステ MV スクリーンショット収集 bot は、以下の手順で Twitter からスクリーンショットを収集し Slack に送信し続けます。

  1. デレステ MV のスクリーンショットかどうかを判別する画像分類モデルを構築する。
  2. Twitter 検索(「文香」で検索)でヒットした画像を構築したモデルに対して適用する。
  3. デレステ MV のスクリーンショットであると判別された画像を Slack に送信する。
  4. Slack に送信されてきた画像を見てはっぴ☆はっ
今回は、コーディングレスでの簡単な bot 作成を目指して、1.での画像を判別するモデルの構築・運用に Custom Vision Service を使用し、2.および3.でのTwitter 検索から Slack への送信までを Azure Logic Apps で実装します。

本記事では、1.の手順について解説します。

Custom Vision Service

Custom Vision Service は機械学習によって画像を分類することができる Microsoft のサービスです。

必要な操作はすべてブラウザ上で実行可能であり、画像をアップロードしてラベル付けを行うことで、独自のルールで画像を分類するモデルを簡単に構築することができます。

また、学習や予測を行うための Web API が提供されています。

学習データ

それでは、デレステ MV スクリーンショット画像収集 bot を構築していきます。

まずは、モデルを構築するための学習データとして、Positive 画像と Negative 画像をそれぞれ500枚用意しました。

今回は、Twitter 検索で「文香 filter:image exclude:retweet」と検索してヒットした画像のうち、デレステ MV のスクリーンショットであるものを Positive 画像とし、それ以外の画像(ガシャやイラストなど)を Negative 画像としました。

Positive 画像の例を次に示します。

positive

また、Negative 画像の例を次に示します。

negative

モデルの構築

つづいて、用意した学習データを用いて、Custom Vision Service 上にモデルを構築します。

Custom Vision Serviceのサイトから登録を完了すると、Custom Vision Service のポータルサイトに遷移します。

そして、ポータルサイトから New Project を選択し、プロジェクトを作成します。

customvision1

プロジェクトの作成を完了すると、次のような画面に遷移します。

customvision2

ここから Add images を選択することで、モデルを学習させるための画像をアップロードすることができます。

customvision4

アップロードする画像がデレステ MV のスクリーンショットであることを識別するラベルとして、ここでは Positive というラベル名を設定しています。

 

右下の Upload files ボタンを押すことで、画像のアップロードが完了します。

Positive 画像と同様に Negative 画像もアップロードします。

 

つづいて、アップロードした学習データを用いてモデルを学習します。

モデルを学習するために必要な操作は、画面左上にある緑色の歯車ボタンを押すだけです。

customvision5

以上でモデルの構築は終了です。

customvision6

Precision と Recall は k-fold cross validation で計算された値であり、Probability Threshold のスライドを動かすことで性能を調整することができます(Probability Threshold を固定した状態で Web API からモデルを呼び出すことができるのか気になる)。

モデルのテスト

モデルをテストするための簡単な方法は、画面右上の ✓ Quick Test ボタンをクリックし、学習に使用していない画像を指定することです。

customvision7

Web API による画像の分類

Custom Vision Service では、Web API によってモデルを操作することができます。

Custom Vision Service で公開されている Web API の仕様は以下の2つのページにあります。

本記事では、Custom Vision Prediction API の PredictImageUrl を使用して、画像を分類する方法を紹介します。

PredictImageUrl は画像の URL を POST することで画像の分類結果を取得する API です。

API の仕様が記述されている PredictImageUrl のサイトの Open API testing console ボタンをクリックすることで、簡単に API をテストすることができます。

customvision_api_ref

Open API testing console ボタンをクリックしたときの画面を次に示します。

customvision_api_req

入力が必要な項目は、クエリパラメータの projectId とヘッダの Prediction-key、リクエストボディの url です。

projectId は Custom Vision Service のプロジェクトの URL のうち https://customvision.ai/projects/<ここの部分>#/manage です。

Prediction-key は Custom Vision Service の performance 画面の上部にある地球マークをクリックすることで表示されます。

url はモデルで分類したい画像の URL です。

customvision_api_info

以上の項目を入力して Send ボタンを押すと、画像の分類結果が返されます。

customvision_api_res

まとめ

今回は、Custom Vision Service を使用して、画像がデレステ MV のスクリーンショットかどうかを判別するモデルをコーディングレスで構築しました。

また、構築したモデルをテストするための方法と Web API からモデルを使用する方法を紹介しました。

次回は Azure Logic Apps を使用して、Twitter から取得した画像をモデルに適用し、デレステ MV のスクリーンショットのみを収集する bot を構築する予定です。

参考

Overview of Custom Vision Service machine learning | Microsoft Docs

Custom Vision Serviceを使ってみた - Qiita

 

4423.ch