AWS What is Machine Learningの動画内容まとめ

はじめに

Amazon.comのエンジニアが機械学習について学ぶ際に利用している映像コンテンツが「 AWS ML University 」として無料に公開されました。この記事では、その中の機械学習についての記事をざっくり訳してご紹介していこうと思います。
コンテンツへのアクセス方法はこちらに記載しています。

In This Video

今回紹介する動画の主な内容は、以下の構成となります。

•概要 ~MLについて~
•ユースケース
•キーコンセプト
•マシン・ラーニングとスマートアプリ
•Amazon Machine Learning
•事例

概要MLについて

マシン・ラーニング(ML)について

Machine Learning は人工知能技術(AI)の一部です。既存のデータを利用することでデータに基づいた予測を導き出すことができます。機械学習は予測結果を分析モデルのデータとして加えることで、より正確な予測結果を導きだすことが可能となる技術です。

Machine Learningの学習モデル


MLは大きく分けて5つの学習モデルがあります。

■教師なし学習
■教師あり学習
・分類
・回帰
■強化学習

教師あり学習

教師あり学習は、MLモデルにインプットとアウトプットのデータセットを与え、正しいアウトプットを教えていく学習方法です。教師あり学習には「分類」と「回帰」というグループがあります。

教師なし学習

教師なし学習モデルは、教師ありと違い、答えがついているデータを与えない手法となります。インプットされたデータからモデル自身がパターンやクラスタに必要な情報をくみ取り、構築していくという学習モデルです。教師なし学習には、「クラスタリング(分類)」と「リグレッション(回帰)」という2つの手法があります。

Machine Learning and Smart Application


機械学習技術をアプリケーションに導入することは、顧客の好みや購入品の傾向といった情報を知ることに繋がりビジネスを拡大する上でとても重要な要素となります。

Amazon Machine Learning

Amazonでは、以下の2つのサービスを提供しております。
• Amazon Machine Learning
o モデル構築に専念したい開発者やデータサイエンティスト向けのサービス
• Apache Spark on Amazon EMR
o Amazon EMRより簡単にマネージドされたApache Sparkクラスタを構築

Amazon MLには3つの予測モデルが用意されています。
•二項分類
oYes/Noなど二者択一の予測モデル

•多項分類
o3つ以上のモデルの中から正しいカテゴリを予測するモデル

•回帰
o数値の予測モデル

事例

•課題
o新築物件に対する価格を即座に表示させたい。
o1日毎に数時間規模の分析処理を実行していた。
o柔軟にコンピューティング及びストレージのリソースを変更させたい。

•解決した結果
oAWSのサービスを利用してマシン・ラーニング基盤を開発
o1億件以上もの新築の正確なデータを提供することができる

まとめ

「What Is Machine Learning」の動画を簡単にまとめてみました。
次回はディープ・ラーニングの入門記事を紹介したいと思います。


AWS DataSyncについて調べてみた

こんにちは Dream です。
この記事は株式会社ナレッジコミュニケーションが運営する Amazon AI by ナレコム Advent Calendar 2018 の21日目の記事になります。

はじめに

今回は先日開催されたre:Invent 2018で発表されたサービス、AWS DataSyncをご紹介します。

後述にて詳細を紹介しますが、そもそもAWS DataSyncはデータ転送サービスです。
一見、AmazonAIのアドベントカレンダーとは関係ないように思われるかもしれませんが、実はAIを活用する周辺のサービスとしては重要な役割があります。

そもそも、AIサービスを利用するにあたり、膨大なデータが必要です。また、S3に保存しているデータをAIサービスと連携する、といったケースが一般的だと思いますが、データは現状社内にあり、AIを活用するためにS3にデータを移動したいが、転送速度や、コスト、定期的にデータセットを転送しなくてはならないなどの課題があると思います。

そこで役に立つのがAWS DataSyncというわけです。それではさっそくどんなサービスか見ていきましょう。

引用元:[AWS クラウドサービス活用資料集]AWS re:Invent 2018 アップデート速報【NEW!】

AWS DataSync概要

AWS DataSyncとは、オンプレミスからAWS(Amazon S3 / Amazon EFS)へ、AWS(Amazon S3 / Amazon EFS)からオンプレミスへ、データの移動を簡単におこなえるマネージド型のデータ転送サービスです。

AWS DataSyncはオンプレミスにエージェントを導入することで使用可能です。このエージェントを使用することで、仮想マシンとしてデプロイされ、NFSプロトコルを介して既存のストレージに接続し、AWS DataSyncサービスとの間でデータの送受信を行います。

AWS側のストレージはAmazon S3もしくはAmazon EFSを対象として設定が可能です。また、データ転送に関連する多くのタスク等を設定することで簡単かつ高速なデータ転送による同期が実行されます。

ユースケース

・ データ移行
- データセンターを閉鎖するか、ストレージアレイを廃止する場合など

・ ハイブリッドワークロードのためのデータ処理
- 処理のために AWS の内外に移動する必要があるデータをオンプレミスシステムで生成または使用している場合など

・ データ保護
- 大規模なネットワークアタッチトストレージ (NAS) システムを使用している場合など

利用可能なリージョン

  • us-east-1(バージニア北部)
  • us-east-2(オハイオ)
  • us-west-1(北カリフォルニア)
  • us-west-2(オレゴン)
  • eu-central-1(フランクフルト)
  • eu-west-1(アイルランド)
  • ap-northeast-1(東京)
  • ap-northeast-2(ソウル)
  • ap-southeast-1(シンガポール)
  • ap-southeast-2(シドニー)

※東京リージョンで使用する際でも、コンソールで表示される言語は英語です。

料金

■料金は、DataSync が利用可能なすべての AWS リージョンで同じです。
■Amazon S3 または Amazon EFS との間でコピーされたデータ:0.04 USD/転送されたデータ 1 ギガバイト (GB) が課金されます。
※別途Amazon S3やAmazon EFSの料金が発生します。

引用元:AWS DataSync

使用方法

この記事では、オンプレミスからAmazon S3もしくはAmazon EFSへデータを転送する方法について、ご紹介します。
コンソールからAWS DataSyncを開き、[ Get started ]を選択します。
※AWS DataSyncを開始する前に、利用したいリージョンを選択しておきます。
※エージェントをデプロイするためのハードウェア要件は、[AWS DataSync ハードウェア要件] を参照してください。

【エージェントの作成】
オンプレミスからAWS / AWSからオンプレミスへのデータ転送方法を選択し、エージェントを作成していきます。

まずエージェントをダウンロードし、必要事項を入力していきます。

【データ転送元の指定】

【データ転送先の指定】

【タスクの作成】
ここではファイル管理や帯域幅の指定などのオプションを設定することが可能です。

【AWS DataSyncの実行】
作成したタスクを実行すればすぐにデータ転送が始まります。

さいごに

AWS DataSyncと類似しているサービスがいくつかあるので、用途や価格によってサービスを使い分ける必要がありそうです。
類似サービスについては簡単な比較と各サービスのリンクを下記に記載しておきます。

[AWS Snowball]
- 大規模なデータ転送を物理的に行うサービス

[AWS Snowmobile]
- 上述のAWS Snowballより更に大きなデータ転送を行うサービス

[Kinesis Data Firehose]
- データの移動ではなく、ストリーミングデータを扱うサービス

[S3 Transfer Acceleration]
- Amazon S3のみを対象としたサービス

[EFS File Sync]
- Amazon EFSのみを対象としたサービス

[AWS Storage Gateway]
- AWS DataSyncと違い、タスクでの処理ができない。
- Amazon S3、Amazon Glacier、Amazon EBSを対象としたサービス


【Introduction to Amazon SageMaker Neo】動画を訳してみた

この記事はre:Invent 2018で発表された機械学習サービス Amazon SageMaker の新機能である Amazon SageMaker Neo についての概要が「 AWS ML University 」にて公開されているのでこちらを翻訳しながら紹介していきたいと思います。
コンテンツへのアクセス方法はこちらに記載しています。

はじめに

この動画の概要は以下の3つとなります。

• 機械学習の取組について
• Amazon SageMaker Neo について
• ユースケース

機械学習の取り組みについて

機械学習は近年世界中で注目が集まっている技術ですが、実際に利用をする上で数多くのハードルがあります。
1.テーマに対して一番適したフレームワークがなにかの選択
2.選択したフレームワークを使いモデルを構築
3.サンプルデータでモデルの予測検証を行い、予測精度の向上
4.アプリケーションに作成したモデルを連携させる
5.プラットフォームにフレームワーク、モデル、アプリケーションのデプロイ

