HoloLens2 × Azure Cognitive Services(画像分析APIで画像説明文生成)

はじめに

HoloLensアドベントカレンダー2020の4日目の記事です。
前回に引き続き、Cognitive Services系をまとめていきまーす。
今日は、Azure Computer Vision APIの画像分析APIを用いて画像から視覚的特徴を抽出します。
例えば、下のサンプル画像を見て、「人通りの多い道」と説明してくれます。
Figure_4.png

これで韓ドラ「スタートアップ」に出てきたアプリ「ヌンギル」が作れそうですね。

開発環境

  • Azure
    • Computer Vision API(画像分析 API)
  • HoloLens2
  • Unity 2019.4.1f1
  • MRTK 2.5.1
  • OpenCV for Unity
  • Windows PC

導入

前回の顔検出をほぼほぼ使って、異なるところだけ説明していきます。

1.AzureポータルからComputer Vision APIを作成し、エンドポイントとサブスクリプションキーをメモしておいてください。
image.png

image.png

2.Unityのプロジェクトはこんな感じ。前回の「TapToCapture」を無効にして「TapToCaptureAnalyzeAPI」を作成しました。

image.png

3.「TapToCaptureAnalyzeAPI.cs」は、エアタップしたら画像をキャプチャし、Analyze APIに投げるスクリプトになります。
[crayon-61469708cf7dc035429299/]
4.endpointとsubscription_keyにメモしておいたものを貼り付けてください。

5.クエリパラメータはCategories,Description,Colorを指定しています。

[crayon-61469708cf7e6843256689/]

6.MRTKのRestを用いて、分析する画像をPOSTしたら、response.ResponseBodyが次のように返ってきます。

[crayon-61469708cf7e9326164283/]

7.今回はリストのJsonにはなっていないので、JsonHelperを使わずにJsonUtilityで読むことができます。

8.仕様に合わせてAnalyzeクラスとCategoriesクラス、Colorクラス、Descriptionクラス、Captionsクラス、Metadataクラスを作成しました。

9.生成された画像説明文をOpenCVを用いて、画像に張り付けてquadのテクスチャに表示します。

実行

HoloLens2にデプロイして、実行した結果がこちらになります。Editor上でもできるので試してみてください。

"a laptop on a desk"
20201205_184245_HoloLens.jpg

"a person using a laptop"
20201205_185710_HoloLens.jpg

この文章を読み上げさせたら、ヌンギルの完成ですね!
お疲れ様でした。
明日(というか遅れたので今日)は、弟子(@Horomoto-Asahi)による「Holo関連のなにか書きます」です。

参考


HoloLens2 × Azure Cognitive Services(Face APIで顔検出)

はじめに

HoloLensアドベントカレンダー1日目の記事です!
APIよくわからないと弟子から相談があったので、Cognitive Services系をまとめていきたいと思いまーす。
今日は、Cognitive ServicesのFace APIをHoloLens2でやってみました。
実機なしでもできるのでやってみてください。

開発環境

導入

1.AzureポータルからFace APIを作成し、エンドポイントとサブスクリプションキーをメモしておいてください。
image.png
image.png

2.Unityでプロジェクトを作成、MRTK2.5.1をインポートします。なんかウィンドウでたらApplyします。

3.メニューのMixed Reality Toolkit->Add to Scene and Configureしてください。
image.png

4.Build Settingsから、Universal Windows PlatformにSwitch Platformして、以下のように設定してください。あとAdd Open ScenesでScenes/SampleSceneにチェックが入っていることを確認します。

image.png

5.MixedRealityToolkitのDefaultHoloLens2ConfigureProfileをcloneし、Diagnostics->Enable Diagnostics Systemのチェックを外します。これでCPU使用率とかのデバッグ情報を非表示にできます。

image.png

6.Project SettingsのXR Settings、Publishing Settings->Capabilitiesを以下のように設定してください。
image.png

image.png

7.空のGameObjectを作成し、名前を「TapToCapture」にします。
image.png

8.Add Componentから「TapToCapture.cs」スクリプトを作成します。エアタップしたら、画像をキャプチャし、Face APIに投げるスクリプトになります。

TapToCapture.cs
[crayon-61469708d02fc796291586/]

9.PhotoCaptureのサンプルはこちらです。エアタップしたら、画像キャプチャするようにInputActionHandlerをAdd Componentし、AirTap関数を作成します。エアタップ(On Input Action Started)したらAirTap関数が発火するように設定します。

10.撮影できたら、targetTextureに画像データが入っているので、JPGにエンコードして、Face APIに投げます。FaceAPIのサンプルはこちらC#Pythonです。

11.endpointとsubscription_keyにメモしておいたものを貼り付けてください。

12.クエリパラメータは、detection_01モデルを使用、FaceId、年齢と性別を返すように設定しています。

[crayon-61469708d0306789880591/]

ちなみにfaceAttributesはsmile, headPose, gender, age, facialHair, glasses, emotion, blur, exposure, noise, makeup, accessories, occlusion, hairといった情報が取れます。

