Watson Visual Recognitionでオリジナル画像認識AIを作る

このエントリーをはてなブックマークに追加

42種類ものプラットフォームサービスやAPIを使うことができる無料の「IBM Cloudライト・アカウント」。

Ledge.aiでは以前、Watson APIsから3つを紹介しました。

>> 無料の「IBM Cloudライト・アカウント」で、さっそくWatson APIを試してみた

今回の記事で紹介するのは、同じくWatson APIsのひとつで、ディープラーニングを使用して、画像に写った物体・情景・顔などさまざまなものを分析・認識する「Visual Recognition(画像認識)」です。

画像認識AIを簡単に試せるのはもちろん、自前データをAIに学習させ、独自のカスタムモデルを使った画像認識がすぐに試せます。

それではさっそく、Watson APIsのVisual Recognitionを使っていきましょう。

階層的に定義されたクラスから、画像の詳細な情報までも認識

Watson Visual Recognitionには、すでに以下のような学習済のモデルが用意されています。

  • 一般認識モデル
  • 食べもの認識モデル
  • 不適切コンテンツ認識モデル
  • 顔認識モデル
  • テキスト認識モデル

AIに自前の画像データを学習させる前に、すでに学習済みのモデルをいくつか使ってみます。

一般認識モデルによる画像認識AI

まずは、一般認識モデルを使って、こちらの画像を解析させてみます。

解析結果がこちら。

"classes": [
            {
              "class": "chess master",
              "score": 0.837,
              "type_hierarchy": "/person/contestant/player/chess master"
            },
            {
              "class": "player",
              "score": 0.837
            },
            {
              "class": "contestant",
              "score": 0.837
            },
            {
              "class": "person",
              "score": 0.837
            },
            {
              "class": "chessman",
              "score": 0.937
            },
            {
              "class": "pawn (chess)",
              "score": 0.693,
              "type_hierarchy": "/chessman/pawn (chess)"
            },
            {
              "class": "game equipment",
              "score": 0.801
            },
            {
              "class": "alabaster color",
              "score": 0.979
            }
          ]

人がチェスをさしている画像から、

  • ヒト
  • チェス盤
  • チェスのコマ
  • チェス盤の色

など、画像内のあらゆる情報を認識しています。

画像認識AIはほかにもいくつかあり、基本的には、認識した物体のラベルやテキスト、その確度などを返します。Watson Visual Recognitionも同様に、あらかじめ定義された分類クラスの情報を返してくれます。

特徴的なのは、詳細に分類されたクラス。 “チェス”だけでなく、チェスのコマの名称まで認識してくれます。

食べもの認識モデルによる画像認識AI

続いて、食べものを認識するAIで、パンケーキの画像を解析させてみます。

解析結果がこちら。

"classes": [
            {
              "class": "chocolate chip pancakes",
              "score": 0.777,
              "type_hierarchy": "/sweet treat/sweet cooked dough/sweet pancakes/chocolate chip pancakes"
            },
            {
              "class": "sweet pancakes",
              "score": 0.911
            },
            {
              "class": "sweet cooked dough",
              "score": 0.911
            },
            {
              "class": "sweet treat",
              "score": 0.911
            }
          ]

これ、すごいですね。チェスの画像と同じように、パンケーキの認識にくわえて、どのようなパンケーキなのか、という細かい部分も認識しています。

キャラメルソースがかかっている画像を、AIは“chocolate chip pancakes”と誤認識していますが、パンケーキ以外の認識もしてくれるのは、実用の際には非常に助かるポイントです。

クラスが階層化されていることで、トピックによる細かい分類、検索も可能になりますしね。

独自の学習モデルを生成する際に、トピックの振りわけを細かくしたり、あえて粗くすることで、用途に合わせた使い方ができそうです。

たった数分で使えるAIを。GUIで学習・生成したモデルで画像認識してみる

さて、ここまではすでに用意されたモデルを利用していました。ここからは、自前の画像データを学習させた、カスタムモデルを利用する画像認識AIを作っていきます。

今回は、特定の人物を認識できるモデルを作りたいので、以下のような認識したい人物の画像データをAIに学習させます。

Watsonでモデルを作成する場合、最低でも2つのクラスを定義する必要があります。

ということで、1つ目の「kawamura」というクラスを作成するため、以下の画像データを学習させます。

2つ目に、以下の画像データを使い、「okada」というクラスを作成します。

Watsonでの画像データの学習は、GUI操作のみで可能です。さっそく学習を始めると、数分で学習がおわり、カスタムモデルが生成されています。

それでは生成されたモデルを使い、こちらの画像をAIが「kawamura」と認識できるか試してみましょう。

解析結果がこちらです。

{
  "images": [
    {
      "classifiers": [
        {
          "classifier_id": "DefaultCustomModel_208594450",
          "name": "Default Custom Model",
          "classes": [
            {
              "class": "kawamura",
              "score": 0.919
            }
          ]
        },
        {
          "classifier_id": "default",
          "name": "default",
          "classes": [
            {
              "class": "person",
              "score": 0.889
            },
            {
              "class": "coal black color",
              "score": 0.922
            },
            {
              "class": "charcoal color",
              "score": 0.618
            }
          ]
        }
      ],
      "image": "kawamura.jpg"
    }
  ],
  "images_processed": 1,
  "custom_classes": 2
}

以下の部分から、

{
  "class": "kawamura",
  "score": 0.919
}

かなり高い確率で画像の人物が「kawamura」と認識しているのがわかります。これで特定の人物を認識できるAIが作れました。

それ以外にも、一般モデルを使い、ヒトや色の認識もしてくれています。

画像認識AIも、データがあれば誰でも簡単に作れる時代に

自前のデータを使い、独自で定義したクラスやモデルの画像認識AIを作ってきましたが、

  • 画像データの準備
  • ドラック&ドロップで学習
  • モデル生成

という非常に簡単なプロセスで、カスタムされたAIを作ることができました。

AIを作るには、数学的な知識やプログラミングの知識が必須である印象がありますが、すでにGUIで学習ができるところまで来ているようです。Visual Recognitionはちょっとした検証などにも活用できそうですよね。

もちろん幅広く対応するAIを作るのはまだまだ難しいですが、特化したAIを作るには、今回紹介したWatson APIsなどを使う手も、候補の1つとして有力になってくるのではないでしょうか。

Visual Recognitionカスタムモデルの利用料金概要は

  • カスタムクラスの学習が画像一枚につき約10円
  • AIによる分類が画像一枚につき約0.4円

です。

仮に、ECサイトでカスタムモデルのVisual Recognitionを利用する場合、50個のクラスに対してそれぞれ100枚の画像を学習させると、約50,000円。

そのモデルを使った分類を月に5000回実行すると、約2000円です。学習データ量や利用回数で変動はするものの、比較的低コストでAIを導入できそうです。

自前のデータを使った画像認識AIを作りたい方は、ぜひ期間無制限でWatson含めた多数のAPIとサービスが無料で使える「IBM Cloudライト・アカウント」を作成して、Watson Visual Recognitionを試してみてはいかがでしょうか。

>> Watson APIs Visual Recognition