これらのハードルから機械学習を実際のビジネス導入を検討しても、ステップの多さにつまずいてしまう開発者が多いのが現状です。

Amazon SageMaker ではそういったハードルで苦労する必要のないサービスです。簡単に機械学習のモデルの構築ができ、モデルの検証に必要な全てのデータと接続することで素早く検証ができるようになっています。Amazon Sage Maker は、アプリケーションにとって最適なフレームワークとアルゴリズムの選択を行います。
それでもモデルの構築というのは簡単にできるものではありません。複数あるプラットフォームの中から最適なパフォーマンスを生み出すモデルを選択するというのは非常に困難です。

実際の現場で起きているモデルのデプロイ問題を例に見てみましょう。開発者がモデル構築をする際、フレームワークを利用する全てのプラットフォームにインストールする必要がありますが、コストや容量などの問題からプラットフォーム側でサポート可能なフレームワークやインストール可能な数が制限されていることがあります。
そのためデベロッパーは適さないフレームワークを利用するといった制限の中でモデル構築したり、フレームワークに合わせてモデルの設定を変更し直したりといった作業が発生します。これが機械学習分野の発展を阻む要因となっています。

その他の問題として開発者は複数のフレームワークを使って複数のプラットフォームを試すといった状況に直面することになります。フレームワークはそれぞれ構成や保存の仕方、取り扱うファイルなどが異なるので、プラットフォームを使用予定の全てのフレームワークやモデルに対応できるようにするのは高度なエンジニアリングが必要となります。

Amazon SageMaker Neo では前述の煩雑な作業をする必要はありません。Amazon SageMaker Neo はフレームワークで構築されたモデルをそれぞれのプラットフォームに適した状態に変換することが可能です。

Amazon SageMaker Neo について

Amazon SageMaker Neoについて紹介していきます。Amazon SageMaker NeoはAmazon SageMakerの新機能です。Neoではすべてのフレームワークでモデルの検証が可能ですべてのプラットフォームでモデルを利用することを目指したサービスです

Amazon SageMaker Neo は構築されたモデルをフレームワークから最適なコードに変換することで、複数のプラットフォームで利用可能な状態にします。変換後は、フレームワークは必要ないので時間の短縮にもなります。Amazon SageMaker Neo はコンソールからアクセスでき、数クリックでモデルを起動させることができます。

Amazon SageMaker Neo では主要な2つのコンポーネントが搭載されています。
• 作成したモデルのコンテナ化
• モデルの共有ライブラリ化

Amazon SageMaker Neo の仕組みについて紹介します。ユーザが Amazon SageMaker にジョブリクエストを投げるとジョブのステータスが「Starting」から「In-Progress」に変わり、モデルのコンパイルが始まります。完了するとステータスが「Complete」になります。
(※途中で止めることも一応でき、その場合はステータスが「Stopping」から「Stopped」へと変わります)
Amazon SageMaker Neo の大きな特徴はモデルをどんなプラットフォームでも適用できるところにあります。

Amazon SageMaker Neo はあらゆるプラットフォームに対応できるモデルを簡単にコンバージョンできます。従来の2倍以上の早さで、正確に変換を行うことが可能です。変換を行う度にモデルやプラットフォームのデータを蓄積していきます。変換後はプラットフォームを使わずに利用することが可能になるので、モデルの実行による負荷を減らすことができます。

ユースケース


Amazon SageMaker Neo は機械学習モデルをエッジでもクラウドでも利用することができます。携帯端末と IoT を例に見ていきます。Amazon SageMaker Neo は携帯や IoT の制約を緩めることで、画像処理やオブジェクト検出などのデプロイを助けてくれます。Amazon SageMaker Neo は S3 上にあるデータや送られてきたデータを使い、クラウド上でモデルを変換することができます。Amazon SageMaker Neo は作成した機械学習モデルをデータベースで好きなフォーマットで実行することも可能です。

Amazon SageMaker Neoについてまとめると、
• 深層学習モデルや決定木モデルなどに対応
• Apache MXNet、TensorFlow、PyTorch、XGBoostなどに対応
• 様々なインスタンスタイプ、エッジデバイスにも対応
• 機械学習パフォーマンス向上と負荷を軽減しあらゆるプラットフォームに対応できる状態に変換

まとめ

いかがでしたでしょうか。Amazon SageMaker Neo では機械学習をビジネスで実装していく上で課題だった、機械学習モデルの最適化及び標準化を解決してくれます。今まで「モデルを作成する」領域と「実装する」領域にあった距離が大幅に短縮されますね!