13.MRTKのRestを用いてHTTPリクエストします。
ヘッダーは、"Ocp-Apim-Subscription-Key": subscription_keyを指定、"Content-Type": "application/octet-stream"はRestの中でやってくれるのでコメントアウトします。

14.クエリと画像データ、ヘッダーをPOSTします。
response = await Rest.PostAsync(query, bodyData, headers, -1, true);

15.response.ResponseBodyが下記のように返ってくればOKです。

[crayon-61469708d0309749934899/]

16.Face APIのResponseBodyがリストのjsonになっているので、パースできるようにJsonHelper.csスクリプトを作成します。
[crayon-61469708d030b562457844/]
JsonHelperについて
yuiyoichi/JsonHelper.cs
How to load an array with JsonUtility?
UnityのJsonUtilityでJSON配列を処理する

17.返ってきたResponseBodyを次のようにすることで、パースすることが可能になります。

[crayon-61469708d030e809625409/]

18.あとは仕様に合わせてFaceクラスとFaceRectangleクラス、FaceAttributeクラスを作成しました。

19.顔検出結果をOpenCVを使って画像に描画し、Quadのマテリアルに割り当てます。3D Object->Quadを作成しましょう。
image.png

OpenCV for Unity サンプルはこちら
Texture2DからMatに変換
矩形を描画(Imgproc.rectangle)
テキストを描画(Imgproc.putText)

20.OrbitalをAdd Componentし、Quadがカメラに追従するようにしています。
image.png

21.TapToCaptureにQuadをD&Dしてアタッチしたら完成です。

実行

HoloLens2にデプロイして、実行した結果がこちらになります。Editor上でもできるので試してみてください。

お疲れ様でした。
明日は弟子(@Horomoto-Asahi)による「HoloLens 2のSpatialAwarenessの調査」です。


DatabricksでMLflowを使う④ - モデルの呼び出し -

はじめに

以下の記事で、Databricks のマネージド型MLflowを使ってモデルのトレーニング、ライフサイクル管理を行いました。

DatabricksでMLflowを使う① - ノートブック上での実験トラッキング -
DatabricksでMLflowを使う② - 実験パラメータとメトリクスの可視化 -
DatabricksでMLflowを使う③ - モデルのライフサイクル管理 -

今回はトレーニングとステージングを行ったモデルを別のノートブックから読み込みたいと思います。
イメージとしてはトレーニングしたモデルを Pyspark ユーザー定義関数として読み込み、 pyspark のデータフレームに対して分散処理をかけるという流れになります。

セットアップ

呼び出したいモデルに対して"Run ID"を読み込みます。

[crayon-61469708d0c5c362509578/]

scikit-learn モデルをロードする

実験済みのトレーニングモデルを MLflow API を利用してロードします。

[crayon-61469708d0c62914972921/]

次にトレーニングにも利用した糖尿病データセットを読み込んで"progression"のカラムを落とします。
そして、読み込んだ pandas データフレームを pyspark データフレームに変換しておきます。

[crayon-61469708d0c64988358493/]

MLflow モデルの呼び出し

MLflow API を使って Pyspark ユーザー定義関数としてトレーニング済みのモデルを呼び出します。

[crayon-61469708d0c67368704828/]

ユーザー定義関数を使って予測を行います。

[crayon-61469708d0c69739790341/]

Pyspark モデルを使って分散処理することができました。

2020-11-05_10h45_19.png

おわりに

今回はトレーニング済みのモデルを MLflow API を使って呼び出し、Pyspark で分散処理させることができました。
Databricks では日々新しい機能がアップデートされており、どんどん使いやすくなっています。
これからも新しい機能がでたら追いかけていきたいと思います。


11/12(木)ビジネスパーソンにAI活用を。ナレコムAI使い方セミナー

セミナー内容

withコロナでDXの推進が急務になっている中、データをうまく使った新しい価値提供や、生産性向上のための取り組みを多くの企業が課題としております。
その中でも成功している企業では、「できることから小さくはじめる」、「トライ&エラー、PoCを繰り返し実施」、「体制、プロジェクト人選」等の工夫を行っております。

今回のセミナーでは上記の背景があるなか、専門スキルを必要とせずに数クリックで機械学習のモデルを自動的に構築/予測分析でき、クイックにビジネスに活用できるプラットフォーム「ナレコムAI」についてご紹介致します。

ナレコムAIが必要となる背景やユースケースについての解説のみならず、実際の画面を見ながらのデモンストレーションも実施させていただきます。

※ナレコムAIのWEBサイト: https://narekomu-ai.com/

対象となるお客様

  • 機械学習を自業務の活用を検討している方
  • データをお持ちで業務の効率化を模索している方
  • AIツールの導入を検討、調査されている方

本セミナーのゴール

  • ナレコムAIがどういったものかを知ることができます
  • ナレコムAIを使って、いますぐデータ分析を開始する

ナレコムAIとは?

AI(人工知能)・機械学習といった高度な技術を簡単に利用することが出来るクラウド型サービスです。
高いスキルを持った専門家なしには利用することが難しかった技術を、専門家不要で利用でき、データ分析の敷居を下げるためデータサイエンティストが担う 「機械学習のモデル構築・テスト・活用」をカバーするソリューションとなっております。
2020-11-05_11h25_29.png

