AWS DeepLens についての紹介動画を訳してみた


# はじめに
AWSのMachine Learningに関するサービスの1つであるAWS DeepLensについての概要が「aws training and certification」にて公開されているので、こちらを翻訳しながら紹介していきます。

コンテンツへのアクセス方法は[こちら](https://qiita.com/Yoshiyuki03/items/bfbf416ab47ef5121927)に記載しています。

# AWS DeepLens とは？

![画像01.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/6136aa71-f249-9634-2072-7883718aa8ff.jpeg)

AWS DeepLensとは、AWSクラウドと統合した開発プラットフォーム搭載のワイヤレスビデオカメラです。
Deep Learning などの最新の技術を利用してコンピュータビジョンアプリケーションの開発を行う事ができるデバイスです。

![画像02.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/3972a76f-f120-502a-70e1-3887e60eae4c.jpeg)

DeepLensに搭載されているアクセラレータは、コンピュータ処理を100GFLOPS、つまり1000億/秒の単位で処理を実行することが可能です。

![画像03.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/52805263-9e96-ecab-fc1f-25f12b16dc61.jpeg)

AWS DeepLensのワークフローとして、基本的には以下の4つのAWSサービスと共に利用することとなります。

 1. Amazon SageMaker
    - モデルのトレーニングやインポート
 2. AWS Lambda
    - 推論を行うために関数の実装
    - 推論のキャプチャ、アウトプットの表示
 3. AWS DeepLens
    - Lambda関数を含んだモデルで、コンピュータビジョンアプリケーションを構築
 4. AWS Greengrass
    - AWS DeepLensにアプリとLambda関数をデプロイ

![画像04.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/485325bc-0493-f492-3b7e-2994f35e6eff.jpeg)

こちらの構成図で、先程紹介したAWSサービスの一連の流れを紹介していきます。

1. AWS DeepLensがvideo streamをキャプチャし、Device streamとProject streamという2つのstreamを生成します。
2. 推論Lambda関数は、未処理のvideo framesを受け取るとDeep Learningモデル（Amazon SageMaker）に一旦渡して処理を行います。
3. 最後に、処理が完了したら推論Lambda関数はそれを再び受け取り、Project Streamに戻します。

構成図では紹介できませんでしたが、AWS DeepLensは他のAWSサービスと容易に連携できるサービスです。例えばAWS Greengrass を利用してAWS DeepLensのプロジェクトをセキュアに移すことができます。またインターネットに接続した状態であれば、AWS DeepLensのアウトプットを AWS IoT やAmazon Kinesis Radio Streamsを利用してコンソールに戻すことも可能です。

![画像05.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/da7ddcd6-41b2-8fd4-95d8-5c6cc71835bd.jpeg)

AWS DeepLensでは、全部で7種類のサンプルプロジェクトのテンプレートが用意してあります。これらのプロジェクトはMachine Learningを使用してほんの10分ほどで実行することが可能です。また、これらのプロジェクトは編集やカスタマイズも可能です。

![画像06.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/e24cb00d-6e88-ad58-2e1e-71ee23a1b999.jpeg)

AWS DeepLensでは、オリジナルモデルのトレーニングやデプロイも可能です。また、MXNet・TensorFlow・CaffeなどDeep Learningのフレームワークに幅広く対応しております。

# デモのご紹介

![画像07.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/e381af1a-5c47-2b99-a844-4eea7954f373.jpeg)

AWS DeepLensの物体認識の一連の流れをまとめると、図の様になります。モデルは AWS DeepLensより送られたvideo stramをインプットします。そして認識した対象物をラベル化します。ユーザはコンソール上からモデルがラベル化した対象物をレビューすることができます。

![画像08.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/181bbe28-c212-af57-ed78-e44607b117a5.jpeg)

それではやってみましょう。コンソール画面より「DeepLens」と入力して検索します。

![画像09.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/5bd9e613-014b-97a7-218e-b78af7959815.jpeg)

「Project」という画面に来たら、右の「Create new project」を選択します。

![画像10.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/211038f8-7034-27b5-16c5-3a612814f0bc.jpeg)

Project typeとProject templatesを選択します。今回のデモでは「Use a project template」と「Object Detection」をそれぞれ選択します。選択したら、画面右下の「Next」を選択します。

![画像11.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/04535fff-160b-3b32-4c49-02947cef3041.jpeg)

確認画面が出るので、画面右下の「Create」を選択します。プロジェクトの構築には数分ほど時間がかかります。

![画像12.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/3a5a6bd4-c8f2-fae9-7d04-ca8148c295b2.jpeg)

プロジェクトの構築が完了したら、選択した後に「Deploy to device」をクリックします。

![画像13.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/67d91f18-0cd6-df2a-4d31-8d0bf3de0989.jpeg)

この画面ではデバイスを選択します。選択したら、「Review」をクリックします。

![画像14.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/47a75f94-521f-cfb4-9b84-a508f97b1992.jpeg)

内容を確認したら、「Deploy」をクリックします。これにより、DeepLensにモデルのデプロイが行われます。デプロイが完了するのに約数分かかります。画面上に表示されているバナーが青→緑に変わったら完了です。

![画像15.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/e891c431-4930-342b-c3be-385e44712a4e.jpeg)

Project outputのタブに行き、「copy」をクリックしたら、「AWS IoT console」をクリックし、コンソール画面に移動します。

![画像16.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/90f90666-3016-fdca-e158-bfc488ba47c5.jpeg)

IoTコンソール画面に移動したら、先程コピーしたtopicを貼り付け、「Subscribe to topic」をクリックします。
以上で設定は完了です。あとは、AWS DeepLensに物体を認識させると、ラベル化が行われ、その結果を画面に出力してくれます。

![画像17.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/bf4e27e1-9cb7-0863-1d2a-6627c8516a83.jpeg)

この画面は、実際にAWS DeepLensに植木鉢の植物を見せた時の結果です。この様に、認識した物体に対する結果を画面上に表示します。

![画像18.jpg](https://qiita-image-store.s3.amazonaws.com/0/321349/551b7c93-a15a-7bb9-36f9-952d48c9845f.jpeg)

このデモではペットボトルをAWS DeepLensに見せた時の結果を表示しています。

# まとめ
Introduction to AWS DeepLens ついての紹介は以上です。実機でなかなか試すことの出来ないサービスですのでコンソールの一連の動作をデモとして見れるのは嬉しいですね！ Greengrass などAWSの各コンポーネントとの連携の高さも非常に魅力的なのでIoTプロジェクトにてPoCを行う際の選択肢にAWS DeepLensを検討いただければ幸いです。 次回もお楽しみに！