人工知能「Watson」の画像認識API に Qちゃんを機械学習させてみた

思わずシェアしたくなる話
2018.12.25

Qちゃんを認識できないワトソン

 以前の記事『誰でも使える人工知能「Watson」の性格分析APIの使い方』では、人口知能「Watson(ワトソン)」の性格分析API をご紹介いたしました。これ以外にも Watson には、画像に写ったモノや情景を認識できる画像認識API があります。この Watson 画像認識API には、まだ Watson が認識できないモノなどの名前を教えることができます(これを「機械学習」と呼びます)。
 そこで今回は、当社のマスコットキャラクター「Qちゃん」を使い、人口知能 Watson の画像認識API によって機械学習させるまでの手順をまとめてみました。

下準備

 Watson は、大手コンピュータメーカー「IBM(アイビーエム)」が運営する IBMクラウドのサービスのひとつです。Watson の各種API を使うには IBMクラウドの利用登録が必要になります。詳しくは以下の記事をご参照ください。

参考記事:誰でも使える人工知能「Watson」の性格分析APIの使い方

Watson「画像認識API」の使い方

 まずはじめに、Watoson の画像認識API「Visual Recognition(ビジュアル・レコグニション)」に画像を認識させてみましょう。

Visual Recognition サービスの作成

 IBMクラウドのコンソールにログインしたら、メニューバーの「カタログ」をクリックします。
「カタログ」をクリック

 左メニューの「AI」を選択し「Visual Recognition」をクリックします。
「Visual Recognition」をクリック

 そのまま「作成」をクリックします。
「作成」をクリック

 以上で 画像認識API の Visual Recognition サービスが作成されました。下のような画面が表示されていると思います。
Visual Recognition サービスの開始画面

 上の画面が表示されていない場合は、以下の手順で Visual Recognition の開始画面を表示させることができます。

1)画面左上の「≡」ハンバーガーメニュー から「リソース・リスト」をクリック
2)サービスの下の「Visual Recognition〜」をクリック
3)左メニューの「開始」をクリック

画像認識の実行

 作成した Visual Recognition に画像を送信して画像認識を実行してみましょう。

 左メニューの「管理」をクリックします。
「管理」をクリック

 「API 呼び出しの試行」ブロックの書類のようなアイコンをクリックすれば、画像認識を実行するためのコマンドをクリップボードにコピーできます。( {apikey} と {url} はそれぞれ実際のものに変換されてコピーしてくれます)

 以下がコピーしたコマンドです。(最後の1行は付け足しています)説明の都合上「\」(バックスラッシュ)で区切って複数行にしています。また、「<APIキー>」は画像認識API を使うためのパスワードのようなものですので秘密にして取り扱いましょう。

curl -X POST -u "apikey:<APIキー>" \
--form "images_file=@fruitbowl.jpg" \
"https://gateway.watsonplatform.net/visual-recognition/api/v3/classify?version=2018-03-19" \
| python -mjson.tool

● オプションの説明
1行目 -u オプションに続けてAPIキーを指定します。例えば APIキーが「secret」の場合は curl -X POST -u "apikey:secret" になります。
2行目 認識させる画像ファイルのパスを「@」に続けて指定します。例えば画像ファイルが /home/foo/sample.jpg にあるとしたら、--form "images_file=@/home/foo/sample.jpg" になります。
3行目 画像認識API の Visual Recognition のURLです。ここに画像ファイルを送信します。
4行目 画像認識の結果を見やすく表示するためのコマンドです。

 送信した画像ファイルと認識結果は、Watson のサービス改善のために記録されます。(この記録が公開されることはありません)もし、画像ファイルに機密情報や要配慮個人情報が含まれる場合は、curl コマンドに以下のオプションを追加することで記録しないように指定することもできます。

--header "X-Watson-Learning-Opt-Out: true"

参考資料:Watson サービスの要求ロギングの制御

画像認識の結果

 下のネコの写真を Visual Recognition で画像認識させた結果です、「class」が認識した分類名、「score」は 0 から 1 の範囲で値が大きくなるほど認識の信頼性が高くなります。

ネコ(2匹)の写真

● ネコの写真の認識結果(classes部分を抜粋)

“classes”: [
{
“class”: “cat”,(ネコ)
“score”: 0.98,
“type_hierarchy”: “/animal/mammal/carnivore/feline/cat”
},
{
“class”: “feline”,(ネコ科)
“score”: 0.981
},
{
“class”: “carnivore”,(肉食動物)
“score”: 0.981
},
{
“class”: “mammal”,(哺乳類)
“score”: 0.981
},
{
“class”: “animal”,(動物)
“score”: 0.982
},
{
“class”: “coal black color”,(石炭黒色)
“score”: 0.885
}
],

 ほぼ完璧にネコの写真であると認識してくれていますね。さて、弊社のマスコットキャラクター「Qちゃん」はどうでしょうか?

Qちゃんの画像

● Qちゃんの写真の認識結果(classes部分を抜粋)

“classes”: [
{
“class”: “stemma”,(紋章)
“score”: 0.94,
“type_hierarchy”: “/figure/tree/stemma”
},
{
“class”: “tree”,(木)
“score”: 0.94
},
{
“class”: “figure”,(人形)
“score”: 0.94
},
{
“class”: “queen (playing cards)”,(トランプのクイーン)
“score”: 0.534
}
],

 「紋章」や、Q の文字があるためか「トランプのクイーン」とも認識しています。(言われてみれば似ているような気もしますが・・・)

Watson に Qちゃんの写真を機械学習

 Watson の画像認識APIが Qちゃんを認識できるように、Qちゃんの写真を機械学習しておぼえてもらいます。

画像の準備

 Watson 画像認識API に機械学習させる画像には次のようなルールがあります。

・2つ以上の分類が必要(例えば:チワワと秋田犬など)
・1つの分類につき最低でも10枚以上の画像が必要(推奨50枚以上)
・画像フォーマットは JPEG形式 か PNG形式

参考資料:分類器のトレーニングに関するガイドライン

 2つ以上の分類が必要になるので、Qちゃんの写真と、いらすとやさんのイラストを機械学習させてみます。

Qちゃんの写真と、いらすとやさんのイラスト

 機械学習させる画像は、分類ごとにフォルダに入れて ZIP で圧縮しておけば準備完了です。フォルダ名がそのまま分類名として使われますので、英数文字でつけておきましょう。
画像を入れるフォルダとZIPファイル

カスタムモデルの作成

 IBMクラウドのコンソールに戻って Visual Recognition の左メニューの「管理」を選択して「ツールの起動」をクリックします。
「ツールの起動」をクリック

 Custom の「Create Model」をクリックします。
Custom の「Create Model」をクリック

 〜 Provision an instance here and refresh. の「here」をクリックします。
「here」をクリック

 Watson Studio の「Try it for free」をクリックします。
「Try it for free」をクリック

 下にスクロールして「Lite」を選択したら、ページ最下部の「Create」をクリックします。
「Lite」を選択

 確認画面が表示されますのでそのまま「Confirm」をクリックします。
「Confirm」をクリック

 〜 Provision an instance here and refresh. の「refresh」をクリックします。
「refresh」をクリック

 適当なプロジェクト名を入力して「Create」をクリックします。
プロジェクト名を入力して「Create」をクリック

 少し長くなりましたが、以上でカスタムモデルが作成されました。
作成されたカスタムモデル

画像のアップロードと機械学習の実行

 作成したカスタムモデルに機械学習させる画像をアップロードして学習させます。

 Upload to project ボックスの「Browse」をクリックします。
「Browse」をクリック

 先ほど準備した機械学習させる画像の ZIPファイルを選択して「開く」をクリックします。
ZIPファイルを選択して「開く」をクリック

 ZIPファイルがアップロードされたら2つとも選択して「Add to model」をクリックします。
2つとも選択して「Add to model」をクリック

 作成したカスタムモデルに機械学習させる画像が分類ごとに追加されました。それぞれの画像の下の名前が分類名です、分類名は変更することもできます。
カスタムモデルに追加された画像

 適当なモデル名に変更したら「Train Model」をクリックして機械学習を開始します。( Watson の学習が終わるまでしばし待ちます)
モデル名を変更して「Train Model」をクリック

 今回は10分ほどで機械学習が終わりました。(学習させる画像の枚数や容量によって学習時間は変わってきます)
機械学習の完了表示

カスタムモデルで Qちゃんの画像認識を実行

 Qちゃんの写真を機械学習させたカスタムモデルで、画像認識を実行してみましょう。

 いちど IBMクラウドのコンソールに戻って Visual Recognition の左メニューの「管理」を選択して「ツールの起動」をクリックします。
「ツールの起動」をクリック

 先ほど作成したプロジェクト名をクリックします。
プロジェクト名をクリック

 Models の下に、作成したカスタムモデルが表示されていますのでクリックします。
カスタムモデル名をクリック

 「TEST」タブを選択して「Drop image files here 〜」の部分に画像をドロップすれば画像認識が実行できます。
「TEST」タブを選択

 先ほどトランプのクイーンと認識された Qちゃんの写真をドロップしてみると、信頼性0.9(90%)で Qちゃんと認識してくれました!
Qちゃんの画像を認識

 ちなみに、いらすとやさんのイラストもしっかり認識されています。(下は学習させたイラストとは違うイラストです)
いらすとやさんのイラストの画像を認識

 「Implementation」タブを選択すると、curl コマンドや各種プログラム言語で画像認識を実行するためのコードを表示できます。
「Implementation」タブを選択

おしまいに

 この Watson の画像認識API(Visual Recognition)は、複雑な帳票の突き合わせ処理や、自動車タイヤの減り具合などを診断するサービスなどで実際に使われているそうです。アイデア次第で面白いサービスがつくれそうですね。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です