アジェンダ

  • DX推進における課題と工夫している企業が取り組んでいること
  • ナレコムAIの概要紹介
  • ユースケース
  • デモ
  • QA

タイムテーブル(予定)

時間 内容
12時55分 受付開始
13時~ 開会のご挨拶
~13時15分 セミナー
~13時40分 デモ
~13時55分 QA
14時 閉会の挨拶

日時:2020年 11月12日(木) 13時~14時
場所:オンライン(Microsoft Teams)
参加費:無料

参加方法

当日のウェビナーはteamsを使用して開催します。 こちらよりお申し込みいただいた後に、登録完了メールがお手元に届きます。 そちらのメールに当日の参加用 URLが掲載されておりますので、ご確認をお願いします。

下記「プライバシーポリシー」をご確認・ご了承いただいた上で、お申し込みの際はお名前等のご記入をお願いします。 ご協力いただけない場合は当日参加をお断りさせていただく場合がございますので、予めご了承ください。
プライバシーポリシー / 個人情報の取り扱いについて

株式会社ナレッジコミュニケーションについてのご紹介

ナレッジコミュニケーションではAmazon Web Services、Microsoft Azure等のクラウドサービスを企業に導入する事業を行っております。
お客様の課題に対してクラウドを使って課題解決のご支援をさせていただいております。

実績掲載

1.ブックリスタ様 事例

https://aws.amazon.com/jp/solutions/case-studies/booklista-knowledgecommunication/

2.全国保証様 事例

https://prtimes.jp/main/html/rd/p/000000014.000004474.html


AzureでOCRができる?Azure Computer Visonでテキスト抽出をやってみた!

はじめに

この記事では Azure の機械学習サービス【Azure Computer Vision】 を使って画像からテキストを抽出を試していきます。

Azure Computer Vison ではテキスト抽出の自動化・リアルタイムのビデオ分析などが行えます。機械学習に関する専門知識は不要です。
詳細なサービス内容については以下をご参照ください
Computer Vision APIを解説 【シリーズ Azureサービスいちから紹介】

本記事の概要

  • 前提として Azure のアカウント登録はしている状態から始めます。
  • 手書きの文字を取った画像を Azure Computer Vison でテキスト抽出するまでを解説します。言語は Python を使用しています。
  • Azure Computer Vison を試してみたい・導入を検討している方に向けて執筆しています。

開発環境

Windows 10
Anaconda
Python 3.6
OpenCV 4.4.0
Azure Computer Vision API
Computer Vision クライアント ライブラリ(必要なら)

導入

1.Azure ポータルにログインします
2.Computer Vision API のリソースを作成します

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_63863_db52fef2-972e-fe1b-d430-d2914d5cdc75.png

3.キーとエンドポイントをメモします

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_63863_f5c0b265-c718-98d6-893a-e11adabf078d.png

4.必要なライブラリをインストールしてください。

[crayon-61469708d152b980080873/]

5.メモしたキーとエンドポイントを入力し、次のコードを実行してみましょう!

[crayon-61469708d1531596518742/]

エンドポイントはリージョン(場所)指定でも動くようです。

[crayon-61469708d1533852948735/]

画像 URL からテキスト抽出する

クイック スタート: Computer Vision の REST API と Python を使用して印刷されたテキストと手書きテキストを抽出する

[crayon-61469708d1535532093671/]
input output
https___raw.githubusercontent.com_MicrosoftDocs_azure-docs_master_articles_cognitive-services_Computer-vision_Images_readsample.jpg https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_63863_e3e84db0-bca3-d504-4974-bfa1da58cd75.png

ローカル画像からテキスト抽出する

[crayon-61469708d153a771765779/]
input  output
https___raw.githubusercontent.com_MicrosoftDocs_azure-docs_master_articles_cognitive-services_Computer-vision_Images_readsample (1).jpg https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_63863_ff1597be-1b59-b5ab-28c9-dd64fbb08d33.png

Computer Vision クライアント ライブラリを使用する

クイック スタート: Computer Vision クライアント ライブラリを使用する

[crayon-61469708d153f414601661/]
[crayon-61469708d1542006858990/]

お疲れ様でした。

最後に

Azure Computer Vison で テキスト抽出を行うところまでを解説していきました。
手書きの文字が認識できると手書き帳簿の読み取りを Azure Computer Vison を使って可能になるかもしれないですね。
今回は英語での検証でしたが、パブリックプレビュー版で日本語対応機能が追加されているのでそちらも検証していきたいと思います。


【画像認識AI】Azure Custom Vision Serviceから天気を判別するモデルを作成してみた。

はじめに

機械学習を始めたいけどどんなことができるのかあまりイメージが分からないことがあると思います。
この記事では、Microsoft 社の画像認識サービス 【Azure Custom Vision Service】を使って写真から天気を判別していきます。

本記事の概要

  • Azure Custom Vision Serviceを使って天気の判別モデルを作成していきます。
  • 画像分類モデルを作成→トレーニング→テストといった流れで紹介していきます。
  • 操作はGUI上で完結します。これから AI ・ 機械学習を始めてみたい方でも実際に体験しやすい内容になっています。

こんな方に読んでもらいたい

この記事は以下の方を想定して書いています。

  • 画像認識サービスを試してみたい方
  • AI初学者の方
  • 機械学習について興味がある方

Azure Custom Visionとは

Azure Custom Visionは、独自の画像識別子を構築、デプロイ、改良できるようにする画像認識サービスです。 画像識別子は、視覚特性に従って画像に (クラスまたはオブジェクトを表す) ラベルを適用します。 Computer Vision サービスとは異なり、Custom Vision ではユーザーがラベルを指定し、それらを検出するためのカスタム モデルをトレーニングできます。

作業の流れ

画像の準備

今回は「曇り」「雨」「晴れ」「日の出」の写真を、それぞれ60枚トレーニング用に使用します。
画像はこちらから天気認識用のデータセットをお借りしました。

プロジェクト作成

①Azureにログイン→Custom Visionに移動。
②新しいプロジェクトを作成
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_bef2116b-7ab8-dd7f-5d3b-f9de059fcaf5.png

③プロジェクト名入力→ドメインなどを選択→「Create project」を押す。

  • Classification:画像認識
  • Object Detection:物体検出
  • Multilabel (Multiple tags per image):1つの画像につき複数タグ付け
  • Multiclass (Single tag per image):1つの画像につきタグは1つ
  • Domainsで画像の種類を選択。今回はFood(食料)でもLandmarks(ランドマーク)でもRetail(小売)でもないのでドメインはGeneral(全般)を選択

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_f56bc5e1-c357-d193-5684-da5a4b57ef26.png

学習に使用する画像をアップロード

①「Add image」から画像をアップロード。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_1e1db7fa-f412-5a1a-0209-ee03ee178417.png

②タグをつけて「Upload ×× files」をクリック。

bef56a8c-1665-dd0b-98c5-3ee7d01b0f08.png

③数秒待つとアップロードされる
他の画像も同様にアップロードし、タグ付けをしていく。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_fe7cdbf4-b11d-0d42-d23b-e702b8aed095.png

トレーニング

①画像のアップロードとタグ付けが終わったら右上の「Train」をクリック。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_a5a57b6d-ee82-3747-8e63-4dc1ebd29b2b.png

②Tranining Typeを選択し「Train」でトレーニング開始。
(Advanced Trainingを選択すると1時間以上のトレーニングにかけることができる。)
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_5bfff8a8-b55d-798c-2e13-c66cb216eedd.png

③数分待つ。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_42ad389c-7aea-fb1d-0918-d3a1e67457a8.png

④結果が表示される。
Precision(適合率)は例えば「雨」と判断したもので、実際に「雨」であった確率
Recall(再現率)は例えば「雨」のもののうち、「雨」と判断した確率
APは精度の平均

今回の結果はPrecisionとRecallが97.9%、APは99.9%となりました。
100枚中97枚正しい天気の認識ができるということですね。
下部の表でタグごとの精度も見ることができます。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_824b07f1-0014-05f1-e871-db7db3d222d2.png

テスト

①「Quick Test」をクリック。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_9d1be757-b925-194b-7a56-820b3bd9e2e5.png

②テストに使用する写真をアップロード。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_43ed347b-259f-ec55-9737-231319139db3.png

③予測結果を見る。
こちら日の出の写真ですが、ちゃんとsunriseが100%と予測されました。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_70ac80c8-8017-4eca-729e-a825a6bb597a.png

曇りの写真も「cloudy」が99.9%で出ています。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_05dec6c7-dafd-2fb1-b506-a46936395e70.png

晴れも。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_b45a92dd-40da-2834-ccf8-d2ad4ff57597.png

雨も。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_0396a87c-a173-4b97-2f26-9ea400500df3.png

また、テストで使用した画像をそのまま再学習に使用することもできます。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_7f3f4668-61f3-8bbe-9677-810c53e3d880.png

タグを追加して保存するだけ。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_4acc195e-6cf7-415d-0647-bb9ebb316037.png

モデル作成後はExportして利用したり、API連携してアプリケーションと組み合わせることも可能です。

おわりに

画像分類モデルの作成→トレーニング→テストまでの作業が数分で完了しました。
抱えている問題がAIで解決できるのかどうかわからないといった疑問にも、画像認識の分野でどの程度解決ができそうなのかを検証していけそうですね。
また、Azure Cognitive Servicesでは、画像系に限らず言語や音声などの解析ができるAPIも用意されています。触ってみて記事にしていきたいです。

参考リンク

Custom Vision とは - Azure Cognitive Services

https://docs.microsoft.com


Databricks事例紹介 ~メディア編~

はじめに

今回はDatabricksのメディア業界での事例をご紹介させていただきます。
【掲載事例】
1.Showtime
公式事例URL : https://databricks.com/customers/showtime
2.Comcast
公式事例URL : https://databricks.com/customers/comcast
3.CondéNast
公式事例URL : https://databricks.com/customers/conde_nast

