すずけんメモ

技術メモです

DeepLensはAWSの新サービスてんこ盛りデバイスだった

今週はラスベガスで開催されているAWS re:Inventに来ています。DeepLensのWorkshopに先程出てきたのでメモがてら貼っておきます。

概要

DeepLens自体は次の記事が詳しいです。

AWS DeepLens – Get Hands-On Experience with Deep Learning With Our New Video Camera | AWS News Blog

私はビデオもデバイスについても特に詳しいわけではないのですが、DeepLensがすごいなーと思ったのは、それ自体が今回発表されたサービスを含め、AWSのサービスを上手くつかって構築されていることです。

  • SageMakerで作ったモデルを取り込む
  • Greengrass Core上でlocal Lambdaを動かし、デバイスデータの送信とinferenceをする。
  • eventのpubsub管理はAWS IoTで
  • Greengrassに乗っているのでデプロイも簡単にできる
  • ビデオデータはKinesis Video Streamでサーバ側へ送信 + バッファ可能
  • inferenceの結果はAWS IoTトピックで扱えるので、任意のLambda functionのtriggerに設定可能

DeepLens自体のスペックは次のとおりです。

AWS DeepLens – Deep learning enabled video camera for developers - AWS

Workshopではこれらを一通り触りながらDeepLensにモデルをデプロイしていきました。次がWorkshopでつかったプロジェクトです。

GitHub - aws-samples/reinvent-2017-deeplens-workshop: A reference Lambda function that predicts image labels for a image using a MXNet built deep learning model

GreengrassにDeepLensをデバイスとして関連付けすると、AWS IoT Device Gateway経由でイベントが流れてきます。例えば物体認識したイベントは次のようなデータが流れてきます。GreengrassではLambda functionをデバイスのlocalで実行できるので、ここでinferを実行するわけです。Greengrass SDKをつかったコードは次にあります。infer結果をpublishしているのがわかります。この例だとMXNetを使っています。

https://s3.amazonaws.com/deeplens-managed-resources/lambdas/hotdog-no-hotdog/new_hot_dog_lambda.zip

ちなみに今日あったアップデートでGreengrassからカメラやGPUにアクセスできるようになっています。

Over-the-air updates, access to local resources, and OPC-UA industrial protocol adapter now available on AWS Greengrass

今日試したところ、DeepLensにはProjectを1つだけデプロイできます。ProjectというのはModelとFunctionの組み合わせでつくられるDeepLensの挙動のだと思うとわかりやすいです。

公式ページにもあるとおり、DeepLensがProgrammableというのはここで実現されています。

AWS DeepLens is easy to customize and is fully programmable using AWS Lambda. The deep learning models in DeepLens even run as part of an AWS Lambda function, providing a familiar programming environment to experiment with.

1つ1つをみるとやっていることはシンプルですが、よく考えられているなあと思ったポイントは以下のとおりです。

  • Greengrass Coreの設定をしなくていい。DeepLensのconsoleからdeviceを紐付けるだけ。
  • ゆえに証明書の配置とかも気にしなくていい。(出荷時点で組み込みのはず)Greengrassの設定するの若干面倒ですし・・
  • ひとまずつなげばAWS IoTのpubsubにつなげるのでユーザはmodelとLambdaをどう書くかだけ考えるのに集中できる

あたりかなと。Greengrassで管理してるのでnetwork connectivityが安定しなければ再送される、あるいは他のGreeengrass Coreと連携して端末間通信する、あたりも便利そうですね。

感想

まとめ

  • re:Invent出られてるかたはDeepLens Workshopおすすめです。明日もあるみたいです。*1
  • まさかre:Inventでデバイスが発表されるとは思ってなかったので楽しい。

*1:Workshop後にDeepLensももらえます