[Watson] Visual Recognition Tool を利用して画像解析を試す

# はじめに

私が気づかないうちに、Visual Recognition Toolが公開されていました。（2017年4月現在はBeta版となっています）

試してみたところ、なかなか使い勝手の良いToolでしたので情報共有します。

# Visual Recognition（以下VR）とは

VR APIは大きく分けて4つ。

1. Classify an image　…イメージ分類
2. Detect faces　…顔検出および性別・年齢の推定
3. Custom classifiers　…カスタム・イメージ分類
4. Collections　…類似画像抽出（2017年3月現在、ベータ版）

上記1、2はトレーニング済みで提供されており、事前学習の必要はありません。
一方3、4はユーザーがトレーニング画像を準備してWatsonに学習させ、独自の分類を行わせることができます。

VRについてのさらに詳しい情報は、[IBM Watson Developer Cloud](https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html)、あるいは、こちらの記事を参照してください。

[[Swift] [iOS] Watson Visual Recognitionを使って顔解析アプリを作ってみた](http://qiita.com/y-some/items/45e2c99b91485638e05b)

[[Watson] [Node-RED] 日本語に対応したVisual RecognitionのClassify an image（イメージ分類）を試してみた](http://qiita.com/y-some/items/f1e74aafb194ac9b72ff)

# VR Toolの起動

IBM Bluemixダッシュボードの「すべてのサービス」にて、VRの行をクリックします。
<img width="1135" alt="スクリーンショット 2017-04-22 15.52.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/8b68589e-4365-6174-a3a2-4c66c166faff.png">

Visual Recognition Tool (Beta) をクリックします。
<img width="999" alt="スクリーンショット 2017-04-22 15.53.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/66b0043e-75a1-9abb-7e9b-9012effc6bdf.png">

以下がVR Toolの初期画面です。
<img width="692" alt="スクリーンショット 2017-04-20 19.10.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/1782b666-925e-44d4-b2d4-7b9dbddb4dec.png">

# Detect faces（顔解析）を試す

「Faces」の点線内に画像ファイルをドラッグ＆ドロップするか、または「choose your files」にてPC内の画像ファイルを選択すると、顔解析を行うことができます。
<img width="313" alt="スクリーンショット 2017-04-22 16.02.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/0f2b046d-b82f-03ba-98ab-bffcad8aa851.png">
※画像はパブリック・ドメイン

# Classify an image（イメージ分類）を試す

「Default」では、デフォルト分類器によるイメージ分類（タグ付け）を行うことができます。
<img width="314" alt="スクリーンショット 2017-04-22 16.27.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/17004e44-3b0d-a6a2-dfd4-737f9dced259.png">
※画像はWikipediaより

Classify an imageは日本語対応していますが、VR Toolでは英語のみのようですね。

# Custom classifiersを試す

## Custom classifier（カスタム分類器）の作成

VR Tool初期画面で「Create classifier」をクリックすると、以下のような画面になります。
<img width="1039" alt="スクリーンショット 2017-04-20 19.10.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/f4ba2039-2ac5-f282-83ef-46f220ff282c.png">

この画面でCustom classifierを作成することができます。

今回は事例として「普通乗用車」「バス」「トラック」を分類する車の分類器を作成してみました。

<img width="1029" alt="スクリーンショット 2017-04-22 15.35.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/2a8bed7a-5fcb-2d0d-d69a-c08fcefdaee1.png">

＜Custom classifier作成時の入力項目＞

- Classifier name：分類器のタイトルを指定。上図では「car」
- Classes：分類名とトレーニング画像のzipを指定。上図では「standard, bus, truck」

「Negative」にはどのclassにも属さない画像を指定します。（オプション）

＜トレーニング画像について＞

- classごとの画像は最低50枚は必要とされており、そのzipファイルをアップロードします。
- 画像の解像度は低くても構いません。
- zipファイルの最大サイズは100MBです。
- classごとに150〜200枚のトレーニング画像を用意すると精度がベストになるようです。

その他、良いトレーニングのための公式ガイドはこちら。
[Guidelines for good training](https://www.ibm.com/watson/developercloud/doc/visual-recognition/customizing.html#guidelines-for-good-training)

「Create」ボタンをクリックすると初期画面に戻り、作成したClassifierが「training」状態になります。
<img width="1021" alt="スクリーンショット 2017-04-22 15.35.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/3811b16f-8d87-5db0-93cf-37066276efc4.png">

完了すると以下のように「ready」状態になり、カスタム分類器を試すことができます。
<img width="1011" alt="スクリーンショット 2017-04-22 15.39.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/1238b7e1-274a-9168-fe7e-d05610285b0f.png">

## 今回の実験結果

普通車の結果。まずまずです。
<img width="316" alt="スクリーンショット 2017-04-22 21.53.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/b1dd5d24-2bfe-0bd8-96b9-35d557a0ef19.png">


バスの結果。
<img width="316" alt="スクリーンショット 2017-04-22 21.51.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/b166cc25-33f5-30b3-289c-6951a11677b1.png">
トラックのスコア（確信度）と近いのは、多分、トラックclassのトレーニングデータにこんなタイプのトラックが含まれていたせいでしょう。
<img width="316" alt="Dog_as_truck_driver.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/122917/c2972d90-bb70-d084-86b1-8f104191eb55.jpeg">


トラック。上々かと。
<img width="316" alt="スクリーンショット 2017-04-22 21.50.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/122917/0e03d396-df65-2e85-c1bf-09ed4de43778.png">
※各画像はWikipediaより

今回は各classに50枚程度のトレーニング画像しか用意できなかったので、もう少し数を揃えればスコアが向上すると思われます。

# まとめ

従来は、VRを試すためにはcurlコマンドや自作アプリが必要でしたが、公式ツールで簡単に試すことができるようになりました。

他のWatson APIについても、ツールの充実に期待したいと思います。