Showtime

image.png

ユースケース

今日の消費者はコンテンツプロバイダーに期待していることが多く、期待に応えられない場合はすぐに対応する必要があります。
エンゲージメントとロイヤリティを確保するために、Showtimeはデータを活用してコンテンツ戦略を推進したいと考えていましたが、レガシーシステムのスケーリングの制限と非効率的なデータパイプラインに苦労していました。
Databricksの統合データ分析プラットフォームを使用したことにより、解約を減らしながらエンゲージメントを向上させることを目的としました。
その結果カスタマージャーニーの実用的なビジョンを得ることができました。

課題
  • レガシーシステムによる新機能の市場投入までの時間の遅延
  • インフラストラクチャが複雑なので、柔軟性を可能にしながら、継続的なメンテナンスを必要としないインフラストラクチャが不可欠
  • 機械学習モデルを開発、トレーニング、デプロイするプロセスは非常に手作業でエラーが発生しやすく、新しいモデルの市場投入までの時間が長い
成果
  • データエンジニアリングチームを大幅に簡素化し、データサイエンスチームの生産性を向上
  • 豊富なデータプール内の洞察を利用して、視聴者のエンゲージメントを促進し、解約を減らす機会の発見
  • チームおよび複数のプログラミング言語間でコラボレーションを簡単かつシームレスにして、データサイエンスの生産性を向上
  • MLflowによって、MLライフサイクル全体を合理化
  • DatabricksはShowtimeが組織全体でデータと機械学習を民主化するのに役立ち、よりデータ主導の文化を生み出した
  • 24時間以上かかっていたデータパイプラインが4時間未満で実行されるようになり(6倍の高速化)、チームがより迅速に意思決定を行えるように
  • 自動クラスター管理を備えたクラウド内のフルマネージドプラットフォームにより、データサイエンスチームはハードウェア構成、クラスター のプロビジョニング、デバッグなどではなく、機械学習に注力
  • データサイエンスのコラボレーションと生産性の向上により、新しいモデルと機能の市場投入までの時間が短縮されました。チームはより速く実験でき、加入者にとってより良い、よりパーソナライズされたエクスペリエンスに

Comcast

image.png

ユースケース

Comcastは数百万の顧客にパーソナライズされた体験を提供するグローバルなテクノロジーおよびメディア企業です。
Comcastは大量のデータ、壊れやすいデータパイプライン、不十分なデータサイエンスコラボレーションに苦労していました。
Delta LakeやMLflowなどのDatabricksを使用して、ペタバイト規模のデータ用の高性能データパイプラインを構築し、数百のモデルのライフサイクルを簡単に管理できるようになりました。
その結果、音声認識と機械学習を使用した、非常に革新的でユニークな視聴者体験を提供します。

課題
  • 数十億の個別のやり取りを実用的な洞察に変えな​​がら、特定のプログラムに対する顧客の声の要求に即座に答える必要があり、ITインフラストラクチャとデータ分析およびデータサイエンスチームに大きな負担があった。
  • 作成したモデルを、クラウド、オンプレミス、場合によっては直接デバイスに直接接続するなど、ばらばらで異なる環境に展開する必要があった。
  • エンターテインメントシステムによって生成された数十億のイベントと2000万以上の音声リモコンにより、分析する必要があるペタバイトのデータが発生している。
  • さまざまなスクリプト言語で作業する世界的に分散したデータサイエンティストは、コードの共有と再利用に苦労していた。
  • 数百のMLモデルの開発、トレーニング、デプロイは非常に手動で行われ、時間がかかり、複製が困難であったため、スケーリングが困難
  • 開発チームは最新のツールとモデルを使用することを望み、運用チームは実証済みのインフラストラクチャに展開することを望んでいた。
成果
  • Databricks統合データ分析プラットフォームにより、Comcastは豊富なデータセットを構築し、大規模な機械学習を最適化し、チーム全体でワークフローを合理化し、コラボレーションを促進し、インフラストラクチャの複雑さを軽減し、優れた顧客体験の提供を実現
  • 自動クラスター管理と、自動スケーリングやスポットインスタンスなどのコスト管理機能により、運用コストを削減
  • Delta Lakeは、取り込み、データエンリッチメント、ビデオおよび音声アプリケーションとデバイスからの生テレメトリの初期処理に使用
  • Delta Lakeにより、ファイルを最適化し、大規模で迅速かつ信頼性の高い取り込みを実現
  • インタラクティブなノートブックにより、チーム間のコラボレーションとデータサイエンスの創造性が向上し、モデルのプロトタイピングを大幅に高速化して反復も高速化
  • マネージドMLflowは、Kubeflow環境を介して機械学習ライフサイクルとモデルの提供を簡素化し、数百のモデルを簡単に追跡および管理可能に
  • Delta Lakeは、効率的な分析パイプラインを大規模に提供し、履歴データとストリーミングデータを確実に結合して、より深い洞察を得ることが可能

CondéNast

image.png

ユースケース