【Introduction to Amazon Forecast】の動画をまとめてみた

今回は、Amazon Forecastの動画の内容についてまとめてみました。こちらのサービスは2018年12月17日現在、米国東部(バージニア北部)と米国西部(オレゴン)のリージョンでしかサポートされていませんので、利用する際にはご注意ください。
この動画は、以下の構成となっております。

■Amazon Forecastのサービス紹介
■Amazon Forecastの概要
■Amazon Forecastのまとめ

Service Introduction

需要・雇用・景気動向・自動車台数といった将来について予測する際、私達は主に過去の歴史的なデータをもとに予測をします。そして、その際に一番大事なのはデータの「正確さ」です。
データの正確さは利益やコストに直結するものなので、正確であることはとても重要です。しかし、過去の典型的なデータにばかり囚われていると、正確な予測を立てることはできません。

例えば、造船の荷物運搬の予測を立てようとした場合、重要なデータとして「その年の休日数」・「景気や為替動向」・「天候や気候」などが挙げられます。
しかし、過去の年間運搬数量のデータといった典型的な過去のモデルに囚われていると、正確な将来の予測を立てることができないだけでなく、より重要なデータを取り入れることもできません。

過去の典型的なデータのみを使ったモデルでは、正確な予測を出すのは難しいでしょう。なぜなら、以下のようなデータが考慮されないからです。

■一時的、断続的なデータ
■特殊ケースのデータ
■外部要因のデータ
■前例のないデータ

現代において、例外や稀なケース、一時的な要因などは多く見受けられます。そんな中でそれらの要因を取り扱わないモデルで将来を予測するというのは、あまり現実的とは言えません。

Amazon Forecastは、10年間取り組んできたサービスで、主な特徴はDLモデルを使用したフルマネージドなサービスであり、搭載した複数のDLのアルゴリズムによって正確な予測が可能であることです。

Amazon Forecastの主な特徴はこの5点です。

■正確さ
 50%以上も典型的なデータモデルよりも正確な予測が可能です

■自動化
 モデルの構築からアルゴリズムの選定、モデルの検証まで全て自動で行います

■プライバシーとセキュア
 データはとても厳重に管理され、顧客以外が触れることが無いようにしています

■カスタマイズ
 自前のアルゴリズムを用意することも、既存のアルゴリズムをカスタマイズすることも可能です

Overview

Amazon Forecastの仕組みはこのようになっています。

  1. Amazon S3バケットからデータを引っ張り出してきます
  2. アルゴリズムを選択します(選択方法は任意でも自動でも可能です)
  3. 予測の正確さを検証したあと、デプロイします
  4. Amazon Forecastのコンソール画面より、データの予測を確認することが可能です

MLの専門知識やデータパイプラインについて未経験であっても、Amazon Forecastは問題なく利用できます。APIやコンソールを使ってMLを構築し、データパイプラインを設定することができます。検証に必要なデータは自動的に取り入れられ、モデルの検証や予測の管理も行い、より正確なアルゴリズムへと更新していきます。

Amazon Forecastでは、与えられたデータ対して適切なアルゴリズムを自動で選択する機能が搭載されています。また、Amazon ForecastにはAutoMLという機能がついており、データの設定からアルゴリズムの選別、そしてモデルの検証といった一連の流れを全て行ってくれます。
データごとに適切なアルゴリズムを自動で選別して、検証をすることが可能です。

Amazon SageMaker から自作のアルゴリズムをAmazon Forecastにインポートすることができます。
Amazon SageMaker と Amazon Forecast は以下のような特徴があります。

■Amazon SageMaker
・モデル検証のデータは事前に用意する必要がある
・アルゴリズムは事前に決めておく必要がある
・予測モデルの改善は手動で行う必要がある

■Amazon Forecast
・MLの専門知識は必要ない
・アルゴリズムは自動で選択される
・予測モデルの改善は自動で最適な状態にされる

Summary

Amazon Forecastを一番有効に使うのであれば、最低でも1000以上のデータポイントと時系列データを用意する必要がありますが、少ないデータセットでも十分な成果を出すことはできます。ユースケースとしては、在庫の予測、ウェブの閲覧予測、経営の予測、重要と供給の予測などに適しています。

