Azure AI系サービスを簡単にまとめてみた

# はじめに
どうも、エンジニア志望の理系大学生NMSです。
Microsoft Azure の AI 系サービスを（**画像系を重視して**）調査することがあり、それをまとめたので、Qiita記事でもアウトプットしてみました。
お役に立てたら幸いです。

# 1. Azure Applied AI Services
Azure Media Services と Azure Cognitive Services (Face、Translator、Computer Vision、Speech など) が基になっている。

## 1.1. Azure Bot Service
ボットを作成して複数のチャネルにわたって接続します。

## 1.2. Azure Form Recognizer
フォームとドキュメントを分析し、キーと値のペア、テキスト、テーブルとして抽出します。

## 1.3. Azure Cognitive Search
Web、モバイル、エンタープライズ アプリケーションに、独自のコンテンツに対するAI検索機能を組み込むためのインフラストラクチャ、API、およびツールを開発者に提供するクラウド検索サービス（サービスはデータストアとクライアントアプリとの間に位置します。）です。機能は以下のようなものがあります。

- 自由形式テキスト検索の検索エンジン

- テキスト分析及びコンテンツのインデックス作成
    - コンテンツを検索サービスに読み込んで検索可能にする、取り込みのプロセスです。
    - コンテンツに雑多なファイルが含まれている場合は、ファイルに埋め込まれているテキストを抽出できるほか、非テキスト ファイルから、そのコンテンツを分析することによってテキストと構造を推測することもできます。
    - この分析機能を備えたスキルは、Microsoft によってあらかじめ定義されているものと、ユーザーによって作成されるカスタム スキルとがあります。

- クエリのための API
関連性のチューニング、ファセット ナビゲーション、フィルター (地理空間検索)、同意語マッピング、オートコンプリートなど、検索に関連した機能を容易に実装できます。

- 他の Azure サービスとの統合
    - インデクサー
Azure データ ソースからのデータのインジェストと取得を自動化します。

    - スキルセット
Cognitive Services で提供されている AI (画像や自然言語処理など) や、Azure Machine Learning 内で作成したり Azure Functions 内にラップしたりしたカスタム AI を組み込めます。

## 1.4. Azure Metrics Advisor
AI を使用してデータの監視と時系列データにおける異常検出を実行するサービスです。
- 機械学習の知識を得なくてもデータ インジェスト、異常検出、診断を行うことができます。（データに最適なモデルが自動的に選択されます。）
- 一連の API と Web ベースのワークスペースを備えています。
- さまざまなデータ ソースに接続して、[多次元メトリック](https://docs.microsoft.com/ja-jp/azure/applied-ai-services/metrics-advisor/glossary#multi-dimensional-metric) データを取り込み、分析することができます。
- 異常を識別して関連付けます。
- 異常を診断し、根本原因分析に役立てられます。
- 異常を検出するたびに、電子メール フック、Web hook、Teams フックや Azure DevOps フックを使用し、複数のチャネルからリアル タイム通知を送信できます。

## 1.5. Azure Video Indexer (旧 Azure Video Analyzer for Media)
- ビデオから、AI を使用した実用性のある分析情報を引き出すビデオ分析ソリューションを短期間で開発できます。
- ライブ ビデオをキャプチャ、記録、分析し、結果をクラウドに公開する機能を提供します。
- Azure Cognitive Services などの他の Azure クラウド サービスと一緒に使用して、強力なハイブリッドアプリケーションを構築できます。
- 他の IoT センサーからの信号やビジネス データと組み合わせることができます。
- 主な機能
    - 顔認識
画像内の個人の存在の検出。

    - 著名人の識別
世界中の俳優、アスリート、研究者など、100 万人を超える著名人を自動的に識別します。

    - 顔のサムネイル抽出
顔の各グループでキャプチャされた最適な顔を (品質、サイズ、正面位置に基づいて) 自動的に識別し、それをイメージ アセットとして抽出します。

    - ノイズリダクション
電話音声やノイズの多い録音を明瞭にします。

    - 話者の列挙
どの話者がどの言葉をいつ話したかをマッピングして認識します。 16 人の話者を 1 つの音声ファイルで検出することができます。

    - 感情の検出
音声 (話されている内容) と口調 (話し方) に基づいて感情を識別し、喜び、悲しみ、怒り、恐怖などに分類します。

    - 光学式文字認識
ビデオ内のテキストの読み取り。

    - 音声の文字起こし
ビデオ内の会話の音声テキストの作成。

    - トピック
ビデオ内で話されている主要なトピックの識別。

    - センチメント
ビデオ内のセグメントがどれだけ肯定的か否定的かの分析。

    - ラベル
ビデオ内の主要なオブジェクトやテーマを識別するラベル タグ。
（独自のラベルは無理そうですし、どういったラベル タグがあるかはあまり分かりません。）

    - コンテンツ モデレーション
ビデオ内の成人向けまたは暴力的なテーマの検出。

    - シーンのセグメント化
ビデオの構成シーンへの分解。

    - カスタム分析情報の抽出
人、言語、ブランド、アニメキャラクターを追加し、カスタム モデルをトレーニングすることができます。

    - ウィジェット
Video Analyzer for Media ポータルでビデオの再生、分析、編集に使用されるウィジェットを、独自の HTML に埋め込むことができます。 この手法を使用すると、Video Analyzer for Media ポータルでアカウントにフル アクセス権を付与することなく、特定のビデオから得られた分析情報を他の人と共有することができます。

## 1.6. Azure Immersive Reader(言語)
言語学習者、ディスレクシア (失読症) などの学習障碍者の読解力向上のための手法を実装する、包括的に設計されたツールです。

- スタンドアロンの Web アプリケーション
- クライアント ライブラリを使用して呼び出すと、既存の Web アプリケーション上の iframe 内に表示されます。
- 主な機能
    - 読みやすくするためにコンテンツを分離します。
    - 一般的な単語の絵を表示します。
    - 品詞を強調表示します。
    - コンテンツを読み上げます。
    - コンテンツをリアルタイムで翻訳します。
    - 単語を音節に分割します。


# 2. Azure Cognitive Services
ビジョン（視覚）、音声、言語、決定のためのカスタマイズ可能なAPIです。

## 2.1. ビジョン（視覚）
画像・動画処理関連のAIサービス。写真、動画、デジタル インク コンテンツの認識、識別、キャプションの追加、インデックスの作成、モデレートを行います。

### 2.1.1. Computer Vision

- 光学式文字認識 (OCR)
    画像からテキストを抽出します。 たとえば、ビジネス ドキュメント、請求書、レシート、ポスター、名刺、レター、ホワイトボードが対象となります。

- 画像分析
    - 物、顔、成人向けコンテンツ、自動生成されたテキストの説明など、さまざまな視覚的特徴を画像から抽出します。
    
    - 主な機能
        - 視覚的特徴のタグ付け
        数千個の認識可能なオブジェクト、生物、風景、および動作のセットから、画像内の視覚的な特徴を識別してタグ付けします。
※独自にタグを作ることはできず、どういったタグがあるかはあまり分かりません。

        - 物体を検出する
        各タグが適用された境界ボックスの座標を返します。

        - ブランドを検出する
        数千点ものグローバル ロゴのデータベースから、画像または動画に含まれる商業ブランドを識別します。

        - 画像の分類(英語のみサポート)
        階層を備えた[カテゴリの分類](https://docs.microsoft.com/ja-jp/azure/cognitive-services/computer-vision/category-taxonomy)を使用して、画像全体を識別してタグ付けします。

        - 画像の説明
        画像内の識別されるオブジェクトに基づいて、画像全体の説明を生成します。

        - 顔を検出する
        画像内の人物の顔を検出して、検出されたそれぞれの顔に関する情報を提示します。

        - 画像の種類の検出
        画像が線による描画かクリップ アートのようになっているかなど、画像の性質を検出します。

        - ドメイン固有のコンテンツの検出
        有名人やランドマークなど、画像内のドメイン固有のコンテンツを検出して識別します。 

        - 配色の検出
        画像内にある色の使用状況を分析します。

        - サムネイルの生成
        画像のコンテンツを分析して、その画像の適切なサムネイルを生成します。

        - 関心領域を取得する
        画像の内容が分析され、"関心領域"（画像内の主要な被写体が写っている領域） の座標が返されます。

        - 画像内のコンテンツを調整する
画像内の成人向けコンテンツを検出し、さまざまな分類の信頼度スコアを返すことができます。

- 空間分析(パブリック プレビュー) 
ビデオ内の人の存在と移動が検出されます。 これにより、空間に入ってくる人の数を数えたり、ある領域に人が作用するとイベントが生成されたりします。

### 2.1.2. Custom Vision
独自の画像分類器を構築、デプロイ、改良できます。 画像分類器は、視覚特性に基づいて画像にコンテンツ ラベルを適用する AI サービスです。

- Computer Vision サービスとは異なり、Custom Vision ではユーザーが独自ラベルを指定し、それらを検出するためのカスタム モデルをトレーニングできます。

- このサービスは、画像の微妙な違いの検出 (たとえば、品質保証のシナリオにおける小さな割れやへこみの検出) には最適ではありません。

- 実行手順
a. 開発者は、着目する特性を備えた画像グループと、それを欠いた画像グループを提出します。 提出時に自分で画像にラベルを付けます。（ラベルあたり 50 個の画像が、通常は適切な出発点です。）
b. 次に、アルゴリズムをこのデータでトレーニングし、同じ画像に対するテストを行って、アルゴリズム自体の精度を計算します。
c. アルゴリズムをトレーニングした後、テスト、再トレーニングを行い、最終的にアルゴリズムを画像認識アプリ内で使用して、画像を分類できます。 

### 2.1.3. Face
画像に含まれている人の顔の検出、認識、分析、編集（ぼかし等）、顔のグループ化をする AI アルゴリズムを提供します。

## 2.2. 音声
自然言語処理関連のAIサービス。

- Azure Cognitive Service for Language(Text Analytics)
- Language Understanding (LUIS)
- QnA Maker
- Translator

## 2.3. 言語
音声処理関連のAIサービス。音声をテキストに変換し、テキストを自然な音声に変換します。 ある言語を別の言語に翻訳し、話者の認証と認識を可能にします。

### Speech サービス
- Speech to Text
- Text to Speech
- Speech Translation
- Speaker Recognition

## 2.4. 決定
意思決定関連のAIサービス。情報に基づく、効率的な意思決定のためのレコメンデーションを提示するアプリを構築します。

- Anomaly Detector
- Content Moderator
- Personalizer

## 2.5. OpenAI (Service)
要約からコンテンツおよびコード生成まで、さまざまなユース ケースに対するお客様独自のニーズに合わせて言語モデル（自然言語処理などにおいて、文の品詞や統語構造、単語と単語、文書と文書などの関係性について定式化したもの）を微調整します。

# 3. Azure Machine Learning
機械学習モデルを構築、トレーニング、デプロイするためのエンドツーエンドのプラットフォームです。

- 画像データへのラベル付けも行うことができます。
- 他のAzureサービスで構築したモデルを登録して、管理することもできます。
- モデル構築方法

    - ノートブック
Python(JupyterLab, Jupyter, VS Code)やR(RStudio)によってユーザが自由にモデルを構築できます。
※VSCodeは一部機能が対応していない可能性あり

    - 自動ML
指定したデータ・メトリクスに対して様々なモデルを試行して、自動的に最適なモデル学習を行ってくれます。タスクの種類は以下の3つです。分類の場合、ディープラーニングを有効化できます。

        1. 分類（カテゴリ値の予測）
        2. 回帰（連続値の予測）
        3. 時系列の予測

    - デザイナー
GUI（ドラッグアンドドロップ ）によってモジュールを使用し、モデルを構築することができます。

        - 自動MLでは完全に自動でモデルが選択・学習されますが、デザイナー機能を使うと使用するモデルや特徴量生成・選択をある程度自由に行うことができます。
        - 部分的にRやPythonのコードを挿入することもできるので、柔軟性を高めつつ視覚的に処理がわかりやすいモデリングが可能となります。
        - 回帰・分類など多様なタスクに対応したサンプルのパイプラインが豊富に用意されているので、よほど複雑なタスクでない限りはカバーできます。
例）Image Classification using DenseNet


# 4. (Azure) AI インフラストラクチャ
- 最先端の GPU を数千個搭載したハイパークラスターで大規模なインフラストラクチャにアクセスでき、すべてのサーバーの内部で最新の広帯域幅ネットワークと相互接続された AI アクセラレーションが提供されます。
- Azure Arc 対応 Kubernetes を使用して、ハイブリッドおよびマルチクラウドのデプロイを行うことができます。
- 幅広い AI ハードウェアにアクセスできます。


# 5. その他のサービス
## 5.1. Azure Databricks
Microsoft Azure クラウド サービス プラットフォーム用に最適化された Data Analytics プラットフォームです。 

## 5.2. Azure Open Datasets
機械学習モデルのトレーニングと予測ソリューションに役立つ天気、国勢調査、祝日、公共の安全、場所に関するデータが含まれる、選別されたパブリック データセットです。 

## 5.3. Data Science Virtual Machine (DSVM)
データ サイエンスおよび機械学習のツールを備えた仮想マシン イメージです。

## 5.4. Health Bot
仮想医療アシスタントの開発向けに特化されたマネージドサービス。

## 5.5. Kinect DK
Kinect（深度センサー、空間マイク配列とビデオ カメラ、および方位センサーを備えたオールインワンの小型デバイス）と開発者キットを使用して、コンピューターによる視覚と音声のモデルを構築します。

## 5.6. Microsoft Genomics
ゲノム シーケンシングと研究の分析情報を強化します。

## 5.7. Project Bonsai
シミュレーションを使用した、ローコードの AI 開発支援プラットフォームです。 

## 5.8. Azure Percept
Azure AI および Azure IoT サービスとシームレスに統合できるよう構築されたハードウェア アクセラレータを使用して、概念実証を数分で開始できます。

# あとがき
最後までご覧いただきありがとうございました。
少しでも良いと感じていただけましたらLGTMしていただけますと幸いです。
もし間違ってるところがあったら、遠慮なくコメントしてご教示ください。

# 参考・引用資料
- 公式ドキュメント
    - [Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/?product=featured)
    - [Microsoft Learn](https://docs.microsoft.com/ja-jp/learn/)
    - [Azure クラウド サービス | Microsoft Azure](https://azure.microsoft.com/ja-jp/services/)
- その他
    - [Azure AI系サービスの概要を学ぶ(Azure Cognitive Services, Azure Machine Learningなど)](https://qiita.com/nvtomo1029/items/e28ede62964a98e39430)
    - [AzureのAI系サービス - マイクロソフト系技術情報 Wiki](https://techinfoofmicrosofttech.osscons.jp/index.php?Azure%E3%81%AEAI%E7%B3%BB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9)
    - [Azureで提供されるAIサービスについて 全体像と３つの領域から解説](https://www.cloud-for-all.com/blog/ai-service-of-azure.html)
    - [Video Analyzer for Media を使用して動画データからインサイトを見つけよう！](https://www.softbanktech.co.jp/special/blog/cloud_blog/2021/0034/)
    - Azure Machine Learning
        - [画像のデータセット作成を Azure ML 上で！Azure ML のラベル付け機能のご紹介](https://www.softbanktech.co.jp/special/blog/cloud_blog/2021/0017/)
        - [Azure ML デザイナーでの画像分類サンプルで何をやっているのか確認してみる。](https://qiita.com/zukakosan/items/17f3740007edd38b137f)
        - [Azure Machine Learningのいろは](https://qiita.com/gnbrganchan/items/43e6c44754cb83220db5)
        - [Custom Visionで作ったモデルをAzure Machine Learningで管理しよう #Azureリレー ](https://tech-blog.cloud-config.jp/2020-09-02-model-management-in-aml/)
        - [Azure Machine Learning ハンズオン 基礎編](https://www.youtube.com/watch?v=phbcUrWNJy8)
        - [Azure Machine Learning ハンズオン モデル解釈](https://www.youtube.com/watch?v=ljOxHenrOqg)