Vogue, the New Yorker, Wiredなどの象徴的な雑誌の出版社であるCondéNastは、データを使用して、印刷物、オンライン、ビデオ、ソーシャルメディアで10億人以上の人々にリーチしています。

膨大な量のデータを活用するため、インフラストラクチャの管理とデータサイエンスの生産性の向上に苦労していました。
Databricksを使用すると、クラスターの自動化により不要なDevOps作業が排除され、Delta Lakeにより、月に1兆データポイントまで拡張できるデータパイプラインを構築できるようになり、MLライフサイクル全体を管理するMLflowとのコラボレーション環境でデータサイエンスのイノベーションが実現しました。
これにより、ブランド全体でパーソナライズされたコンテンツを配信し、顧客を引き付けて維持することができます。

課題
  • Sparkクラスターの構築と管理には、多くの設定と継続的なメンテナンスが必要で、より価値の高い活動からチームを遠ざけた
  • チームがデータパイプラインを構築し、コラボレーションを促進するために分析を進めるための共通のプラットフォームを見つける必要があった
  • データが多すぎてデータセットが既存のデータレイクソリューションを上回っていた
成果
  • 運用を簡素化し、優れたパフォーマンスを提供し、データサイエンスの革新を可能にするフルマネージドクラウドプラットフォームを提供
  • データサイエンティストは、データと洞察を共同作業、共有、追跡し、共同作業の環境を促進可能に
  • データセットの量が増えると(月に1兆データポイントを超える)、Delta Lakeはこれに対応し、データの書き換えやデータのマージなど、より多くのユースケースに対応可能
  • MLflowを使用することにより実験の追跡から生産モデルの監視まで、機械学習ライフサイクル全体を簡単に管理可能に

おわりに

Databricks のメディアに関する事例の紹介は以上となります。
今回ご紹介した事例以外にも多くの参考になる事例が公開されておりますのでぜひ下記のリンク先をご参照ください。

参考リンク

https://databricks.com/jp/customers

 

 

 


Databricks事例紹介 ~コンシューマー編~

はじめに
本記事では、Databricksのコンシューマいわゆる消費者にまつわる事例をご紹介します。

1,Electrolux社
公式事例URL:https://databricks.com/customers/electrolux

2,Grab社
公式事例URL:https://databricks.com/customers/grab

■Grab社

image.png

■ユースケース
豊富な顧客セグメントとより深いプロファイルを構築
より効率的かつ効果的に、顧客により良いサービスを提供

■課題
・様々なデータチームがそれぞれの目的を基に業務を行なっていたため
一貫性をもって顧客を理解できていなかった
・部門間での各データにある属性間の関係を見落としていた
・それぞれのチームでそれぞれのシステムを構築していたため複数のデータパイプラインができ、それぞれを維持および更新管理をする必要があった
・エンジニアの工数が増大し、コストも大幅に増加した
・データの民主化を行ない各チームでその可能性を統合して深い洞察を得る必要があった

上記課題から必要としていたニーズ
・データ量に関係なく拡張や部門間などでのコラボレーションを可能にする統合データ分析プラットフォームが必要だった。
・顧客にパーソナライズされた体験を提供するために顧客セグメントの集中化された一貫したビューを提供するソリューションが必要だった。

■成果
・Databricksを搭載したGrabの社内セルフサービス顧客データソリューション(Customer 360)は、様々な角度から集約された顧客属性の真の単一ソースを実現した。
この民主化された顧客データにどこからでも安全にアクセスして、顧客の習慣やニーズについてよりよく学習し、強化されたアプリ内エクスペリエンスを作成できるようになった。
・Databricksを活用したCustomer 360により、Grabは顧客データを活用し、地理空間的またはトランザクションの観点を超えて、さまざまな製品セグメントおよび機能にわたってお客様の一貫した理解を構築できるようになった
・Delta Lakeを通じて、Grabは、データの整合性とセキュリティをさらに強化する方法で、Webサイトやアプリケーションからユーザーが生成した数千の信号とデータソースを取り込み、最適化。
・数週間かかっていた面倒な作業が今では数時間に短縮
・データをシームレスに統合するDatabricksの機能により、豊富な顧客セグメントとより深いプロファイルを実現
・完全にセルフサービスの内部ポータルを通じて、さまざまなチームが簡単にコラボレーションして、顧客データ、洞察、属性、およびライフタイムバリューを調査可能になった
・より効率的かつ効果的に、より適切な推奨を行ったり、顧客の好みに合わせた新機能を設計したりして、アプリ内エクスペリエンスを改善し、顧客により良いサービスを提供できるようになった。

■Electrolux社

image.png

■ユースケース
売上予測を改善し、サプライチェーンを合理化し、製品をタイムリーに提供することで収益を予測し、顧客満足度を向上

■課題
・400以上の倉庫と流通センターより年間6000万以上位の製品を製造、出荷しているため、非常に複雑なサプライチェーン(仕入れから出荷までの一連の流れのこと)となっている
・このサプライチェーンにより、競争圧力や揮発性物質のコストの発生
・サプライチェーンの複雑さと管理するモデルの数が多かったため、データ資産を管理するだけでなく、さまざまなモデルすべてをバージョン管理するためのより良い方法が必要
・分析方法は、従来Excelに複数のデータソースから履歴情報(価格、オンライン評価、レビューなど)を入力。このプロセスで非常に大きなリソースを消費するだけでなく、マーケティングキャンペーンの影響を明確に示さない不正確な予測をもたらした

