最近はショッピングモール内、店舗の前や中などにデジタルサイネージを設置し、広告や販促キャンペーンの情報を流す取り組みが広がっている。その際、デジタルサイネージを、実際にどのような人が見てどんな感情を呼び起こすのか、各コンテンツがどれだけの効果を上げているのか――といったデータを得られたら、デジタルサイネージの訴求効果をさらに上げられるだろう。

 そのためにデジタルサイネージのそばに調査員を配置し記録を取る方法が考えられるが、コストがかさむうえに調査員の判断にはバイアスが掛かることも多い。

 そこでAIを活用する。デジタルサイネージを見ている人をカメラで撮影してAIで解析することで、どのような人がどんな表情をしているのかを自動判定できる。

 このような取り組みの事例としては、英Landsecがロンドンのピカデリーサーカス広場に設置している、巨大なビルボード(屋外広告)が知られる。カメラでビルボードの周辺を撮影し、人の年齢や感情などをリアルタイムに分析。その結果に応じて、広告の内容を変化させている。

 これには大掛かりな装置を用いているようだが、規模を小さくすれば同様のことが容易に実現可能だ。具体的には、店頭に設置した小型のデジタルサイネージにカメラを組み合わせ、その前にいる来店客1人を解析する。

 今回は、米Microsoftの学習済み認知AIサービス「Cognitive Services」を活用し、カメラの映像から、写った人の年齢や性別、表情からうかがえる感情を判定し、その結果を自動的に記録するシステムを解説する。

 システムの全体像と主なプロセスを図1に示す。プロセスは「カメラ画像の取り込み」「人が写っているかどうかの判定」「画像のアップロード」「Azureでの画像取得」「年齢・性別・感情の判定」「判定結果の記録」の六つだ。

図1 来店客の分析プロセス
[画像のクリックで拡大表示]

 以降ではコード例を示しながら、六つのプロセスの実現方法を解説する。ローカルサーバーはWindowsベースのものを使用し、プログラミング言語はC#を使う。

 この連載では処理の概要をつかんでもらうことを主眼としており、サンプルコードには最小限の内容を記述している。実際には、例外処理のコードなども記述する必要がある。

Process1 カメラ画像の取り込み

 ローカルサーバーに、カメラで撮影した画像を取り込む。Windows Runtimeには写真や動画を簡単に取得できる「CameraCaptureUI」というAPIが用意されている。今回はこれを使用し、画像取得用に「captureUI」というオブジェクトを生成しておく。

 このオブジェクトには、画像形式とサイズを指定する。今回は512×512ピクセルのJPEGとする。

 画像を取得するときは、取得モードを引数に指定し、CameraCaptureUIの「CaptureFileAsync」メソッドを呼び出す(図2)。今回は静止画として取得するため「CameraCaptureUIMode.Photo」を指定する。取得した画像データは、ローカルサーバーのストレージに格納しておき、あとでAzureにアップロードする。

図2 カメラ画像の取り込みのコード例(C#)
Windows RuntimeのCameraCaptureUIというAPIを使い、512×512ピクセルのJPEGファイルを取得する
[画像のクリックで拡大表示]

この先は有料会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら