強火で進め

このブログではプログラム関連の記事を中心に書いてます。

IBM Watson の Visual Recognition を Unity から使う方法

Visual Recognition は画像を解析し、どのようなものなのかをテキストで返すサービスです。

[サービス情報]

Visual Recognition - IBM Cloud
https://console.bluemix.net/catalog/services/visual-recognition

[公式のチュートリアル]

概説チュートリアル
https://console.bluemix.net/docs/services/visual-recognition/index.html#-


[公式のドキュメント]

unity-sdk/Scripts/Services/VisualRecognition/v3 at develop · watson-developer-cloud/unity-sdk
https://github.com/watson-developer-cloud/unity-sdk/tree/develop/Scripts/Services/VisualRecognition/v3

アプリの作成手順

Visual Recognition を使った Unity アプリの作成手順を解説します。

基本的な共通で必要な作業はこちらの記事で解説しています。
こちらが未読の場合には先にそちらを確認し、 IBM Cloud アカウントの作成や IBM Watson Unity SDK のインストール作業などを済ましておいて下さい。

サーバ側の作業

まずはサーバ側の設定作業を行います。

こちらのページ経由でサーバにプロジェクトを作成します。
ページの右下に有る「作成」のボタンを押して、プロジェクトを作成して下さい。

新規資格情報を作成します。

デフォルトの状態のままで「追加」ボタンをクリック。

「資格情報の表示」をクリックして、展開。


後で使うのでここの情報をメモっておきます。
note の部分にはユーザへのメッセージが入る様です。「5分後に有効になります」などのメッセージが入っていたりしてました。
※キャプチャ画像の note は一度削除してから作り直したので異なるメッセージに成っています。

左側のタブから「管理」に切り替え、ツールを起動します。

ツールの初回起動時には API Key の入力が求められるので先程メモした中に有る api_key の値を入力します。


するとこの様な画面に切り替わります。ここでは画像解析の学習を行わせた分類器(Classifier)を作成します。新規に作成する為に「Create classifier」ボタンをクリックします。

学習用のデータを以下の様に設定します。画像データは IBM Watson Unity SDK をインストール済みの Unity のプロジェクトの場合、 Assets/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers に有ります。
ここでは giraffe_positive_examples.zip と negative_examples.zip を使って設定する事にします。

※学習データの zip ファイルは最低「正しいもの」2つ、もしくは「正しいもの」1つ、「間違っているもの」1つ準備する必要が有ります。

作成が完了するとこの様な表示に成ります。

赤枠の部分で画像ファイルを選択するとテストできます。分析したい画像を選択し、テストをしてみましょう。

ここでは Assets/Watson/Examples/ServiceExamples/TestData/visual-recognition-classifiers フォルダに有る giraffe_to_classify.jpg と turtle_to_classify.jpg を使ってみます。


ちゃんと判定出来ている事が確認できます。

Unity での作業

サーバ側の作業が終わったので次に Unity 側の作業を行います。
Unity のプロジェクトを新規作成し、 IBM Watson Unity SDK を Import 。
Assets/Watson/Examples/ServiceExamples/Scripts/ExampleVisualRecognition.cs を開き、以下の部分を見つけます。

ここに先程メモした url と api_key の値を記述します。

public class ExampleVisualRecognition : MonoBehaviour
{
    private string _apikey = null;
    private string _url = null;

Scene に新規に GameObject を作成し、このファイルをアタッチし、実行して下さい。

すると 〜Attempting to get all classifiers というメッセージの後に以下の様なメッセージが表示されます。

{"classifiers":[{"classifier_id":"\u52d5\u7269_693641681","name":"\u52d5\u7269","status":"ready"}]}

ここで表示されているものは自作した分類器(Classifier)を全て取得する API のレスポンスです。
「classifier_id」が「\u52d5\u7269_693641681(動物_693641681)」、「name」が「\u52d5\u7269(動物)」で有る事が確認できます。

classifier_id は他の API で使用するのでここの値で有る事を覚えておいて下さい。

関連情報

[Watson] Visual Recognition Tool を利用して画像解析を試す - Qiita
https://qiita.com/y-some/items/6addf597a81a48f04d59