■成果
・Databricksを使用すると、Electroluxは大量の消費者データと製品データを簡単に取り込み、機械学習を大規模に活用して、マーケティングROIと売上予測の改善を通じてバリューチェーンを最適化する方法をより深く理解できた
・Delta Lakeを使用すると、Electoluxのデータチームは数百万のデータポイントを簡単に取り込み、データ品質の問題を心配することなく、大規模な堅牢な本番データパイプラインを構築できた。
・MLflowは、Electroluxの完全な機械学習ライフサイクルを合理化します。「Databricksを使用すると、さまざまなバージョンの実験とシミュレーションを追跡し、組織全体でモデルをパッケージ化して共有及び展開が可能。その結果、予測モデルをはるかに速いペースで反復して、より正確な予測を行うことができる。
・データチームにとって、技術者ではないチームメンバーが活用できる方法で実用的な洞察を提供することも重要である。全体として、同じプラットフォームでのデータサイエンス、エンジニアリング、およびアナリストチームの統合により、チーム間のコラボレーションが促進され、ビジネス全体の販売と運用を改善する新しいデータ主導の機会が生まれた。
・エレクトロラックスの販売予測エンジンの中核にDatabrikcsを導入したことにより、絶え間なく改善されてスマートになっている何千ものモデルにデータを供給するため、グローバルサプライチェーンの複雑さは今や貴重な資産であり、競争上の差別化要因と見なされている。
同社は現在、消費者と市場が将来どのように振る舞うかをより正確に予測することが可能。これらの新たな洞察により、サプライチェーンのすべての重要な側面が改善。特に、販売およびマーケティングキャンペーンが販売予測に与える影響大。
・Databricksを使用すると、セールスプロモーションがより的確に行われるだけでなく、適切な製品を適切なコンシューマーに適切なタイミングで提供可能となる


Azureデータ分析入門 #6 【CSVデータ → Power BI サービス】

はじめに

BI ツールはストレージやデータベース、DWH への接続が一般的ですが、まずは手元の CSV データで試してみたい、という方向けの記事です。

本連載のツール比較では、eコマースストアの売上データを用いて、

  • 単価と配送料の合計に占める配送料の割合が低い
  • 単価が高い
  • 売上ボリュームが大きい

の条件を満たす製品カテゴリを選ぶための集計と可視化を行いました。

同じ課題設定のもと、ローカルPC上に保存されている CSV データ をPower BI サービス にインポートし、以下のダッシュボードを作成するまでの流れをご紹介します。
image.png

ダッシュボードはこちら で公開してます。

連載目次

Azureデータ分析入門 #1 【はじめに】
Azureデータ分析入門 #2 【ツール比較 Excel編】
Azureデータ分析入門 #3 【ツール比較 Azure Notebook編】
Azureデータ分析入門 #4 【ツール比較 Databricks編】
Azureデータ分析入門 #5 【Databricks → Power BI Desktop】
Azureデータ分析入門 #6 【CSVデータ → Power BI サービス】 → 今回の記事
Azureデータ分析入門 #7 【AutoML でタイタニック号の生存者予測】

作業環境

今回はブラウザ上で作業が完結可能な Power BI サービス でダッシュボードを作成します。Power BI の概要、および Power BI Desktop と Power BI サービスの違いについては 前回の記事をご参照ください。

データのダウンロード/インポート

ツール比較で使用した3つのデータを結合加工したCSVデータを使用します。11万行程度のデータですので、散布図の描画はかなり重い処理になるはずですが、そのあたりはうまいことやってくれるオプションがありますので、今回はそのままデータを使用します。

こちらから zip ファイルをダウンロード、解凍しておきます。

Power BI サービス にサインアップします。
image.png

データの取得タブで、ファイルの取得をクリック
2019-12-09_18h35_50.png

ローカルファイルを選択し、ダウンロードしたファイルの中から、table for Power BI.csvを選択、インポートします。
image.png

データセットの...をクリック
image.png

完了するとこちらの画面に遷移します。
image.png

各要素の作成

このダッシュボードは、以下5つの要素で構成されています。それぞれの作成手順を紹介します。
image.png

カード

指定した列の合計や平均を出すことができます。目立たせたい数値を乗じさせるのにぴったりです。単価の合計、運賃の合計の2カテゴリそれぞれ作成。
card.gif

スライサー

指定列で条件の絞り込みができます。カテゴリごとの売上高ランキング、参照データ全体のカテゴリ別送料比率、販売月の3カテゴリで作成。
slicer.gif

テーブル

統計値の一覧表などを出しておくのに有用です。
table.gif

ツリー図

カテゴリごとの売り上げ比率を可視化します。価格合計も表示しておきます。
tree.gif

散布図

X軸に運賃、Y軸に単価に設定し、ここの売り上げデータが、カテゴリごとに色分けして表示される散布図を作成します。
scatter.gif

今回作成した要素の中では、散布図が一番いじるポイントが多かったので補足解説します。
ペイントロールアイコンから、書式の変更やグラフの描画範囲を設定が可能です。
2019-09-30_11h35_43.png

ローデータのサンプル数が約11万で、一画面中の表示数としては多すぎます。このような場合は高密度サンプリングオプションをオンにすることで、描画時間の長さによる UX の低下を防ぐことができます。今回は表示されるサンプル数を 3500 個としています。
2019-09-30_11h35_21.png

要素が集中している箇所が表示されるように、X軸の表示範囲を以下のように設定してみました。
2019-09-30_11h36_27.png

Y軸も同様。
2019-09-30_11h37_00.png

データの傾向が見やすくなるように、図形のサイズを変更します。
2019-09-30_11h37_30.png

回帰直線を簡単に引くことができます。
2019-09-30_11h38_26.png

動かしてみる

要素の位置やデータラベルを調整してできた完成形がこちら。ほとんどマウスだけの処理でこのようなダッシュボードができます。すごい…
image.png

以下の条件でスライサを絞り込みます

  • 売上高がトップ10以内
  • 送料の占める割合が12%以下
  • 9月~12月の売上

dashboard.gif

カテゴリごとの特徴もマウスオーバーの操作で簡単に確認できます。
dashboard2.gif

まとめ

時系列データの可視化には Power BI Desktop が必要になってきますが、事前に集計ラベルが付与されているデータであれば、基本的にはエクセルのピボットグラフに似た操作感でグラフ化できます (レイアウトにこだわると時間が簡単に溶けてくので注意しましょう)

次回はデータ分析入門の最終回として、Azure AutoML を使って、タイタニック号の生存者予測をしてみます。お楽しみに!

参考サイト

Power BI Desktop とは何ですか?


Databricks でワインの品質を予測するモデルを構築 2

はじめに

前回の記事の続編、Azure Databricks で機械学習モデルを構築する例を試していきます。

データの前処理

モデルをトレーニングする前に、欠損値をチェックし、データをトレーニングセットと検証セットに分割します。

[crayon-61469708d1ec0981745247/]

2020-09-01_16h59_32.png

欠損値はありません。

[crayon-61469708d1ec6441818852/]

ML flow を使う準備

Workspace → ユーザー名 → プルダウンで Createと進み、MLflow Experiment をクリックします。
image.png
任意で名前をつけます。
image.png
この画面に遷移します。Experiment ID は Notebook の中で使うのでメモしておきます。
image.png

mlflow をインストールするために、以下のコマンドを実行します。

[crayon-61469708d1eca229787300/]

ベースラインモデルの構築

出力はバイナリであり、複数の変数間に相互作用がある可能性があるため、このタスクはランダムフォレスト分類器に適しているようです。

次のコードは、scikit-learnを使用して単純な分類子を作成します。
MLflowを使用してモデルの精度を追跡し、後で使用するためにモデルを保存します。

[crayon-61469708d1ecc526667098/]

モデルによって出力された、学習された機能の重要性を調べます。

[crayon-61469708d1ecf658447674/]

image.png

前に示した箱ひげ図に示されているように、品質を予測するにはアルコールと密度の両方が重要です。

ROC曲線下の面積(AUC)をMLflowに記録しました。
右上の「実験」をクリックして、実験実行サイドバーを表示します。

モデルは0.89のAUCを達成しました。

ランダム分類子のAUCは0.5であり、AUC値が高いほど優れています。

MLflowモデルレジストリへのモデルの登録

このモデルをモデルレジストリに登録すると、Databricks内のどこからでも簡単にモデルを参照できます。

次のセクションでは、これをプログラムで行う方法を示しますが、「モデルレジストリにモデルを登録する」 の手順に従って、UIを使用してモデルを登録することもできます。

[crayon-61469708d1ed2088820074/]
[crayon-61469708d1ed4280638211/]

[モデル]ページにワイン品質のモデルが表示されます。
「モデル」ページを表示するには、左側のサイドバーの「モデル」アイコンをクリックします。

次に、このモデルを本番環境に移行し、モデルレジストリからこのノートブックにロードします。

[crayon-61469708d1ed6268884380/]

「モデル」ページに、ステージ「生産」のモデルバージョンが表示されます。

パス「models:/ wine-quality / production」を使用してモデルを参照できるようになりました。

[crayon-61469708d1ed8822736268/]

新しいモデルを試す

ランダムフォレストモデルは、ハイパーパラメーター調整なしでもうまく機能しました。

次のコードは、xgboost ライブラリを使用して、より正確なモデルをトレーニングします。
Hyperopt と SparkTrials を使用して、並列ハイパーパラメータースイープを実行し、複数のモデルを並列にトレーニングします。
以前と同様に、コードはMLflowを使用して各パラメーター構成のパフォーマンスを追跡します。

[crayon-61469708d1eda690279719/]

次回は結果を表示していきます。3へ続きます。

公式リンク

Databricks