Amazon Forecastの特徴をまとめると、以下の4つとなります。

■アマゾンで10年以上も取り組まれてきたサービス
■自動でモデルの再構築と検証、アルゴリズムの選定などの一連の流れを行う
■予測に必要であれば外部からデータの追加も可能
■コンソールやAPI、CSVフォーマットで予測データを可視化可能

おわりに

Amazon Forecastの動画のまとめは以上となります。予測モデルを簡単に設定し、利用ができる便利なこの機能、ぜひ使ってみてはいかがでしょうか。


【Amazon SageMaker Ground Truth】動画を訳してみた

Amazon.comのエンジニアが機械学習に関する技術を学ぶ際に利用している映像コンテンツが「 AWS ML University 」として無料で公開されています。
今回の記事は、Amazon SageMaker Ground Truth の動画についてざっくりと訳してご紹介していこうと思います。ここで提供されている機能は機械学習においてとても重要なサービスなので、本編の動画もぜひ観てください。

コンテンツへのアクセス方法はこちらに記載しています。

Amazon SageMaker Ground Truthとは

Ground Truth は、Amazon SageMaker 上で機械学習を行う上で必須となるデータセットを素早く正確にラベルリングすることが可能になる新機能です。データセットのラベル化の一部を自動的に行い、AWSが提供するアルゴリズムを駆使することでより正確なデータに変換して提供します。

学習データを用意するための課題

一般的に、検証データセットの作成には多大な労力とミスが伴います。なぜなら、検証データの作成には沢山の人員が必要になるため、結果的にコストとミスの増加に繋がります。それでいて検証データは複雑な代物であるため、完成させるのにも数ヶ月はかかります。

Ground Truth による解決

しかし、Ground Truthはそういった問題を解決することができる機能を備えています。

■S3にあるデータを活用して、より高精度なデータのラベル化を簡単に行うことが可能
■数クリックでデータのラベル化を完成させることが可能
■類似したラベルのタスクにはテンプレートが用意されるので、作成がより簡単に
■3つあるworkforceの中から1つを選択することで、作業スピードが短縮可能

こうしてデータのラベル化の作業が一通り完了すると、S3にデータを再び移します。そうすることで前回よりも高精度なデータを保存することが可能となり、次回は更に制度高いデータに換えて保存ができるのです。

3つのworkforceオプションについて説明すると、手動でラベル化を行う場合は図の3つのworkforceの中からどれか1つを選ぶことができるようになっており、彼らの力を借りて手動でラベル化が可能となっています。

・Amazon Mechanical Turkに登録されているworkforce
・AWS Marketplaceに登録されているサードパーティベンダー
・独自で保有している労働力(社員)

Ground Truthがより高精度なデータラベル化が可能なのは、UX技術の進化とビルトインアルゴリズムという2つの技術のおかげです。
このUX技術は全てのテンプレートに搭載されており、どのようなデータのラベル化にも対応しております。そして、ビルトインアルゴリズムのおかげでより高精度なラベル化が可能となっております。

Ground Truthがより高精度なデータラベル化を可能としているのは、この自動ラベル化という機能のおかげです。この機能を搭載しているからこそ、高精度なデータのラベル化が可能となっています。

自動ラベル化の仕組みについて、もう少し詳しく見てみましょう。この機能の特徴はGround Truthが実際に検証データセットを調べ、データの理解度によって自動でラベル化するのか、それとも手動でラベル化を行うのかを選別できるとこです。このようにデータを選別することで、より効率的に高精度なデータのラベル化が可能となります。

以上のことから、Ground Truthを利用することで3つのメリットが得られます。

■データのラベル化にかかるコストを70%以上も削減
■データセットの管理をセキュアにすることが可能
■検証データセットをより高精度なものにすることが可能

まとめ

以上が Amazon SageMaker Ground Truth の動画内容のまとめとなります。SageMakerを使って機械学習を行う際に必要な機能なので、ぜひこの機会に活用してみてください。また、この動画以外にも様々な動画がAWS ML Universityには無料で公開されています。
今後も機械学習関連の動画を翻訳していきますので、どうぞよろしくお願いします。


Amazon SageMaker Image Classification (マルチラベル)を試してみる

[Amazon AI by ナレコム Advent Calendar 2018]の25日目の記事です。
マルチラベルの画像分類である[Image-classification-multilabel-lst.ipynb]を試してみました。

前処理

1.IAMロールとS3バケットの設定

2.イメージの取得

3.データの準備
今回使用するデータセットは、MS-COCOデータセットです。
80個のカテゴリから、5個(人、自転車、車、バイク、飛行機)だけ学習させます。

4.MSCOCO dataset用のツールをインストール

5.MSCOCO datasetからアノテーションを取得し、lstファイルを作成

6.学習とテストデータを作成

7.S3へデータをアップロード

学習

1.SageMaker Estimatorの作成

2.ハイパーパラメータの設定

3.データタイプとチャンネルの設定

4.学習させる

推論

1.学習モデルをデプロイ

2.テストデータをダウンロード
今回使用するテストデータです。

3.評価
人、自転車、車、バイク、飛行機のそれぞれの確率が出ています。

4.エンドポイントの削除

まとめ

MS-COCOデータセットを用いて、マルチラベルの画像分類を行いました。
これにより、1枚の画像の中から複数のラベルについて判別することができます。


Amazon SageMaker にある物体認識のアルゴリズムの記事を訳してみた!

ハリーです。

この記事は株式会社ナレッジコミュニケーションが運営する Amazon AI by ナレコム Advent Calendar 2018 の24日目になります。

今回は2018年7月13日にAWS Machine Learning Blogに掲載されました「Object Detection algorithm now available in Amazon SageMaker」の記事を簡単に和訳したものを紹介したいと思います。

原文は以下の記事になります。
Object Detection algorithm now available in Amazon SageMaker

はじめに

Amazon SageMakerは完全マネージドで高スケーラブルな機械学習(ML)プラットフォームで、簡単に構築やデプロイすることができます。これにより機械学習のさらなる活用と開発者の方のハードルを下げるという2つの点で重要です。Amazon SageMakerイメージ分類アルゴリズムはSageMakerより提供されるアルゴリズムの中でも有名なものです。
Amazon SageMaker object detection (OD) algorithmは、既存のコンピュータビジョンの強化につながります。Object detection (OD)は対象物をイメージでローカライズし、識別するプロセスのことです。このアルゴリズムは画像に対して認識範囲の表示に加えて、何のオブジェクトを認識範囲の中で格納したかを識別する上でイメージ分類を行います。Amazon Rekognitionサービスをオブジェクト判別に活用することもできます。Amazon SageMaker object detection algorithmと利用することで自分のデータセットやクラス分類で実証するだけでなく、イメージ内のオブジェクトをローカライズすることもできます。

Single-Shot Multi-Box Detector (SSD)は、この処理を達成する早くて正確なアルゴリズムの1つです。推論の1回のパスの間に画像の中の複数のオブジェクトを検出します。SageMakerが利用可能なリージョンにいる全ての方にこの機能は提供されております。このアルゴリズムは以下の構成でP2/P3インスタンスを使用することで利用可能です。

•Single machine, single GPU
•Single machine, multi-GPUs
•Multi-machine, multi-GPUs

このアルゴリズムはAmazon Sagemakerにサポートされている全てのCPU・GPUにホストされています。そして、このアルゴリズムは様々なオブジェクトの様々なサイズに対応し、そして自然にスケールします。
このSSDアルゴリズムは畳み込みfeature mapを使用している。様々なスケールのfeature mapを使用することで、SSDは潜在的なオブジェクト候補のボックスを複数生成します。次に、重複しているボックスを除くためにnon-maximal suppressionが実行されます。最もスコアが高いものがオブジェクト予測として表示されます。このアルゴリズムは様々な畳み込みニューラルネットワークと互換性があるため、多くの有名なニューラルネットワークのアルゴリズムを使用することができます。VGG16とResNet50のImageNet分類処理にてトレーニングされたモデルを用意しており、オブジェクト検出データセットに転送することができます。

まとめ

Object Detection algorithm now available in Amazon SageMakerの概要の紹介は以上となります。
こちらのサービスを試してみたものについては、また別の機会に紹介させて頂きたいと思うので、お楽しみに!。


Amazon SageMaker Image Classification を試してみる

[Amazon AI by ナレコム Advent Calendar 2018]の23日目の記事です。
Image Classification(画像分類)のサンプルである[Image-classification-lst-format-highlevel.ipynb]を試してみました。

ノートブックインスタンスの作成

Amazon SageMaker->ノートブックインスタンス->ノートブックインスタンスの作成、ノートブックインスタンス名を入力し、新規作成します。
ステータスがInServiceになったら、Jupyterを開きます。
あとは、上から順に実行していきます。

前処理

1.IAMロールとS3バケットの設定

2.イメージの取得

3.データの準備

4.lstの例を表示

5.データをS3にアップロード

6.RecordIO fileに変換する

学習

1.SageMaker Estimatorの作成

2.パイパーパラメータの設定

3.データタイプとチャンネルの設定

4.学習

推論

1.モデルをデプロイ

2.テスト画像のダウンロード

3.推論を実行

75%の確率でbathtubと判別されました。

4.エンドポイントの削除

まとめ

Caltech256データセットを用いて、Image Classificationを行いました。
他のデータセットでもやってみたいと思います。


Amazon Sumerian Tutorial 50:Sumerian Scene Optimization

こんにちは、ナレコム前川です。

今回は、Amazon Sumerian の公式チュートリアルの
Sumerian Scene Optimization を進めていきたいと思います。

ここで学ぶことは、

・最適化のヒントとテクニック
・パフォーマンス改善のヒントとテクニック

の2つです。

それでは、進めていきましょう。

1. Script

ここでは、パフォーマンス向上のための Script の書き方などについて説明していきます。

JavaScriptオブジェクトを割り当てるために new 演算子を使用すると
動的な割り当てが行われ、高価になる可能性があります。
そのため、可能であれば、Script 設定でオブジェクトを事前に割り当てて
update 関数で再利用したほうが良いです。

新しいオブジェクトをあまりに多く作成すると過剰なガベージコレクションが発生し、
周期的なフリーズが発生する可能性があります。

Textures

テクスチャでは、画像サイズの制限を行いましょう。
できるだけ小さなテクスチャサイズを使用し、すべてのプラットフォームで
最大 2048 × 2048 ピクセルを使用することをおすすめします。

また、テクスチャサイズは常に 2 の累乗のものを使用してください。
テクスチャサイズが 2 の累乗でない場合、シーンを読み込む際にリサイズするため、
シーンの起動が遅くなります。

次に、テクスチャの異方性を大きくすると、ビジュアルは向上しますが、パフォーマンスは低下します。

複数のテクスチャを1つの画像にまとめることもパフォーマンスを向上させる方法の一つです。
これは、メモリの使用量を節約できるため、パフォーマンスが向上します。
ミップマッピングを有効にすると、テクスチャを遠くから見ることができますが、メモリ使用量は2倍になります。

最後の方法として、テクスチャを圧縮するという方法があります。
アルファチャンネルが必要ない場合には、jpg ファイル形式を使用し、
必要な場合には、png ファイル形式を使用するのが良いです。
さらにパフォーマンスを向上させたい方は、Sumerian でサポートされているcrnファイル形式
使用することが勧められています。

3. Lights

ライトについては、

・最低限の数に抑えること
Shadow Casting を有効にするとコストがかかること

この2点に注意してください。

4. Models と Meshes

ここでは、モデルとメッシュについて説明していきます。

メッシュインスタンスでは、ドローコールが行われます。
これらのドローコールでは、WebGL に動作割り当てを行うため、CPU に負荷がかかります。
そのため、ドローコールの回数を制限する必要があります。(特にモバイルデバイスを用いる場合)

ローエンドなモバイルデバイスのドローコール回数の目安は、100 ~ 200 回です。
ハイエンドなデスクトップマシンでは、1フレームごとに何千もの処理が可能で、60 fps を維持できます。

もし、シーン内の移動しないオブジェクトがわかっている場合には、
Transform component 内の Static のチェックボックスを選択します。

そうすることで、エンジンがいくつかの静的なメッシュを1つに結合し、ドローコールの回数を減らすことができます。

※メッシュを結合するためには、同じマテリアルを使用する必要があります。
しかし、アニメーションやピッキング、タイムラインアニメーションなどでは、
メッシュ結合を行う際にエンジンが動作しないそうです。

5. Materials

ここでは、マテリアルについて説明していきます。

マテリアルでは、マテリアルの数を最小限に抑えてください。
また、シェーダの数も最小限に抑えるようにします。
これは、シェーダをコンパイルしてリンクする際にアプリケーションの起動が遅くなり、
フレームレートが低下するためです。
シェーダを減らす最適な方法は、なるべくマテリアルを再利用することです。

最後に、Backface Culling を有効にする方法もあります。
これは、GPU が満たすべきピクセル数を減らします。

6. Post Effects

ポストエフェクトは、多くの費用がかかる可能性があるため、有効にする前に慎重に考える必要があります。
費用がかかる原因は、ピクセルの塗りつぶしによるものです。

7. Physics

ここでは、物理的な設定についての説明を行っていきます。

特に、モバイルデバイスでは、 Rigid Bodies の数を最小限に抑えます。
また、物理的なオブジェクトを構築する場合には、いくつかのシンプルな Primitives を使用することが勧められています。
Primitives は、Create Entity にある 3D Entity などのことです。

8. Resolution, Embedding, and Other Tricks

ここでは、解像度や埋め込み、その他の操作についての説明を行っていきます。

デスクトップのWebサイトにシーンを埋め込む場合は、
フルスクリーンレンダリングがフルスクリーンではないレンダリングよりもコストがかかることを覚えておいてください。

キャンバスを再レンダリングする必要がないことがわかっている場合は、
次のようにスクリプトでレンダリングをオン/オフにすることができます。

[crayon-5e879a6cc4bf5617846214/]

また、Scene Stats からシーン内でどのような処理がどのくらい行われているのか確認できます。

Toggle Stats on Canvas をクリックするとキャンバス上に以下のように表示されます。

今回のチュートリアルは以上です。
お疲れ様でした。


Amazon Sumerian Tutorial 49:SumerianRunner Events

こんにちは、ナレコム前川です。

今回は、Amazon Sumerian の公式チュートリアルの
SumerianRunner Events を進めていきたいと思います。

ここで学ぶことは

・Event Listeners
・sumerianRunner Event Listeners
・Events
・Intersection marker

の4つです。

また、今回のイベントリスナーは通常の DOM イベントリスナーよりも重いようなので
必要最低限のアクションを起こすことがおすすめされています。

それでは、進めていきましょう。

1. シーンの作成

① ダッシュボードからDefault Lightingを選択。
② シーン名を「SumerianRunner Events」に設定し、作成。

③ Create Entity から Box を追加。
※ Entity は、Box に限らず好きなものを追加してください。
今回、私は Box を追加しました。

追加できたらシーンの設定は終わりです。

2. Entity に Event Listeners を追加する

ここからは、主に Script を編集する作業を行っていきたいと思います。

① Create Entity から Empty を追加。
② 追加した Entity に Script Component を追加し、Custom を選択。

③ エディタを開き、以下のコードと置き換える。

[crayon-5e879a6cc539c600892037/]

シーンを公開し、Iframe のやり方と同様に動作確認を行っていきます。
シーン上でマウスをクリックするとコンソールにメッセージと座標などの情報が表示されます。

3. ちょっとした GUI の追加

ここからは、イベントの情報を表示する HTML Entity を作成していきます。

① Create Entity から HTML</> を追加。

Move with Transform のチェックを外す。

③ HTML エディタを開いて、以下のコードに置き換える。

[crayon-5e879a6cc53aa778784312/]

置き換えると、シーンの左上に intersection-info 内で定義して文字が表示されると思います。

④ Entity を選択し、Script に以下の関数を追加。

[crayon-5e879a6cc53b4962186876/]

⑤ 以下のコードを Script の setup 関数内の runnerListeners と置き換える。

[crayon-5e879a6cc53be957881771/]

シーンを実行して、値がどのように変化するか確認してください。
以下のようになると思います。

https://youtu.be/v7EwzjpjZ2U

4. Intersection Marker

ここからは、Sphere を使ってシンプルな Intersection Marker を追加していきたいと思います。

① Create Entity から Sphere を追加。

② Entity を選択し、Script エディタを開く。
setup 関数に以下のコードを追加。

[crayon-5e879a6cc53c8787445002/]

 
④ 以下の関数を追加。

[crayon-5e879a6cc53d1809600980/]

⑤ 最後に setup 関数の runnerListeners を以下に変更。

[crayon-5e879a6cc53da513801036/]

Script を保存して、シーンを実行してみてください。
以下のように動作するはずです。

https://youtu.be/DR173QU7BYY

5. 完成版Script

うまく動作しなかった場合には、以下のコードと置き換えるか見比べてみてください。
以下のコードは、完成したコードになっています。

[crayon-5e879a6cc53e4255186591/]

今回のチュートリアルは以上です。
お疲れ様でした。