Web APIで簡単に使えるAIサービス

Web APIで簡単に使えるAIサービス

これから始める人のための最新Cognitive Services入門

2017年10月20日

「AIの民主化」、全エンジニアがAIを活用する時代を迎えようとしている。多彩なAIサービスをWeb API形式で提供するCognitive Servicesでは何ができるのか? この記事で必要十分な基礎知識を素早く獲得しよう。

横浜 篤 Microsoft MVP for AI
  • このエントリーをはてなブックマークに追加

Cognitive Servicesとは

▼APIの一覧に戻る

概要

 「AIの民主化」「AIファースト」がキーワードとして出ることが多くなった。そんなAIに関する機能を容易に使えるサービスの一つに、マイクロソフトが提供するCognitive Servicesがある。Cognitive Servicesでは(執筆時点で)視覚/音声/言語/知識/検索といった分野のAIサービスがすでに利用可能で、例えば視覚AIサービスの一つであるFace APIを使えば顔を検出してメガネの有無や感情などを簡単に取得したりできる(詳細後述)。

 「容易に利用できる」と言うと「精度も低い?!」と思われるかもしれないが、そうではない。マイクロソフトのあらゆる分野のテクノロジ開発から生まれた高精度のサービス群である。本稿の内容を概観していただければ、そのおおよその実力が把握できるだろう。

 Cognitive Servicesは、Microsoft Azure内の製品の一つとして提供されており、公式サイトは「https://azure.microsoft.com/ja-jp/services/cognitive-services/」にある。公式サイトには、分かりやすい概要説明とドキュメント、動くサンプルなどが用意されているので、本稿に併せてぜひ参照してみてほしい。本稿は、「Cognitive Servicesでどんなことができるか」を素早く情報を収集したい人に向けて、その全APIの概要をできるだけコンパクトにまとめた。AIについてこれから学ぼうと思っている方にも、すでにその分野のスペシャリストの方にも、ぜひ本稿を参考にCognitive Servicesに触れていただき、その一端を知っていただければ幸いだ。

 Cognitive Servicesの各APIの説明に入る前に、「このサービスの何が良いのか?」という特長と、マイクロソフトが提供する3種類の機械学習サービスについて、簡単にまとめておこう。

▼APIの一覧に戻る

特長

Web API経由ですぐに利用可能

学習アルゴリズムの作成や学習データの準備はいらず、自身のアプリケーションからWeb APIを呼ぶことで利用ができるサービスが多く用意されている。

開発言語やプラットフォームを問わない

REST形式のWeb APIの呼び出しが可能な多くのプログラミング言語で(基本的に)利用できる。また、C#、Python、Androidなど、さまざまな環境向けのSDK/クライアントライブラリ/サンプルも用意されている。

主に従量課金制のサービス

多くのサービスが一定の無料枠付きの従量課金スタイルだ。料金体系については、「Cognitive Servicesの料金に関するページ」で確認していただきたい。実際にプロダクションとして運用をするのであれば、要件や設計の段階から料金体系を考慮することは重要だ。

▼APIの一覧に戻る

マイクロソフトが提供する3種類の機械学習サービス

 マイクロソフトは、大きく分けて3種類の機械学習サービスを提供している(図1)。

図1 マイクロソフトの機械学習サービス
Cognitive Services

本稿の説明対象。サービスの多くがマイクロソフトで構築した学習モデルを使うため、学習モデルの構築や学習データの準備が不要だ。逆に言うと、学習モデルのカスタマイズという側面では自由度は低い。

Azure Machine Learning

アルゴリズムをドラッグ&ドロップで作るGUIが用意されている。学習モデルのカスタマイズも可能だ。学習データを用意して学習させ、独自の学習モデルを構築することができる。

Cognitive Toolkit

深層学習(ディープラーニング)フレームワーク。Python/C#/C++などでアルゴリズムを構築できる。独自に用意した学習データから学習モデルを構築するため、自由度が高いが学習コストは大きい。

 以上の3種類の機械学習サービスを見比べると、Cognitive Servicesは自由度が低いのでデメリットが大きいように感じるかもしれない。しかし、マイクロソフトのあらゆる分野のスペシャリストによって構築されてきたものであり、また、個人では集められないような大量のデータを持って構築された高精度の学習モデルを利用できるという点は、メリットとして非常に大きいだろう。

▼APIの一覧に戻る

全サービスAPIリスト

 以上で、Cognitive Servicesの概要と特長、サービスとしての立ち位置はご理解いただけただろう。ここからは、Cognitive Servicesのカテゴリーごとに各APIの概要を説明していこう。ただしAPIの数は非常に多いので、効率的に参照できるよう本稿の目次を掲載しておく。

【目次】

 なお、これらのサービスやAPIを実際に利用するには、アカウントを登録してAPIキーを取得する必要がある。登録については本編の最後で触れている。

 また、各APIの日本語対応状況については、日進月歩で状況が変わる可能性があるので明記していない。詳しくはCognitive Servicesの各APIドキュメントをご確認いただきたい。

視覚 ― Vison ―

▲APIの一覧に戻る

Computer Vision API

 画像をアップロード、または画像URLを指定することで、画像の分析処理を行うAPIだ。以下は、画像をアップロードし、レスポンスのJSONデータを加工して表示した例だ。

図2 Computer Vision APIに画像をアップロードし、結果を表示

・画像引用元:https://azure.microsoft.com/ja-jp/services/cognitive-services/computer-vision/

 機能の一部を解説しよう。

  • 画像の説明文を生成する: 画像に含まれるものを要約して文章を生成する。上の画像だと「a man swimming in a pool of water」(水のプールで泳いでいる男性)という文章が生成された。
  • 画像をタグ付けする: 生き物、風景、行動など2000以上のタグの中から、画像にタグ付けをする。この例では、「water」「swimming」「sport」などが付けられる。ユーザーが独自のタグを付けたい場合は、後述する「Custom Vision Service(プレビュー)」で可能だ。
  • 人間の顔を検知する: 画像内から人間の顔を検知し、顔の座標、性別や年齢の結果を返す。上の画像でも男性の顔を正しく検知できていることが確認できる。顔の検知に関してより多くの情報を取得したい場合は、後述の「Face API」で可能だ。
  • 成人向けコンテンツの判断: 性的内容を含む画像かを判断する。今回は男性が肌を多く露出しているが、成人向けコンテンツではないと、一般的に正しく判断している。

 その他に、「光学式文字認識(OCR)」「手書き文字の読み取り」「サムネイル画像を生成」「配色の区別」などの機能がある。

▲APIの一覧に戻る

Face API

 顔を検出して分析する機能がある。顔の検出については、以下の顔のランドマークを検出する。

face-sample
図3 Face APIで検知する顔のランドマーク

・画像引用元:https://docs.microsoft.com/ja-jp/azure/cognitive-services/face/glossary

 ランドマークの情報以外にも多くの情報を取得する。図4上部の画像をアップロードすると、図4下部の情報が取得できる。

face-sample
図4 Face APIで検知する顔のランドマーク

・画像引用元:https://docs.microsoft.com/ja-jp/azure/cognitive-services/face/glossary

 上記は情報の一部にすぎないが、アクセサリーとして眼鏡や頭に何か付けていることや、ひげやメイクをしているかなどを認識している。感情も取得しているが、感情だけを取得したい場合は、後述の「Emotion API(プレビュー)」で可能だ。

 また、顔の検知の他に、以下の4つの機能がある。

  • 顔の確認: 1つの顔に対して、1人の顔と一致するかを判断する。
  • 似た顔の検索: 見た目が似ている顔を簡単に検索する。
  • 顔のグループ化: 見た目の類似性に基づいてグループにまとめる。
  • 顔の識別: 「似た顔の検索」と類似の機能だが、トレーニングをして精度を高めたうえで利用が可能。

▲APIの一覧に戻る

Content Moderator

 ビジネスにリスクをもたらす不適切なコンテンツを追跡、フラグ付け、評価、フィルタリングすることを目的とした、監視プロセスのサービスだ。

 ソーシャルメディアのWebサイトやゲームプラットフォームなどさまざまな環境で、画像、テキスト、動画を監視し、モデレーションすることができる。

▲APIの一覧に戻る

Emotion API(プレビュー)

 画像で検知した顔の感情(幸福、悲しみ、驚き、怒り、恐怖、軽蔑、嫌悪、普通の8種類)を検出し、それぞれのスコアを出力する。スコアは、01で表現される。以下は、サンプルの画像をアップロードした際の結果だ。

emotion-sample
図5 Emotion APIの結果例

顔が2つ検知され、「驚きの感情が最も高い」(赤文字表記)と認識されている。
・画像引用元:https://azure.microsoft.com/ja-jp/services/cognitive-services/emotion/

▲APIの一覧に戻る

Video API(プレビュー)

 動画での顔検知と追跡、動作の検知、手振れ補正や動画サムネイルの作成ができるサービスであったが、2017年10月30日をもって終了となる。

 このサービスに代わるサービス、Video Indexer APIについては後述する。

▲APIの一覧に戻る

Custom Vision Service(プレビュー)

 Computer Vision APIと似たサービスだが、Custom Vision Serviceでは独自のタグ付けをして学習が可能だ。REST APIからの利用だけでなく、ポータルサイト(https://customvision.ai/)で、画像のアップロードとタグ付け、トレーニングやテストを行うこともできる。

 利用の一例として、マイクロソフトのテクニカルエヴァンジェリストちょまど(千代田まどか)氏が、「松屋の牛めし」か「吉野家の牛丼」かを判定させるデモアプリ「松屋警察」を作っている(図6)。「松屋の牛めし」と「吉野家の牛丼」の画像をそれぞれ用意して学習させるとCustom Vision Serviceの準備は完了だ。あとは、Xamarinで作られたモバイルアプリから画像を送り、結果のJSONデータを加工して表示することで実現している。

図6 Custom Vision Serviceの利用例

・画像引用元:https://www.slideshare.net/chomado/20170818xamarin-msaicustom-vision-service

▲APIの一覧に戻る

Video Indexer(プレビュー)

 動画をアップロードすると、会話のテキスト化、翻訳(図8)、動画内の顔や誰が話しているかの認識、会話の感情分析など(図7)、さまざまな洞察結果を取得するサービスだ。REST APIと、ポータルサイト(https://vi.microsoft.com/)での操作が可能だ。分析された動画は、他のWebサイトなどに組み込むことも可能だ。

図7 Video Indexerのポータルサイト(1)

動画をアップロードするだけで、さまざまな分析結果が見られる。

video-indexer-sample2
図8 Video Indexerのポータルサイト(2)

キャプションの翻訳も可能。

音声 ― Speech ―

▲APIの一覧に戻る

Translator Speech API

 音声やテキストを翻訳するAPI群だ。従来のStatistical Machine Translation(統計的機械翻訳。以下、SMT)テクノロジから比べると、ディープニューラルネットワーク(以下、DNN)に基づいた翻訳技術の開発によって、近年、日本語の翻訳品質も向上している。ただし全てのAPIで、DNNに基づいた翻訳が可能ではない点には注意したい。

Text Translation API

 テキストから言語検出と翻訳を行い、翻訳済みのテキストを返すAPIである。Microsoft Translatorの「Try & Compare」ページで、SMTとDNNでの翻訳の違いを試すことも可能だ。

図9 Microsoft Translatorの「Try & Compare」でText Translationを試すことが可能
Speech Translation API

 音声から翻訳を行って、その翻訳音声を返すAPIである。音声を認識する際、以下の処理を行うことで認識精度を上げている。処理の至るところでDNNに基づいた技術が使われている。

  1. 音声をテキストに変換
  2. テキストを正規化
  3. 翻訳
  4. テキストを音声に変換
図10 音声認識の仕組み
Translation Hub

 ユーザー独自の辞書や独自のコーパスを学習させることで、カスタムな翻訳ができるプラットフォームだ。しかし、DNNに基づいた翻訳は未対応である。フィードバックは挙がっており、筆者としても早期の対応を望んでいる。

▲APIの一覧に戻る

Speaker Recognition API(プレビュー)

 声から人を識別するAPIだ。以下の2つとも、事前に登録することで、識別ができるようになる。

  • スピーカーの確認: スピーカーが特定フレーズの音声を登録することで、登録した人と同一の音声かを判断できる。
  • スピーカーの識別: 特定の複数人のスピーカーの音声を事前に登録してくことで、登録した人の誰が話したかを識別する。登録の際、特定のフレーズには依存しない。

▲APIの一覧に戻る

Bing Speech API

 人間の発話をテキストに変換、テキストを音声に変換するサービスだ。音声を認識する際、そのタイプに応じた認識モードの選択によって精度を調整する機能や、テキストを音声にする際に音声合成マークアップ言語(SSML)を操作して調整するなどの機能がある。

▲APIの一覧に戻る

Custom Speech Service(プレビュー)

 主に以下の2つのコンポーネントを構築し、トレーニングすることで、音声認識の精度を上げるサービスだ。

  • Acoustic model(音響モデル): 例として、騒音の多い工場で、騒音を除去して音声を認識できる。
  • Language model(言語モデル): テキストを登録することで、音声の用語集を構築できる。

 Bing Speech APIと連携して利用することで、より高精度な音声認識を行うことができる。これは他社の音声認識のサービスと差別化を図れそうなポイントなのだが、残念ながら本執筆時点では日本語には未対応である。

▲APIの一覧に戻る

マイクロソフトが提供しているアプリ

 マイクロソフトが提供している翻訳に関するアプリの一部を紹介しよう。

Skype翻訳(Skype Translator)

Skypeで通話中に、リアルタイムに翻訳してくれる機能で、2017年の4月より日本語対応が追加された。利用ができるSkypeはWeb版とデスクトップ版だ。

Microsoft Translatorアプリ

リアルタイムに音声を翻訳してテキストにするアプリで、こちらで公開されている。

PowerPointアドイン

プレゼンテーション時にリアルタイム字幕翻訳ができるアドインで、こちらで公開されている。

言語 ― Language ―

▲APIの一覧に戻る

Language Understanding Intelligent Service(プレビュー)

 入力したテキストから、意図(インテント)とキーワード(エンティティ)を抽出することで、自然言語の理解をサポートする。頭文字をとってLUIS(ルイス)と呼ばれることも多い。

 インテントとエンティティは、事前に設定して学習させる。

 REST APIの他に、ポータルサイトで文章を学習させることができ、学習させたモデルをREST APIで公開できる。

 例えば、学習モデルを構築することで、「明日の東京の天気はなに?」や「明日の天気は」「こんにちは」という文章に対して以下のような結果を得ることが可能だ。

luis-sample
図11 LUISの実行時の結果例

 このようにインテントが判断できれば、天気のAPIで天気を調べるプログラムを作ることができそうなのは想像が付くだろう。

▲APIの一覧に戻る

Text Analytics API(プレビュー)

 入力したテキストから、以下の3つの処理をすることができる。

  • 感情分析: テキストがポジティブかネガティブか(センチメント)を01のスコアで返す。0に近いとよりネガティブ、1に近いとよりポジティブだ。
  • キーフレーズ抽出: テキストからキーフレーズとなる単語を抽出する。
  • 言語の検出: テキストがどの言語なのかと、そのスコア(信頼度)を出力する。
図12 Text Analytics APIの実行時の結果例

▲APIの一覧に戻る

Bing Spell Check API

 文脈から文法やスペルのチェックの処理をする。スラングやインフォーマルな言葉を識別したり、同音異義語の誤りを検知したりするなどの特徴がある。

 「校正」モードと「スペル」モードがあり、「校正」モードの方がより文法のミス(大文字や繰り返しの単語など)を見つけることができる。しかしこのモードに対応しているのは、現状では英語のみだ。

▲APIの一覧に戻る

Translator Text API

 テキストから、言語検出と翻訳を行い、テキストを返すAPIである。ちなみに、翻訳したテキストを音声にするのは、前述のSpeech Translation APIで可能だ。

▲APIの一覧に戻る

Web Language Model API(プレビュー)

 現状、英語のみ対応しているサービスで、主な機能は以下のとおり。

  • 特定の単語の並びの出現確率を出力
  • 特定の単語の並びの後に続く単語の確立を予測
  • スペースが欠落している英語にスペースを挿入して単語分割

▲APIの一覧に戻る

Linguistic Analysis API(プレビュー)

 こちらも現状は英語のみ対応しているサービスで、文章構造を解析するために以下の機能が提供されている。

  • テキストを文で区切る
  • 単語の品詞を判断
  • 構文の解析

知識 ― Knowledge ―

▲APIの一覧に戻る

Academic Knowledge API(プレビュー)

 Microsoft Academic Graphを検索するAPIだ。Microsoft Academic Graphとは、科学論文、論文間の引用関係、著者、機関、雑誌、会議、研究分野などの異種グラフである。キーワードベースではなく、意味ベースで検索できるのが特徴の一つだ。

▲APIの一覧に戻る

Knowledge Exploration Service(プレビュー)

 構造化されたデータからインデックスを作成し、自然言語での検索を行えるようにするサービスだ。

▲APIの一覧に戻る

QnA Maker API(プレビュー)

 質問と回答のペアを登録することで、簡単にQAボットを構築できるサービスである。QAサービスの作成は、REST APIまたはQnA Makerのポータルサイトから行える。

 質問と回答のペアは、TSVファイルやPDF、ExcelやWordのファイルなどをアップロードして作成、もしくはWebサイトのURLを指定して登録できる。登録後は、ポータルサイトよりテスト用にチャットボットの画面が用意されており、質問や回答を再トレーニングきる。

 作成したQAサービスは、REST APIでコールすることで、外部(自身で作成したサービスなど)から呼び出すことが可能だ。

 以下の図は、QnA MakerでMicrosoft Azureの「Azureサポートに関するFAQ」のサイトを登録して、テストしたときの画面だ。

図13 QnA Makerのポータルサイトで質問と回答のテスト画面

▲APIの一覧に戻る

Entity Linking Intelligence Service API(プレビュー)

 文章の中でエンティティを検出し、個別のエンティティを文脈に基づいて識別するサービスである。

 以下は、英文を送信したときの結果の例だ。

図14 Entity Linking Intelligence Service APIの実行時の結果例

 「Mars」「Sun」「the Solar System」「Red Planet」をエンティティとして検出している。「Mars」と「Red Planet」は、文脈から同じ「Mars」だと識別できている点がポイントだ。

▲APIの一覧に戻る

Custom Decision Service(プレビュー)

 機械学習の分類方法の一つ「強化学習」によって、アプリケーションのコンテンツを最適化させるためのサービスだ。現状では、英語のコンテンツに対して最適化するようになっている。

 例えば以下のような使用例が考えられる。

  • ニュースサイトの記事を、パーソナライズする
  • 動画サイトの動画コンテンツをパーソナライズする
  • ショッピングサイトのおすすめアイテムの表示

▲APIの一覧に戻る

Recommendations API(プレビュー)

 ECサイトで見掛けるような、過去の取引から顧客が興味あるものを予測するサービスであるが、2018年2月15日で終了が決まっている。その代わりとして、Cortana Intelligence Galleryで公開されている「Recommendations Solution」がある。

▲APIの一覧に戻る

Bing Web Search API
Bing Image Search API
Bing News Search API
Bing Video Search API

 Bing Web Search APIは、Bing.com/Searchとほぼ同様のWeb検索ができるサービスだ。検索時にパラメーターを指定することで、回答のフィルタリングやランキング表示、順位付け、検索結果の画像のサムネイル表示などをすることもできる。

 その他のAPIは、画像(Image)、ニュース(News)、動画(Video)に特化した検索のAPIだ。通常のWeb検索と比べて、メタデータがより多く取得できるといった利点がある。

▲APIの一覧に戻る

Bing Autosuggest API

 検索ワードを入力する際、入力補助をするAPIだ。Bing.com/Searchで表示される入力補助の機能と同等のものと考えてよい。Searchに関連するAPIを利用する際は、このAPIを一緒に利用することで利便性が向上するだろう。

auto-suggest-sample
図15 Bing Autosuggest APIの利用結果

「マイクロソフトの」と入力すると、その後に続く文の候補が表示される。

▲APIの一覧に戻る

Bing Custom Search(プレビュー)

 独自の検索サービスを構築するための機能である。検索する範囲(サイト)を指定し、検索のクエリに応じて検索結果をカスタマイズできる。

▲APIの一覧に戻る

Bing Entity Search API(プレビュー)

 Bing Knowledge Graphを検索し、関連性の高いエンティティ(人、場所、物、映画、書籍、地元の企業など)の結果を返すAPIだ。現在は、米国内で英語でのみ利用可能だ。

 利用例として、「Satya Nadella」を検索すると、米国Microsoft社におけるCEOのエンティティが得ることができる。

 また、「restaurants near me」(近くのレストラン)と検索すると、検索した位置情報から近くのレストランの情報を得ることができる(図16)。

図16 Bing Entity Searchで検索したときの結果例

「restaurants near me」と検索すると、検索した位置情報の近くのレストランが検索結果で表示される。

▲APIの一覧に戻る

ラボ ― Labs ―

 開発中のCognitive Servicesの技術を公開している。ジェスチャーコントロールや経路探索のプロジェクトなど、6つのプロジェクトが公開されており、専用のサイトから試すことが可能だ。

おわりに

▲APIの一覧に戻る

注意事項

 ここでは内容について詳しく述べないが、利用前にプライバシーポリシーやオンラインサービス条件(OST)のCognitive Servicesのセクションを必ず確認してほしい。

▲APIの一覧に戻る

Cognitive Servicesを始めてみよう

 下記リンク先のCognitive Servicesの各APIのドキュメント上で、さまざまな機能を試しに動かしてみることが可能だ。ぜひその機能を体感してほしい。

 ちなみに、APIキーの取得については、Azureの契約がなくても、下記のリンク先より取得可能だ。

 また、Azureの無料アカウントの作成から始めるのも、いくつかの特典が付いてくるのでお勧めだ。

▲APIの一覧に戻る

まとめ

 Cognitive Servicesの特徴と、そのサービスの一覧を紹介してきたが、ぜひ、皆さまの用途に合うサービスに出会い、アプリケーションにインテリジェンスを組み込むきっかけになれば幸いだ。

サイトからのお知らせ

Twitterでつぶやこう!