• トップ
  • ブログ一覧
  • 【前編】DeepLens で顔認識をしてみた~準備編~
  • 【前編】DeepLens で顔認識をしてみた~準備編~

    メディアチームメディアチーム
    2020.05.11

    IT技術

    前編~DeepLens で顔認識をしよう!~

    「DeepLens」は、AWS(アマゾンウェブサービス)が発売している、カメラ型のデバイスです。

    エッジ機器での深層学習を、安価に試すことができます。

    昨年度からバージョン 1.1 となり、デバイス管理などがより使いやすくなりました。

    DeepLens には GreenGrass という AWS のフレームワークがインストールされており、Python 2.7 のランタイムが含まれています。

    DeepLens の特徴

    AWS の管理コンソール(Web)を操作するだけで、以下のことが出来ます。

    GreenGrass を通して、SageMaker などにより学習させたモデルと、モデルを起動する Lambdaで動作する Python プログラムを、DeepLens 側に転送して起動できる。

    DeepLens では、GreenGrass をほとんど意識することなく簡単に使用できるのが特徴です。

    今回の記事では、DeepLens の設定方法と動作確認についてお届けします

    【DeepLens】
    https://aws.amazon.com/jp/deeplens/

    DeepLens をセットアップする

    DeepLens を購入したら、まずセットアップする必要があります。

    これを「登録」作業と呼びます。

    登録作業を行わないと、プロジェクト画面に進めないようになっています。

    登録するためには Windows パソコン上で、AWS 管理コンソールを動かしながら、USB で DeepLens に接続する必要があります

    (※Mac でも良いらしいですが、うまくいかない場合があるようです)

    DeepLens 登録画面

    AWS 管理コンソールから、DeepLens を選択します。

    「デバイスの登録」をクリックします。

    バージョンを確認する画面が表示されますので、購入したバージョンに合わせて選択します。

    今回の手順は、最新の 1.1 で検証した手順です。

    バージョンを選択すると、USB を通した DeepLens との通信が始まります。

    確立されると次の画面に進むことができます。

    次の画面では、シリアル番号を入力します。

    DeepLens デバイス画面

    無事、登録が終わると、デバイス画面に移ります。

    デバイス画面から、実際に DeepLens を操作することになります。

    まずは、プロジェクトを作成します。

    左側のメニューにある「リソース」下の「個のプロジェクト」を選びます

    個のプロジェクト画面

    個のプロジェクト画面では、プロジェクトの一覧が表示されます。

    下の画像では、プロジェクトが2つありますが、最初の状態だとプロジェクトが1つもない状態で表示されます。

    新しいプロジェクトを作成」を選択します。

    ここで、左側の2段目にある「顔検知」を選択。

    プロジェクト名と説明を入力します。

    特に、変更する理由がなければ、デフォルトのままで構いません。

    これで、プロジェクトは完成です。

    デバイスへのデプロイ

    次に「デバイスへのデプロイ」を選択すると、モデルと Lambda 関数の DeepLens への転送が始まります

    ネットワークの速さに依存しますが、私の場合は10分程度かかりました。

    デプロイ中は、デバイス画面の上側に青色でステータスが表示されます。

    無事にデプロイが終わった場合は、これが緑になり、失敗した場合には赤になります。

    通信状態が悪いと、失敗する場合があります

    転送が終わると(ステータスが緑になると)、DeepLens のモデルの動作が始まります。

    カメラランプが青に点灯すれば、動作は開始しています。

    Lambda 関数を調べてみる

    下のコードが推論を行っている主要部分になります。

    1while True:
    2        # Get a frame from the video stream
    3        ret, frame = awscam.getLastFrame()
    4        if not ret:
    5                raise Exception('Failed to get frame from the stream')
    6        # Resize frame to the same size as the training set.
    7        frame_resize = cv2.resize(frame, (input_height, input_width))
    8        parsed_inference_results = model.parseResult(model_type,
    9                              model.doInference(frame_resize))

    awscam が API をインポートして使うオブジェクトで、getLastFrame() によって撮影中のビデオストリームから1フレームを取り出します。

    次に、これを model  オブジェクトの parseResult() 関数で呼びだして推論を実施。結果を配列に確保します。

    実際の model は、GreenGrass がインストールしたものを使います。

    DeepLens の動作確認

    DeepLens を動作確認する方法には、以下の3つがあります。

    1. DeepLens にマイクロ HDMI ケーブルを接続して直接確認する
    2. DeepLens にWebで接続して、Web上で確認する
    3. IoT コンソールを使い、DeepLens からのメッセージを確認する

    ここでは、Web で接続して確認するビデオストリーミングの方法を説明します。

    ビデオストリーミング

    ビデオストリーミングは非常に簡単で、ビデオストリームの表示ボタンを押すだけで表示することができます

    ただし、ストリーミングに使用する PC 上に、あらかじめ DeepLens の管理コンソールで作成する証明書をインストールする必要があります。

    これらの設定は、デバイス画面の「デバイス設定の編集」を選択し、遷移する画面で行う必要があります。

    この時、USB で接続されていないと、「デバイス設定の編集」画面に遷移できないので注意してください

    中編へ続く!

    DeepLens は、内部では GreenGrass 上で動作するものなので、とっつきづらいところがあるかもしれません。

    しかし、モデルをデプロイしてしまえば、白物家電のように、電源ボタンを押すことで「開始」と「終了」ができるようになります

    結果の受け取りを含め、全てクラウド上で行うように設計されています。

    エンドユーザには、何も意識させずに使えることを目標に設計されているのです。

    そのため、始めは戸惑うかもしれませんが、慣れると使いやすいデバイスです。

    ちなみに、S3 へのアップロード後、S3 のイベントトリガーで「Rekognition」に問い合わせ等を行うと、誰の顔であるかなども識別可能になります。

    この Rekognition については、機会があればご紹介したいと思います!

    お楽しみに!

    続きの記事はこちら

    featureImg2020.06.30【中編】 DeepLens で顔認識をしてみた~実践編~中編~DeepLens で顔認識をしよう!~前回は、「AWS の組み込みモデルを使うだけで顔認識ができる」ことを確認し...

    こちらの記事もオススメ!

    featureImg2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    メディアチーム
    メディアチーム
    Show more...

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background