1. HOME
  2. ブログ
  3. IT技術
  4. 【後編】 DeepLens で顔認識をしてみた~仕上げ編~

【後編】 DeepLens で顔認識をしてみた~仕上げ編~

後編~DeepLens で顔認識をしよう~

前回の「実践編」に続き、「DeepLens」と「Rekognition」を使った顔認識プログラムについて解説します。

前回は、Rekognition を呼び出すための、DeepLens 側プログラムの動作確認までを行いました。

今回は「仕上げ編」として、実際に Rekognition に問い合わせをして、結果をメール送信するところまで実装したいと思います。

前回の記事はこちら

前回の記事は、以下をご参照ください。

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

S3 側のプログラム

前回で DeepLens 側の設定は終わったので、S3 側の設定から始めましょう。

Lambda 起動

S3 に新しい写真が追加されたら、「Lambda」を起動するよう設定します。

まず、AWS コンソールから Lambda サービスのページに移動してください。

関数の作成

「関数を作成」ボタンをクリックします。

設計図の仕様をチェックして、フィルター追加のところに「S3」と入力します。

すると、キャプチャのように候補が出てくるので、「s3-get-object-python」 をチェックします。

最後に、「設定」を押します。

関数名を入力

関数名を入力します。

ここでは「myTestUploadFunc」としておきます。

実行ロールとバケットを設定

実行ロールは「既存のロールを使用する」をチェックして、ドロップダウンから 「service-role/AWSDeepLensLamdaRole」を選びます。

S3 トリガーのバケットをドロップダウンして、使いたいバケットを選び、「設定」ボタンを押します。

押しても画面遷移しない場合は未設定の箇所があるので、赤い部分を修正して下さい。

設定完了

きちんと設定が出来ていると、画面がキャプチャのように遷移します。

これでようやく、S3 のフックプログラムが書けるようになります。

テスト

さっそく、Lambda に慣れるためにテストをしてみましょう。

右上の「テスト」ボタンを押します。

イベント名を入力

イベント名を入力します。

ここでは、「myUploadTestEvent」としておきます。

バケット名を変更

スクロールして、テストプログラムの下の方にある、 "bucket":"name": "example-bucket" のところを "name": "バケット名" に変更します。

「バケット名」には、あなたがつけた S3 のバケット名を入れて下さい。

(例: "test-s3-bucket" など)

同じように、 "arn" についても修正します。

ファイルを入れ替え

最後に、これからアップロードテストをするファイル名を "key": "test/key""test/key" と入れ替えて下さい。

test が「フォルダ名」で、key が「ファイル名」にあたります。

設定完了

さあ、これで「作成」ボタンを押したらテストの準備は完了です。

出来上がった関数の右にテストボタンがあるので、ちゃんとプログラムが実行されるか確認してみましょう!

確認

エラーが起こるとキャプチャのように赤くなるため、もう一度テストプログラムをチェックします。

(正しく修正されていれば、テストプログラムは動作します。)

エラーを防ぐため、テストファイルはあらかじめアップロードしておく必要があります。

アクセス権限の確認

ここで忘れてはならないのが、「アクセス権限」です。

S3 イベントを監視するには、実行ロールに S3 アクセス権がついているかを確認する必要があります。

これは、IAM のコンソール上から行います。

ついていなければ、「ポリシーをアタッチします」ボタンを押して、AmazonS3FullAccess を付与します。

ちょっと面倒ですが、AWS のルールとして、サービスを実行する時には実行権限をつける必要があるのです。

ついでにここで、「AmazonRekognitionCustomLabelsFullAccess」と「AmazonSNSFullAccess」も付与しておくと、後の手間が省けます。

ここで、ようやく一段落です。

結構手数が多いので、設定忘れやミスがないよう、ひとつひとつ丁寧にやって行きましょう!

SNS サービスの準備

今回は確認方法に「SNSサービス」を使うので、SNS 側にトピックを作る必要があります。

トピックとは

トピック」というのは、SNS がサービスを行う単位のことです。

トピック単位で、複数のメールアドレスにメールを送ることができます。

また、トピックにメールアドレスを登録することを、「サブスクリプション」と呼びます。

トピックの作成

例によって、AWS コンソールから「AmazonSNS サービス」を選んで、トピックを選びます。

「トピックの作成」ボタンを押して、トピックを作成します。

トピック名を入力

任意のトピック名を入力します。

ここでは、「myTestUploadTopic」としています。

「トピックの作成」ボタンで、トピックが作成されます。

サブスクリプションを作成

次に、トピックの青線箇所をクリックすると、サブスクリプションを作成できます。

プロトコルの選択」で、Eメールを選択します。

エンドポイント」に、メールを受信したいアドレスを入力します。

サブスクリプションの作成」ボタンを押すと、先の画面に戻りますが、この時点でメールが届くので確認して下さい。

確認

確認が済むと、画面に「確認済み」と表示されます。

これは、正しいメールアドレスが登録されたかどうかを、AWS のシステムが確認する機能です。

これを行わないと、SNS サービスは利用できません。

さあ、これで準備完了です!

トピックの ARN をコピー

画面に表示されているトピックの ARN をコピーしましょう。

arn は、SNS サービスコンソールの最初のページのトピックに表示されています。

arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:myTestUploadTopic.

これはシステムごとに違うので、上記をコピペしても動きません。

必ずご自分の環境のものを使って下さい。

トピック表示の個別画面の右上に「メッセージの発行」ボタンがありますので、実際にテストメールが発行されているかを確認しておいて下さい。

Lambda プログラムの変更

以下が、新しく追加する、S3 のイベント監視フックプログラム( Lambda )です。

Rekognition に問い合わせる

アップロードが終了したら、Rekognition に問い合わせを行います。

すると Rekognition が分析を行い、特定の人物の可能性が高い場合にはSNSサービスを使ってメールで知らせてきます。

テスト実行

ここまできたら、間違いがないかどうか、「S3Lambda のテストボタン」で試してみましょう。

この記事の通りにやれば大丈夫ですが、動かない場合は、次のチェックをして下さい。

  1. 第2回の記事にある Rekognition にコレクションを作成していますか?
  2. テスト用にアップロードした画像は、ちゃんとコレクション内にありますか?
  3. 記事中のステップごとに記載した確認はできていますか?

動作確認

さあ、これで全て終了です。

DeepLens にプログラムをデプロイして、動作確認をしてください!

さいごに

いかがでしたか?

複雑な手順に見えますが、Amazon の3つのサービスを使っているだけで、プログラムとして難しい部分はありません。

ひとつひとつ確実に設定することで、プログラムは動作します。

DeepLens」はもちろん、「S3 フックプログラム」や、「SNS メールサービス」などもいろいろな用途に使えると思います。

ぜひ、あなたなりの活用方法を考えてみて下さいね!

機械学習でのシステム開発依頼・お見積もりはこちらまでお願いします。
また、機械学習系エンジニアを積極採用中です!詳しくはこちらをご覧ください。

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

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア