AWS DeepLens の雰囲気を理解する

AWS DeepLens が何なのか公式ドキュメントを中心にまとめた内容。
全て、2018年9月20日現在の内容。

# AWS DeepLens とは
* 2017年11月 AWS re:Inventで発表され、2018年6月に一般販売が開始された。
* 深層学習(Deep Learning)に対応した**開発者向けビデオカメラ**。
* 公式ドキュメント https://aws.amazon.com/jp/deeplens/

<img width="221" alt="deeplens.png" src="https://qiita-image-store.s3.amazonaws.com/0/152105/ce440d1a-7fbe-2adf-d731-462d647ca6fd.png" height="25%" >

* カメラとコンピュータとが一体型になっており、カメラで撮影した映像をリアルタイムでデバイスのローカル環境だけで推論(Machine Learning Inference)することができる。
* AWSとセキュアなネットワークでシームレスに連携せることができるので、推論結果をリアルタイムでクラウドに送信したり、動作ログを監視することができる。
* 学習モデルは、トレーニング済みのビルトインモデルと、ユーザ独自のモデルと両方使うことができる。

## 何がうれしいのか
* 推論(Machine Learning Inference)のローカル実行は低レイテンシー、低コスト
* 対象の映像がコンプライアンスの問題でクラウドにアップロードできない場合でも推論が可能
* ネットワークに接続できない場所でも推論が可能
* AWSとセキュアでシームレスに連携できる

# デバイス仕様
* Intel Atom® プロセッサ
* Gen9 グラフィック
* Ubuntu OS 16.04 LTS
* 106 GFLOPS の処理性能
* デュアルバンド Wi-Fi
* 8 GB RAM
* 16 GB メモリ
* microSD カードによる拡張可能なストレージ
* MJPEG の 4MP カメラ
* 1080p の解像度での H.264 エンコード
* 2 つの USB ポート
* Micro HDMI
* 音声出力


# アーキテクチャ
* 学習モデルやデバイスで動作するプログラム(Lambda function)はAWS(クラウド)の AWS DeepLensサービスを使ってデバイスにデプロイする。
<img width="589" alt="deeplens-device-0.png" src="https://qiita-image-store.s3.amazonaws.com/0/152105/f0e342a6-c487-9c6d-a061-455280cfa210.png">
[^1]Introducing AWS DeepLens


* デプロイされたLambda funcrionで、カメラで撮影した映像をデバイス内のモデルを使ってリアルタイムに推論、結果を出力することができる。また、撮影した映像データも出力することができる。
<img width="588" alt="deeplens-device-1.png" src="https://qiita-image-store.s3.amazonaws.com/0/152105/df79b19d-f9e5-e7d6-3a52-ccb8b6da9ade.png">
[^1]Introducing AWS DeepLens

* GPUの利用
    * 推論はGPUを使って実行可能

* インストール済み推論エンジン
    * Apache MXNet
    * TensorFlow と Caffe に対応予定

* パフォーマンス

    * 推測パフォーマンスのベースラインは、バッチサイズ 1 において AlexNet で 1 秒あたり画像 14 枚、ResNet 50 で 1 秒あたり画像 5 枚

* AWS(クラウド)との連携方法
    * デバイス内には AWS Greengrass Core がインストールされており、Greengrass経由でデバイスとクラウドを連携する。
    * DeepLensセットアップ時にインストールした証明書を使って、AWS(クラウド)とインターネット経由でセキュアな通信を行なう。
    * 撮影したビデオデータは AWS Kinesis Video Streams で取り込むことができる。
    * 推論結果は MQTTプロトコルでAWS IoTに送信(Publish)することができ、そこから各種マネージドサービスにデータを送ることができる。
    * AWS SageMakerでトレーニングしたモデルを、DeepLensにデプロイできる。
    * DeepLensの動作ログをAWS(クラウド)で監視できる(CloudWatchLogs)。
    * デバイスにデプロイしたLambda function経由でデバイスのローカルリソースにアクセスできる。
    * AWS SDK for Python を使って Amazon Polly や Rekognition などを利用することができる。

<img width="581" alt="deeplens-architecture.png" src="https://qiita-image-store.s3.amazonaws.com/0/152105/21c21d47-267e-982f-c6f3-934687e3bddf.png">
[^1]Introducing AWS DeepLens

* その他
    * SSHでデバイス（Ubuntu)にログインし、デバイスを操作することができる。
    * SSHログイン可否は設定可能


## 要するに
HDビデオカメラ　＋ GPU搭載Linuxマシーン + AWS Greengrass & AWS Greengrass ML Inference

# できないこと
* DeepLens内で(推論はできるが) **学習はできない**
    * 学習はクラウド側で行う想定になっている。
* DeepLensにデプロイするLambda functionで使える言語は Python 2.7のみ。


# 想定されるサービス
* エッジデバイスでの高速な推論
    * 映像をリアルタイムに推論して不審者を素早く検知する
    * イベントの観衆の表情を推論してリアルタイムに演出する

* プライバシーや機密映像の保護
    * 家族かどうか、特定の人かどうかを判定して通知する
    * 工場内の機密映像を解析してエラーを検知する
         
*  Amazon Rekognition や Amazon Polly との連携
    *  映像から画像に変換して Rekognitionの機能を使って解析する。
    *  推論結果をPollyで音声として伝える。（手話の音声翻訳や絵本の読み上げ）
    
* AWSマネージドサービスとのシームレスな連携
    * リアルタイムで条件に一致した映像があった場合にメールなどで通知する(AWS SNSとの連携)
    * 映像をクラウドに蓄積して新たに学習させる（AWS Kinesis Video Stream,　S3, DynamoDBとの連携)

* 通信できない場所での推論とデータ蓄積
    * インターネットが使えない場所や屋外での利用
        * 通信できないときは結果をデバイスに保存しておき、通信可能になった時にクラウドに送信

# サンプルプロジェクト
いくつかのお試しプロジェクトが既に用意されているので数十分程度で動かすことができる。
用意されているサンプルプロジェクト
1. オブジェクト検出
2. ホットドッグかホットドッグでないか
3. 猫と犬
4. 芸術的なスタイルの転送
5. アクティビティ検出
6. 顔検出

# コミュニティープロジェクト
[https://aws.amazon.com/jp/deeplens/community-projects/](https://aws.amazon.com/jp/deeplens/community-projects/)
AWS DeepLens 仮想ハッカソンに参加した開発者コミュニティの応募作品
GitHubでプロジェクトが公開されているので、これを見るだけでもとても勉強になる

## チャレンジプロジェクト
[https://aws.amazon.com/jp/deeplens/challenge/](https://aws.amazon.com/jp/deeplens/challenge/)
社会貢献を目的としたDeepLensのプロジェクト
2018年に 8 つのテーマのチャレンジが予定されている
登録してテーマにそったプロジェクトに参加できる

**チャレンジ #1: インクルージョン**
インクルージョンを促進し、バリアを克服し、能力にかかわらずすべての大人と子どもの間のきずなを強化する DeepLens プロジェクトの作成
チャレンジ期間 7/10/2018 から 8/19/2018 深夜 (PST)

# DeepLens入手方法
* [Amazon.com](https://www.amazon.com/dp/B075Y3CK37) で $249.00 で購入できるが、現在、日本への発送はできない。
* 入手しても、[技適](https://ja.wikipedia.org/wiki/%E6%8A%80%E9%81%A9) に対応していないので日本での使用は原則不可。
* 日本でも使えるようになって欲しいなぁ。。

【追記】
- 2019-07-10 から日本でも購入可能になりました。 https://www.amazon.co.jp/dp/B07KYM74RJ

[^1]: Youtube 「[Introducing AWS DeepLens - AWS Online Tech Talks](https://www.youtube.com/watch?v=9fHAXqcUjy8)」からの引用