【無料API】リクルートのAI「A3RT」で画像からテキスト検索してみた

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


Ledge.aiでは以前、株式会社リクルートテクノロジーズがリクルートグループ内で使われている内製AIのAPI群「A3RT」を無料公開したということで、レコメンドや画像解析、文章校閲を可能にするAPIを使ってみました。

>> リクルートがAIをまさかの無料公開。さっそくすべてのAPIを試しまくってみた

以前に公開されていたAPIはレコメンドや文章校閲などを可能にする6つでしたが、

という、2つの画像解析系APIが新しく追加されています。

おなじく無料で公開されていますので、さっそく使っていきます。

AIが検索の体験を変える? 画像検索を可能にする「Image Search API」

まずは、画像とテキストの相互検索を実現する「Image Search API」です。

この相互検索とは、

  • テキストによる画像検索
  • 画像によるテキスト検索

という、2つのことを指しています。

“テキストによる画像検索”に関しては、常日頃使っている検索機能と似ていますが、今回注目したいのは、“画像によるテキスト検索”です。

といっても、テキストから画像を検索する精度も気になるので、両方試してみます。

より自然な言葉から画像検索を

まずは「スノーボードをする子ども」というテキストで画像を検索してみると、以下のように、関連するキーワードと画像URLを返してくれました。

{
    "status": 0,
    "message": "ok",
    "result": {
        "txt": [
            "スノーボード",
            "少年",
            "雪",
            "スケート",
            "男性",
            "ボード",
            "ヘルメット",
            "する",
            "ウエア",
            "履く"
        ],
        "img": [
            {
                "url": "http://farm8.staticflickr.com/7198/6933992703_316b97d2cb_z.jpg",
                "file_name": "6933992703_316b97d2cb_z.jpg",
                "id": 5111,
                "license": "Attribution-NonCommercial-ShareAlike License"
            },
            {
                "url": "http://farm3.staticflickr.com/2038/1966527578_81620e681e_z.jpg",
                "file_name": "1966527578_81620e681e_z.jpg",
                "id": 36772,
                "license": "Attribution-NonCommercial-NoDerivs License"
            }
        ]
    }
}

※結果は一部省略しています


Photo by MS COCO
http://farm3.staticflickr.com/2038/1966527578_81620e681e_z.jpg

入力したテキストの内容にマッチした画像を返してくれました!

テキストによる画像検索は、複雑な文章だと見当違いな画像が検索結果にでてきますが、「馬に乗っている男性」「フリスビーで遊ぶ犬」など、比較的シンプルな文章なら想定した画像を返してくれます。

Image Search APIには、マルチモーダルDeep Learningという技術が使われています。

これは、複数の要素が連携されたデータを学習させたAIで、今回のケースでいうと、画像とテキストの関係を学習させています。

AIが実現する、画像によるテキスト検索

続いては“画像によるテキスト検索”を試してみます。

さっそくこちらの画像で検索してみます。


Photo by MS COCO
http://farm6.staticflickr.com/5230/5629351750_12f27320ba_z.jpg

画像検索して返ってきた結果がこちら。

{
    "status": 0,
    "message": "ok",
    "result": {
        "txt": [
            "象",
            "鼻",
            "ゾウ",
            "頭",
            "牙",
            "アップ",
            "小",
            "背中",
            "親"
        ],
        "img": [
            {
                "url": "http://farm9.staticflickr.com/8008/7596267222_a6595d0268_z.jpg",
                "file_name": "7596267222_a6595d0268_z.jpg",
                "id": 13869,
                "license": "Attribution-NonCommercial-NoDerivs License"
            },
            {
                "url": "http://farm9.staticflickr.com/8085/8547462321_a44f7da168_z.jpg",
                "file_name": "8547462321_a44f7da168_z.jpg",
                "id": 32722,
                "license": "Attribution-NonCommercial-NoDerivs License"
            },
            {
                "url": "http://farm9.staticflickr.com/8360/8298001271_aac28dc16f_z.jpg",
                "file_name": "8298001271_aac28dc16f_z.jpg",
                "id": 76328,
                "license": "Attribution-NonCommercial-NoDerivs License"
            },
        ]
    }
}

※結果は一部省略しています

テキストといっても結果として返ってくるのは、

といった、単語レベルのキーワードのようです。

Image Search APIの画像検索を使えば、仮に象を知らなくても、名称を知ることができます。これが高い精度で実現すれば、まさにAIによる新しい体験が提供されるということです。

精度的な観点からImage Search APIの実用はまだまだ難しそうですが、今後のデータと学習次第ではより“自然な言葉”による画像検索、画像からの固有名詞検索なども、そこまで先の話ではないでしょう。

学習データからAIがオリジナル画像を生成する「Image Generate API」

続いては、Deep Convolutional Generative Adversarial Networks(DCGAN)の技術を用いてオリジナルの画像を生成するAPI、「Image Generate API」です。

DCGANとは

DCGANとはDeep Convolutional Generative Adversarial Networksの略称で、GANで用いられていたネットワークの構成を変更し、より質の高い画像を生成できるよう変更したアルゴリズムです。

画像生成にはあらかじめ大量の画像を学習させたモデルが必要になるのですが、モデル作成には相当な時間と画像が必要になります。

モデルに関しては、A3RT側で“ネイルデザイン生成モデル”を用意してくれているので、APIを利用するだけでDCGANを試せます。

ちなみにこのモデルには4500枚以上の画像を学習させており、それらの画像を合成することでオリジナルな画像を生成してくれます。

画像を生成するために必要なのは、学習データをもとにした作られるユニークな数値配列です。

{
    "status": 0,
    "message": "ok",
    "values": [
        0.8722478151,
            -0.3653678298,
            0.4451104999,
            0.4942879081,
            0.0137110204,
            -0.240369767,
            0.2532131672,
            -0.5025328994,
            0.00098567,
            0.5424311161,
            -0.1123699918,
            -0.0169627331,
            0.1753796488,
            0.2717046142,
            ...,
      ]
}

※結果は一部省略しています

この数値配列からオリジナル画像を生成することができます。

上の数値配列からAIが生み出したオリジナル画像がこちら。

今回利用したのは、ネイルという限定されたモデルですが、イラストのモデル、キャラクターのモデルなど、学習データ次第ではさまざまなコンテンツを生成するAIができます。

上記であげたようにエンターテインメント性も感じるDCGANですが、実はAIのための学習用データを作成する、なんて使い道もあります。

AI開発において学習データセットを作成は、非常に大変です。それすらもAIが効率化してくれることで、さらなる技術の加速が期待できそうです。

AI × 画像で今までの常識が覆される?

今回使用したのは、「Image Search API」と「Image Generate API」の2つですが、どちらも非常に可能性を感じるものでした。

AIが実現してくれたのは、“画像によるテキスト検索”と“オリジナルの画像の生成”ですが、これってAIだからこそ可能になる素晴らしい体験ですよね。

  • どのような検索キーワードが必要?
  • 写真はあるけどブランド名がわからない
  • AI学習に必要な大量の画像を用意できない

なんて課題も、今後はマルチモーダルDeep Learning、そしてGANが解決してくれそうです。

今回利用したAIはA3RT公式ページで実際にデモを試すことができます。興味がある方はぜひ。

>> Image Search API
>> Image Generate API