

どんな人が、どの時間帯に来店して、どういった行動をして、何を購入しているのか知りたい。
これは店舗の経営者や従業員の多くが抱く夢。ですが、実現するのが非常に難しい夢でもあります。なぜなら、まだまだ画像分析やディープラーニングなどの技術は発展途上にあり、定点カメラなどの情報を元にした人物追跡・人物同定が実用化レベルまで至っていないからです。
その夢を叶えるべく、研究に没頭する1人のエンジニアがいます。DeNAのシステム&デザイン本部 AIシステム部AI研究開発グループ の西野 剛平(にしの こうへい)です。
彼は、DeNA社内にあるサクラカフェの定点カメラの画像データを用いて、高精度かつリアルタイムな店内の顧客分析を実現しようとしています。「スマートショップ」と呼ばれるこのプロジェクトを駆動させ、西野を“フルスイング”させる原動力は何なのでしょうか? 今回は、深淵なる画像解析の世界に迫ります!
目次 [隠す]
消費者の行動解析を、実店舗で実現できないか?
――どのような経緯でスマートショッププロジェクトが立ち上がったのでしょうか?
西野:私が現在所属しているAIシステム部が立ち上がった際に、いくつかプロジェクトのアイデアがあり、その中に「定点カメラの情報を分析することで、来店されているお客様の行動を特定できないか?」というものがありました。
アイデアの元になっているのは、ECサイトなどでよく実施されているデータ解析やレコメンデーションです。ECサイトでは、その人がどんな商品を閲覧・購入しているか、購入に至るまでにどんな動作をしているかといった情報を分析して、サービス改善に繋げているじゃないですか。それと同じことを実店舗でも実現したかったんです。
システム&デザイン本部 AIシステム部AI研究開発グループ 西野剛平
前職のプリンタメーカーでは、不動産間取り図の校正および文章レイアウト認識などの研究に従事し「プリント自動修飾アプリケーション」の実用化などを果たす。その後、起業を経てDeNAに中途入社。各種ゲームの立ち上げや開発を経て、現在はAIシステム部で主に定点カメラ映像からの画像認識に取り組んでいる。
――スマートショッププロジェクトによって、どんな業務改善が実現するのですか?
西野:例えば、商品レイアウトの最適化です。お客様の動きを追跡できるようになれば、「どんな人がどういう動きをして、店内にどれくらいの時間滞在して、どこを見て何を買ったか」という情報を収集できるようになる。そうすると、「ここで引き返しているから、レイアウトをこう変えた方がいい」といったことを検討可能になります。
それから、購入率の低い時間帯を把握できることで、接客の強化やタイムセールなどの試作実施にも結び付くわけです。加えて、潜在顧客も発掘できます。何か商品を探している様子はあるけれど買わずに帰っている方が多いならば、別な商品を配置することで購買行動に結びつけられる可能性があるからです。
流動的な「ヒト」を追跡する難しさ
――店内にいる人の画像を解析する“からこそ”の難しさはどういった部分にありますか?
西野:いくつかありますが、特にオクルージョン(手前にある物体が背後にある物体を隠して見えなくなること)の問題は厄介ですね。例えば、カフェの入口から5人の団体が来たとします。そして真ん中に背の低い人がいて、周りに背の高い人がいる場合に、中央の人が隠れてしまって「4人」であると認識されてしまうんですよ。
それ以外にも解決すべき課題は沢山あって、それら一つ一つ解決できるように手法を改良していく必要がありましたが、実際どうやって実現していくのかは本当に悩みました。このプロジェクトを一緒にやっていた李くんとも、どのようなアプローチが良いかよく議論していましたね。
――プロジェクト初期から現在まで、どういった手法を用いてきたか教えてもらえますか?
西野:初期の頃は、人物追跡の手法としてはKCF、人物検出の手法としてはYOLOv2というものを用いていました。
YOLOv2は、研究を開始した2017年1月段階では、物体検出におけるstate-of-the-art(その時点における最高水準の技術)。処理速度が非常に速く、かつ正確に検出できるという特徴があります。KCFは、2015年時点の追跡のstate-of-the-art。加えて、KCFはソースコードがWebで公開されていたので、そのコードをすぐに試す事ができたというのが選定の理由としては大きいですね。
追跡と検出の2つをどう組み合わせるかというと、「①画像に人物検出をかけ、どんな人が写っているかを特定する」「②数フレームの間、①によって検出された人物を追跡する」「③再び、画像に人物検出をかける」という作業をくり返します。
どちらもstate-of-the-artの手法だったこともあり、「この2つを使えば上手くいくかな」と軽く考えていたんですが、実際はそんなことはなく、ほとんど上手くいきませんでした。
――それはなぜ?
西野: YOLOv2というのは、「画像に写っているものを複数個検出し、さらにそれらが何であるかまでを一発で当てる事ができる」ということが強みの手法なんです。
つまり、今回のように人だけを検出したいシーンにおいてはオーバースペックであり、ゆえに、人物“だけ”の検出精度に限っていうと精度はそれほど高くはなかったんですね。オクルージョンなどイレギュラーな事象が発生すれば、すぐに人物を見失ってしまいました。そうすると「検出⇒追跡⇒検出」という工程がそもそも成立しなくなるわけです。この失敗経験をベースにして、「人」に特化した高精度な検出手法を見つけることが必要だとわかってきたんです。
▲サクラカフェの天井にある定点カメラ。このカメラから取得された画像情報が、スマートショッププロジェクトに活用されている。
直面した、「人物を見失ってしまう」という課題
――それを解決するため、どんな手法を用いたのですか?
西野:姿勢推定という手法です。これは、画像から人の各器官点(鼻、首、肩、手など)を検出し、その情報を元にして人の姿勢の推定を行うものです。
人物が重なっている場合でも、体の器官点の一部分さえ見えていれば、そこに人がいるという事は認識できます。この手法は体の器官点を検出し、それらの位置関係から人の姿勢を推定します。したがって、オクルージョンがある場合でも、かなり高精度に人の検出ができました。
――「検出」が成功。となると次は、「追跡」が上手くいけば人物特定ができるようになるわけですね。
西野:はい。でも、ここでまた問題が生じました。姿勢推定とKCFを組み合わせると、KCFによる追跡の精度が非常に悪化してしまうんです。なぜかというと、姿勢推定の技術は検出の精度はすごく良いんですが、YOLOv2に比べて処理コストは高いため処理時間がかかります。そうなると、1フレームで人がけっこう移動してしまっていて、KCFが人を見失ってしまう事態が発生するんです。ちょっと早歩きしたらもう追跡できない、という感じでした。
――その課題を、どう解決していきましたか?
西野:KCF以外で追跡手法を考える場合、「ディープラーニングを使った手法」とそうではない、いわゆる「トラディショナルな手法」とに大別できます。一概には言えませんが、ディープラーニングを使った手法は処理が重い事がほとんどであるため、検出器として使っている姿勢推定と併用することは難しい。そのため、後者の手法で何か良いものがないか、関連論文をサーベイしていきました。
そうするとヒントになったのが、2015年のICCVで採択された『Scalable Person Re-Identification: A Benchmark』という論文でした。
この論文に書かれている手法では、画像の中から人が写っている部分を取り出し、それを横切りにいくつかにスライスします。そして、スライス後の各パーツが持つ色の成分からヒストグラムを形成。さらに、そのパーツ毎にヒストグラムの類似度をチェックすることで、同一人物だということを特定します。僕らは人検出部分に姿勢推定を使っていたので、各器官点の検出は既にできていました。ですので、すぐにこの手法と組み合わせたような手法を試してみよう、という事になりました。
――なるほど! 姿勢推定によって人の各器官点の画像データはすでに抽出されているから、それを流用すればいいわけですね。
西野:そういうことです。しかも、『Scalable Person Re-Identification: A Benchmark』でもともと用いられていた「横切りにいくつかにスライスする」という手法では、壁の色や床の色(背景色)が変わるとヒストグラムの成分割合が変化してしまうという欠点がありましたが、それも解消されます。各器官点の色(肌の色や服の色)は、場所を移動しても変化しないからです。
さらに言えば、色の類似度算出は処理が非常に軽量です。これで、ある程度「いける」という目算が立ちました。
――そこからさらに精度を上げるために、どんな処理を実装しましたか?
西野:「同じ色の服を着ている人を見分ける」ための処理です。同系統の色の服を着ている人が同じフレームに収まっている場合、色による追跡だけだと同一人物かどうかの判定が難しかったんです。特に冬なんかだと、黒系の服を着ている人って多いじゃないですか。
そこで使ったのが、「位置の尤度(ゆうど)」。これは何かというと、人物が動いた軌跡を算出することで「次はこのあたりに動くだろう」という予測位置をガウス分布によってモデル化する、というものです。
こうして「色の類似度」と「位置の尤度」の2つを掛け合わせることで、人物追跡の精度が非常に高くなりました。
インプットの極意は、とにかく論文を読むこと
――今回登場したさまざまな手法は、西野さんが日常的に情報収集を続けていたからこそ「これが使えそうだ」と発想できたのだと思います。普段どんな方法でインプットをしていますか?
西野:画像処理および画像分析関連だと、CVPRやICCVといったトップカンファレンスが毎年開催されていますが、そこで採択されている論文に関しては、どういうものがあるか出来るだけ目を通すようにしていますね。それらを抑えておけば、時代の最先端は追っていけるはずなので。
とはいえ、実際にはその論文を読むだけでも結構な量があるので、僕はズルというかもっと効率的な方法を採るようにしています。何をしているかというと、CVPRやICCVで採択された論文の要約スライドをアップしている方が世の中にけっこういるので、そのスライドをまず読むようにしているんです。
それによって、だいたい何が書かれているのか簡単に把握できます。その上で、自分の研究に関連性が高かったり、興味を持てるような内容だったらオリジナルの論文を読んでいきます。
それからプロジェクトで(人物追跡など)何かの処理を実装する必要性が出てきたときには、「過去の論文で、同様の課題を解いているものはないか?」をまずは調査するようにしています。
最初に最新の研究を読んで、使えそうだと思えばそれを実装。もし使えなさそうな場合には、その論文が参考にしているさらに過去の論文を読む、という感じにどんどん遡っていきます。そうすれば、どこかのタイミングで自分が解こうとしている課題のベストな解法にたどり着ける可能性が高いんです。
自分たちの研究成果が、社会貢献に結びつく
――最後に聞きたいのですが、DeNAで画像解析や機械学習などの研究をするやりがいはどのような部分にあると思いますか?
西野:研究結果が、きちんとビジネスに結びついていくことですね。スマートショップ以外でも、自分たちの研究が社内のプロジェクトに導入されて大きな成果を上げることもありますし、パートナー企業様と協業して巨大プロジェクトを推進していくこともあります。自分たちの仕事が世の中の役に立っている。社会貢献に結びついている実感があるんです。
そうした取りくみができる企業って、日本にはそれほど多くはありません。そういう意味でも、「DeNAで働いていて良かったな」と実感しています。このスマートショッププロジェクトを通じて、自分の研究が、世の中を変えるきっかけになれば良いなと、日々ワクワクしながら研究開発に取り組んでいます。