ちょっと話題の記事

ServerlessDays福岡で目瞑りを検証したLTをしてきました。 #serverlessdays #serverlessfukuoka

2019.12.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィスでインターンをしている、たいがーです。実は、今日インターン最終日でした!

実際の案件にアサインさせていただきながら、最後の1か月間を過ごしました。もっとしっかり勉強しようと思った2ヶ月間でした。

さて、話は変わりまして、先週行われましたイベントでLTをしてきたお話です。


2019/12/14(土)に開催されたServerlessDays Fukuokaで「目つぶり検証機作成機 ~サーバーレス初心者の手始め~」というタイトルでLTをしてきました!

Serverless Days Tokyoでも同様の内容でLTをさせていただいたのですが、今回はそのアップデートバージョンです!

スライド

発表内容

以前から、趣味でしている"写真"と"技術"を掛け合わせて何かしてみたいと考えていました。

意外と時間の取られる写真の選別という作業の時間を短縮できないかと、今回の発表に至りました。

Amazon Rekognitionの顔分析機能を使い、画像の目つぶりを検証していきます。

Amazon Rekognition とは?

  • 画像、動画の分析ツール
  • オブジェクト、シーン、顔の検出や、テキストの抽出、有名人の認識、画像内の不適切なコンテンツの識別が可能

今回はAmazon Rekognitionのなかの顔分析という機能を使っていきたいと思います。

目つぶり検証機の構成

beforeという名前のAWS S3バケットに画像が入ったことをトリガーに、AWS LambdaからAmazon Rekognitionを叩き、目つぶりを検証。

その後、目を瞑っていなかった画像のみafterという名前のバケットにコピーします。

今回の開発環境はこちら。

  • Python 3.7
  • Serverless Framework

Serverless Frameworkにおいてはこちらの二つのファイルを編集していきます。

  • handler.py
  • serverless.yml

そもそもServerless Frameworkとは?

サーバーレスアプリケーションを構築、管理するためのアプリケーションです。

AWS以外にも、AzureやGoogle Cloud Platformなど、様々なプラットホームに対応しています。

私は、今回人生で初めてフレームワークを使用したので、serverless createをした後のServerlessという表記を見ただけでテンションが上がりました。

初めてのサーバーレスアプリケーション開発 ~Serverless Framework を使ってAWSリソースをデプロイする~

handler.pyで設定していくこと

  • S3バケットの読み取り
  • Amazon Rekognitionでの顔分析処理
  • 処理後、S3バケットへのコピー

大きく分けると、この三つを設定していきます。

serverless.ymlで設定していくこと

  • AWS S3へのアクセス
  • Amazon Rekoginitionへのアクセス
  • AWS S3をリソースに設定する

大きく分けると、この三つを設定していきます。

Amazon Rekognitionの注意点

対応しているデータ形式はjpgとpngのみとなっているので、今回のLTではRawPy、imageioという二つのPython Libraryを使用し、RAW形式の画像をJPGに書き換えていきました。

RawPyとは?

RAWデータを読み込む際に使用するライブラリ。読み込む際にパラメータを設定することで、自動でレタッチすることができる。

パラメータに関しては、ホワイトバランスや露出など、様々なものが設定できます。

今回の目瞑りの検証に関しては、関係のないところなので、設定せずそのまま使用することも可能です。

すぐにJPEGデータとして写真が欲しい時には、こちらでの写真の編集を使用するのも良いかもしれません。

imageioとは?

Imageio is a Python library that provides an easy interface to read and write a wide range of image data, including animated images, volumetric data, and scientific formats. It is cross-platform, runs on Python 2.7 and 3.4+, and is easy to install.

RAWデータからJPEGデータへの書き出しはimageioを使用していきます。

これらを使い、JPEGデータに書き換えた後、S3バケットにアップロードし、Amazon Rekoginitionで分析。目つぶりを検証しました。

Amazon Rekognitionの精度に関して

前回、瞳を開いているかというパラメータでのみ設定した際、目視した際に目が開いている画像も閉じているという判定が出てしまいました。そこで、より細かく設定するためにAmazon Rekognitionのデモを行っていきました。

その中で、人がいないはずのところにも顔分析が行われるというホラー現象が起り、結果的に数値を決めることは難しいという判断に至りました。大量に写真があって、その中で一枚でもデータがあれば良い。クオリティよりも時間をかけたくない方の比重が高ければ使っていきたいと思いました。

最後に

今回、自身の趣味である写真とシステムの掛け合わせに挑戦してみました。

好きな写真に関することだったので、何を調べるにも非常に楽しかったです!やはり好きなものと技術が組み合わさるのはいいですね。

最後になりましたが、ご来場くださった方、聞いてくださった方、スポンサー・運営の皆様、本当にありがとうございました!すごく楽しく、有意義なイベントでした!