NINA HOUSE

技術ブログ作ってみる

【まとめ】AI-900対策・Cognitive Servicesについてまとめた

AI-900受験してきました

受かりました!

直前に試験範囲のCognitive Servicesについて簡単にまとめたので、さらにまとめる。
詳細な範囲についてはラーニングパスを↓

docs.microsoft.com

試験範囲出題割合

出題範囲は大きく分けて5分野。

コンテンツ領域 割合
人工知能のワークロードと考慮事項についての説明 15-20%
Azureでの機械学習の基本原則に関する説明 30-35%
AzureでのComputer Visionワークロードの特徴に関する説明 15-20%
Azureでの自然言語処理NLP)の特徴に関する説明 15-20%
Azureでの会話型AIワークロードの特徴に関する説明 15-20%

表の下3つがAzure Cognitive Servicesの範囲。比較的新しい試験なので参考書等もないため、ひたすらラーニングパスをやって覚えました。
見直しに使えるよう要点をざっくりまとめました。

Computer VisionとCustom Vision

nina-house.hatenablog.com

Face

nina-house.hatenablog.com

光学文字認識OCR

nina-house.hatenablog.com

Text Analytics

nina-house.hatenablog.com

音声認識・合成

nina-house.hatenablog.com

Language Understanding(LUIS)

nina-house.hatenablog.com

Bot Service

まだ

まとめ

出題範囲の半分ぐらい占めてるのでしっかり覚えましょう。

【AI-900】Azureの翻訳サービスとLUIS(Language Understanding)

Azureの翻訳

テキストを翻訳する場合と、音声を翻訳する場合と。

docs.microsoft.com

Translator Text と Speechとそのリソース

Translator Text - テキスト翻訳
  • Translator TextかCognative Services

  • 60 以上の言語間のテキスト翻訳をサポート(from, to で指定)

  • 不適切用語のフィルタリング - 設定を行わない場合、このサービスは不適切な表現を除外せずに入力テキストを翻訳する。 不適切レベルは通常、文化によって異なるが、翻訳されたテキストを不適切なテキストとしてマークするか、結果内で省略することによって、不適切な翻訳を制御できる。

  • 選択的翻訳 - コンテンツにタグを付け、翻訳を行わないようにすることができる。 たとえば、コード、ブランド名、ローカライズ時に意味をなさない単語やフレーズなどにタグを付けることができる。

Speech - 音声からテキストおよび音声から音声への翻訳
  • SpeechかCognative Services

  • 音声テキスト変換 - 音声ソースからテキスト形式に音声を文字起こしするために使用される。

  • テキスト読み上げ - テキスト ソースから音声を生成するために使用される。

  • 音声翻訳 - ある言語の音声を別の言語のテキストまたは音声に翻訳するために使用される。

LUIS(Language Understanding)

もう少し踏み込んだサービス。

IoTのホームオートメイトサービスを作成してみるサンプル↓

docs.microsoft.com

AzureのLanguage Understanding Intelligent Service

  • 発話
  • エンティティ
  • 意図

何ができるかがとってもわかりやすい↓

note.com

Language Understanding 用の Azure リソース

  • Language Understanding: Language Understanding 専用のリソース。"作成" リソースまたは "予測" リソースのいずれか。

  • Cognitive Services: Language Understanding およびその他の多くのコグニティブ サービスを含む一般的なコグニティブ サービス リソース。 このリソースは、"予測" にのみ使用できる。

【AI-900】音声の認識と合成

Azureの音声認識・合成のサービス

docs.microsoft.com

音声認識 - 音声入力を検出して解釈する機能

テキスト変換するのが一般的。

  • 録画またはライブの動画のクローズド キャプションの提供
  • 電話または会議の音声テキストの作成
  • メモの自動ディクテーション
  • 処理の対象となるユーザー入力の特定  など
音声合成 - 音声出力を生成する機能
  1. システムによる音声の合成では通常、テキストが "トークン化" されて個々の単語に分割され、各単語に音声の音が割り当てられる
  2. 音声のトランスクリプトが "韻律" 単位 (フレーズ、句、文など) に分割され、オーディオ形式に変換される音素が作成される  3. これらの音素が、音の高さや音質などのパラメーターを決定する音が適用され、スピーカーへの出力やファイルへの書き込みが可能なオーディオ WAVE 形式が生成されることで、音声として合成される

Azureで提供されているサービス 、必要なリソース

Speech to Text API
  • リアルタイムの文字起こし
  • バッチの文字起こし(storageに入ってたりする音声ファイル)
Text to Speech API
  • 音声合成
    サポートされている言語はこちら↓

言語サポート - 音声サービス - Azure Cognitive Services | Microsoft Docs

言語サポート - 音声サービス - Azure Cognitive Services | Microsoft Docs

【必要なリソース】
音声かCognative Services

【AI-900】Azureの自然言語処理サービスについて(Text Analytics編)

Text Analytics サービスを使用してテキストを分析

docs.microsoft.com

テキスト分析ってこんなことしてる↓

  • テキストで使用されている用語の統計分析。 たとえば、一般的な "ストップワード" ("the" や "a" など。テキストに関するセマンティック情報がほとんどない単語) を削除し、残りの単語の "頻度分析" (各単語の出現回数をカウントする) を実行すると、テキストの主要なテーマに関するヒントを得ることができます。

  • 頻度分析を複数用語のフレーズに拡張します。これらのフレーズは、一般的に "N グラム" (2 単語のフレーズは "バイグラム"、3 単語のフレーズは "トライグラム" など) と呼ばれます。

  • "stemming" または "lemmatization" アルゴリズムを適用して、カウントする前に単語を正規化します。たとえば、"power"、"powered"、"powerful" のような単語は同じ単語として解釈されます。

  • 言語構造規則を適用して文を分析します。たとえば、文を "名詞句" などのツリー状の構造に分割します。これ自体には、"名詞"、"動詞"、"形容詞" などが含まれます。

  • 単語や用語を、機械学習モデルのトレーニングに使用できる数値の特徴量としてエンコードします。 たとえば、含まれている用語に基づいてテキスト ドキュメントを分類します。 多くの場合、この手法は、"感情分析" を実行するために使用され、ドキュメントは肯定的または否定的として分類されます。

  • 単語を n 次元空間内の場所に割り当てて、単語間のセマンティック関係をキャプチャする "ベクトル化" モデルを作成します。 たとえば、このモデリング手法では、"花" と "植物" という単語に値を割り当てて、それらを相互に近接するように配置し、"スケートボード" には、はるかに離れた位置にある値を与えます。

https://docs.microsoft.com/ja-jp/learn/modules/analyze-text-with-text-analytics-service/1-introduction

めちゃくちゃ複雑。これらをできるようにしたサービスがText Analytics

ドキュメントまたはテキストの言語 (フランス語や英語など) を決定

例えば英語とスペイン語が混在するような文章でもどっちが主要言語であるか判定してくれる。

【判定の仕方】
f:id:nina-b:20210508201833j:plain

テキストに対して感情分析を実行して肯定的または否定的な感情を決定

事前に構築された機械学習分類モデルを使用して、テキストを評価し、0 から 1 の範囲のセンチメント スコアを返す。1 に近い値ほど肯定的な感情。 範囲の中間 (0.5) に近いスコアは、中立または不確定とみなされる。

テキストから、主な要点を示す可能性のあるキー フレーズを抽出

こんなレビューがあったとしたら↓

"誕生日のお祝いに、ここで夕食をいただきましたが、すばらしい経験でした。私たちは親切な接客係の女性に出迎えられ、予約した席にすぐに案内されました。くつろげる雰囲気で、料理も非常においしく、サービスは最高でした。すばらしい料理と気配りの行き届いたサービスが好きなら、ぜひこの場所を訪ねるべきです。"

  • 気配りの行き届いたサービス
  • すばらしい料理
  • 誕生日のお祝い
  • すばらしい経験
  • 親切な接客係の女性
  • 夕食
  • 雰囲気
  • 場所

こんな感じで抽出。感情分析に応用。

テキスト内のエンティティを識別して分類する。 エンティティとしては、人物、場所、組織、または日常的な項目 (日付、時刻、数量など) がある

例↓
f:id:nina-b:20210508202710j:plain

Text Analytics サービス用の Azure リソース

Text AnalyticsかCognative Services。
他のサービスとの課金の仕方でどっちを選択するか考えましょう。(他のCognative Servicesと一緒にする場合はCognative Services)

【AI-900】Azureの光学式文字認識(OCR)

AzureのOCRサービス

docs.microsoft.com

必要なリソース

Computer VisionCognitive Servicesのどちらか。
こちらもこれまでと同様キーとエンドポイントが必要。

Computer Visionでやってみる

2つのAPIがある。画像内にテキストがどれだけ含まれているかで使い分ける。

  • OCR API - 画像内の少量のテキストを素早く抽出

    • テキストを含む画像内の領域
    • 各領域のテキストの行
    • 各テキスト行の単語
      OCR API はこれらの各要素について、領域、行、または単語が表示される画像内の位置を示す四角形を定義する "境界ボックス" 座標も返す。
  • 読み取りAPI - 大量のテキストを含むスキャンされたドキュメントに適している(手書き文字もいける)

読み取りAPIは処理が多いので、コンテンツを読み取ってアプリケーションに結果を返す間、アプリケーションをブロックしないように非同期的に動作。よって、読み取りAPI を使用するには、アプリケーションで次の 3 ステップの処理を行う必要があるす。

  1. API に画像を送信し、応答として操作IDを取得

  2. 操作 ID を使用して画像解析操作の状態を確認し、完了するまで待機

  3. 結果を取得

ページ、行、単語、座標を取得できる。

フォームに特化したOCRサービスもあるよ

Form Recognizer

docs.microsoft.com

Form Recognizerとは

フォームの内容まで解釈してくれるスグレモノ。

例)フィールド名と値の照合
データのテーブルの処理
日付、電話番号、住所、合計などの特定の種類のフィールドの識別など

2つのモデルがある。

  • 事前作成済みの領収書モデル - 売上票からデータを認識して抽出するようにトレーニングされてる

  • カスタムモデル - キーと値のペアと、テーブル データをフォームから抽出できる

使用するにはForm RecognizerのAzureリソースが必要。

事前作成済みの領収書モデルでは

カスタムモデルのドキュメントはこちら↓

docs.microsoft.com

【何が抽出できるか】
* 取引時間
* 取引日
* 販売者情報
* 支払い税額
* 領収書合計
* 領収書に記載されている可能性があるその他の関連情報
* 領収書のすべての文字が同様に認識されて返される

【ファイルの要件はこちら】

  • 画像を JPEGPNGBMP、PDF、または TIFF 形式にする
  • ファイル サイズを 50 MB 未満にする
  • 画像のサイズを 50 x 50 から 10000 x 10000 ピクセルにする
  • PDF ドキュメントの場合、17 インチ x 17 インチ以下

【AI-900】Faceの顔分析(Azure)

AzureのFace APIチュートリアル

みんな大好き「Face」でできること。

docs.microsoft.com

3 つのできること

  • 顔検出 - 人間の顔を含む画像の領域の識別。顔周りに長方形を形づくるやつ。

  • 顔分析 - 単純な顔検出を超えて、顔の目印 (鼻、目、眉毛、唇など) などの他の情報を返すこともできる。表情がわかったり。

  • 顔認識 - 顔の特徴から既知の個人を識別するために機械学習モデルを訓練し、トレーニングされていない新しい画像でそれらの人物を検出できるようにする。

例えばこんなことができる。

  • セキュリティ - 顔認識は、セキュリティ アプリケーションを構築するために使用することができ、それはデバイスのロックを解除するためのスマートフォンのオペレーティング システムで使用されることが増えています。

  • ソーシャル メディア - 顔認識を使用して、写真の既知の友人に自動的にタグづけ

  • インテリジェントな監視 - 自動車にはドライバーが道路を見ているか、モバイル デバイスを見ているか、疲れの兆候を示しているかを判断するため、ドライバーの顔を監視するシステムが組み込まれていたり

  • 広告 - 画像内の顔を分析し、人口統計上適切なオーディエンスを広告のターゲットを解析

  • 行方不明者 - 公共カメラ システムと顔認識を使用して、行方不明者が画像フレーム内にいるかどうかを識別することができる

  • ID 検証 - イミグレで使用

Azureの顔分析サービス

  • Computer Vision:顔検出と、一部の基本的な顔分析 (年齢の特定など)

  • Video Indexer:ビデオ内の顔を検出して特定するために使用

  • Face:顔を検出、認識、および分析できる事前構築済みのアルゴリズムがある

「Face」の特徴

  • 顔検出

  • 顔検証

  • 類似した顔の検出

  • 類似性に基づいた顔のグループ化

  • 人の識別

年齢、表情、髪とか化粧とかいろいろ判断する。

Face 用の Azure リソース

  • Face
  • Cognitive Services
    他のCognative Services同様、キーとエンドポイントが必要。
注意事項
  • 画像形式 - サポートされている画像は JPEGPNG、GIF、および BMP

  • ファイル サイズ - 6 MB 以下

  • 顔のサイズ範囲 - 36 x 36 から 4096 x 4096 まで。 これより小さいまたは大きい顔は検出されない

  • その他 - 極端な顔の角度、妨害 (サングラスや手などの顔をブロックするオブジェクト) によって損なわれる可能性があります。 顔が完全に正面、または完全な正面にできるだけ近い場合に最良の結果が得られる

【AI-900】Computer Vision サービスを使用して画像を分析する

Computer Vision サービスのチュートリアル

Computer VisionはAzureの画像分析するためのサービス。Azure Cognitive Servicesの一つ。

docs.microsoft.com

Computer Vision サービスを使用した画像の分析

  • 画像の説明
  • 視覚的な特徴のタグ付け
  • オブジェクトの検出
  • ブランドの検出
  • 顔の検出
  • 画像の分類
  • ドメイン固有のコンテンツの検出
    • 有名人
    • ランドマーク
  • 光学式文字認識
  • その他の機能
    • 画像の種類を検出する - クリップアート画像や線画を識別
    • 画像の配色を検出する - 具体的には、画像の支配的な前景、背景、および全体の色を識別
    • サムネイルを生成する - 画像の小さなバージョンを作成
    • 内容の抑制 - アダルト コンテンツや暴力的で残虐な場面が含まれている画像を検出

具体例はこちら↓

Azure で画像分析を開始する - Learn | Microsoft Docs

Computer VisionとCustom Vision

こちらがわかりやすかった↓
https://eventmarketing.blob.core.windows.net/decode2019-after/decode19_PDF_AI51.pdf

レーニング済みのモデルを開発者が使用するには?

→プロジェクトID,モデル名、予測リソースのキーとエンドポイントが必要!

docs.microsoft.com

docs.microsoft.com

  • Custom Visionを使用するにはCognitive ServicesかCustom Visionでリソース作る(おすすめはCognitive Services:エンドポイントが複数になるため混乱するかも)
  • Custom Visionでリソース作ると、トレーニング用と予測用と2つリソースができる
  • Custom Visionポータルでできる(GUI

コーディングするならこちら↓

docs.microsoft.com