人の顔を検出し、顔から推定した年齢を表示する Web アプリを作成する  

Web アプリケーション内で、オープンソースの年齢推定深層学習モデルを使用して人の顔を検出し、年齢を推定する

By I-Hong Jhuo

Description

IBM Model Asset Exchange (MAX) では、データ・サイエンスの経験がないアプリケーション開発者が、あらかじめ作成された機械学習モデルに容易にアクセスできるようになっています。このコード・パターンでは、MAX で提供している Facial Age Estimator MAX モデルを使用して、単純な Web アプリケーションを作成する方法を説明します。このアプリケーションは、Web カメラにアクセスする許可をユーザーから得た上で、MAX モデルの出力を視覚化します。具体的には、Web カメラを使用してストリーミング動画を MAX モデルに送信し、モデルから返された推定年齢を Web UI に表示して、該当する顔を境界ボックスで囲んで識別します。

Overview

人の生物学的年齢が、アプリケーション (例えば、監視や商品のレコメンデーションを目的としたアプリケーション) にとって重要な情報となることは珍しくありません。Facial Age Estimator モデルは、携帯電話や Web カメラといった既存の商用デバイスを使用して作成されたビジュアル・データ (画像や動画) を基に、人の顔を検出して年齢を推定します。こうして推定された年齢に他のアルゴリズム (例えば、グループ化アルゴリズム) を適用すれば、各種のアクティビティーに応じて人をグループ化し、その統計情報から洞察を引き出すことができます。

このコード・パターンでは、Model Asset Exchange (MAX) という、開発者がオープンソースの深層学習モデルを見つけて実験できるようにモデルを公開しているプロジェクトから入手できるモデルのうちの 1 つを使用します。具体的には、Facial Age Estimator モデルを使用して、人の顔を検出し、その顔から推定された年齢と、該当する顔を識別する境界ボックスを出力する Web アプリケーションを作成します。Web アプリケーションには、軽量の Python サーバーによってサポートされたユーザー・フレンドリーなインターフェースを用意します。サーバーがこの UI を介して Web カメラで撮られた画像を入力として取り、その画像をモデルの REST エンドポイントに送信します。モデルの REST エンドポイントは、MAX 上に用意されている Docker イメージを使用してセットアップします。各個人について推定された年齢は、その個人の顔を囲む境界ボックスと併せて Web UI に表示します。

このコード・パターンを完了すると、以下の方法がわかるようになります。

  • Facial Age Estimator MAX モデルの Docker イメージをビルドする
  • REST エンドポイントを使用して深層学習モデルをデプロイする
  • MAX モデルの REST API を使用して、画像から年齢を推定する
  • MAX モデルの REST API を使用する Web アプリケーションを実行する

Flow

  1. サーバーが Web カメラで撮影された動画をフレームごとにモデルの API に送信します。
  2. Web UI がサーバーに対し、フレームごとに年齢と境界ボックスデータをリクエストします。
  3. サーバーがモデルの API からデータを受け取り、その結果で Web UI を更新します。

Instructions

詳細な手順については、README ファイルを参照してください。手順の概要は以下のとおりです。

  1. IBM Cloud にデプロイします。
  2. Kubernetes 上にデプロイします。
  3. ローカルで実行します。

Related Blogs

Call for Code 2019 応募に向けて個別オンライン相談会の予約受付開始

皆さん、こんにちは。IBM デベロッパーアドボケイト戸倉彩です。 グローバルハッカソンは目標をもって仲間と一緒 […]

続けて読む Call for Code 2019 応募に向けて個別オンライン相談会の予約受付開始