現在JavaScriptの設定が無効になっています。このページを利用するにはJavaScriptの設定を有効にしてください。2017の12日目の記事です。一覧はこちらはじめにこんにちは。JAPAN研究所の日暮です。JAPAN研究所の研究開発において携わる特定物体認識の技術の応用事例として、Yahoo!ラボのアプリ「サイヤスカメラ」を紹介していきたいと思います。JAPAN研究所が開発したラボアプリです。手元にある商品を撮影するだけで、Yahoo!ショッピングから最安値の商品を検索できるiOSアプリです。コミック」「音楽・映像ソフト」です。商品数は合計で約100万品です。商品を撮影すると、約1.5秒ほどで撮影した商品の結果が表示されます。ついて特定物体認識とは近年のインターネットショッピングの商品数・店舗数の増大に伴い、スマホなどで撮影した画像から商品を検索することの需要が増加していますが、このようなシステムを実現するためには、画像から類似度が高い物体を検索できる手法が必要です。その一つとして特定物体認識技術が注目されています[1]。特定物体認識では、データベースから物体そのものを「検索し」物体を特定します。近年盛り上がりを見せているディープラーニングなどによる認識は一般物体認識と呼ばれており、こちらは物体そのものを当てる問題ではなく、カテゴリーや類似商品を当てる問題である点が異なっています。図1に示すように、一般物体認識ではペットボトルのお茶であるという分類をするというような問題を対象としているのに対し、特定物体認識では商品名を特定するような問題を対象としています。仕組みですが、特定物体認識は認識対象とするすべての物体の画像から特徴点座標および局所特徴量を抽出し、データベース(特徴量データベース)化する作業を事前に行います(図2)。データベース構築の手順は次の通りです。特定物体認識データベース作成の流れ認識時には撮影された画像の局所特徴量を基にデータベースを検索し物体を特定します(図3)。課題とサイヤスカメラのアプローチ単一の画像から数百の特徴量が抽出されるため、上記の検索の流れで最も時間を要する処理が局所特徴量の検索です。数十万の物体画像を対象とした場合でも、億単位の局所特徴量が抽出されるため、商品数が多い場合には現実的な時間では処理できなくなる課題があります。おいても利用する上で現実的な時間で処理が行えるシステムを考案しました。次の章でそれぞれについて紹介します。サイヤスカメラのアプローチ紹介サイヤスカメラの高速検索を実現した技術について紹介します。局所特徴量データベースの分割1つ目の工夫点として、商品カテゴリーごとに局所特徴量データベースを分割し1サーバーあたり1データベースとしてシステムを構築しました。これにより、2点の効果を得ることができています。カテゴリーごとにデータベースのパラメータを最適化することが可能になリました。カテゴリーにより、商品数は少ないが精度を重視するカテゴリー、商品数が多いため検索速度を重視するカテゴリーなどがあります。それぞれについてパラメータを最適化することで、データベースごとに最適な高速化を実現しました。次に、局所特徴量データベースごとにサーバーが分かれているため、並列でサーバーにリクエストすることで、検索処理の並列化が行えるようになりました。図4のように単一の画像ごとに数百の局所特徴量が抽出されます。局所特徴量を抽出し、局所特徴量データベースで検索を行う際に、検索を局所特徴量ごとに並列化して高速化を図りました。局所特徴量は100次元以上の高次元のベクトルデータで表現されるため、局所特徴量データベースは高次元ベクトルデータの検索が行えるものである必要があります。k-NN)などの近傍検索の手法が用いられます。k最近傍検索とは、クエリとしてベクトルデータが与えられた時に、クエリと空間内に点在するベクトルデータとの距離に基づき近い順にk個のデータを検索する手法です。空間内のすべてのデータとの距離を計算すると時間がかかるので、この検索を高速化するためには事前にインデックスを作成することになりますが、1つの特徴量が100次元を超えるような高次元ベクトルデータの検索においては、高速に検索することが大変困難です。JAPAN研究所が所有する高次元ベクトルデータの近傍検索技術を実装した”NGT”というソフトウエアを利用しています。NGTは、グラフとツリーを組み合わせたインデックスを用いる近傍検索手法を採用しています。図5にインデックスの構造を示します。図のようにツリーの上から下へたどる(青の矢印)ことでクエリの近傍候補となるデータを取得した後に、そこからグラフをたどる(緑の矢印)ことで網羅的にデータを探索します。詳細は過去のtechblogの記事、または、参考文献[2]をご覧下さい。NGTのインデックス構造また、NGTのダウンロードは以下のURLから行えます。OSSとして公開されていますので、ぜひこちらもご利用下さい。前述の通り、1枚の画像データあたり数百の局所特徴量が抽出されるため、数十万画像から億単位の特徴量が抽出されます。局所特徴量データベースはこれらの大量の高次元ベクトルデータをデータベース化する必要があります。NGTを利用することで、高次元のベクトルデータを高速検索できるようになりましたが、サイヤスカメラのように億単位の高次元ベクトルデータをインデックスに登録する場合には、さらなる高速化の工夫が必要となりました。今回、それを解決するために高次元空間を複数の低次元空間に分割する量子化を行いました(図6)。量子化の手法には直積量子化を採用しています。直積量子化の詳細な手法については、参考文献[3]をご覧下さい。直積量子化手法サイヤスカメラのシステム構成サイヤスカメラのシステム構成を図7に示します。提供するサーバーです。商品データベースサーバーは商品名などの商品情報を特徴量データベースと共通の商品ID体系で関連付けたデータベースです。フロントエンドサーバーは商品認識サーバーと商品データベースサーバーへのリクエストをまとめる機能を有したウェブAPIです。iOSアプリは、画像の撮影や認識の実行などを行います。前述のとおり認識処理時間および精度向上のために特徴量データベースを分割しているため、それに対応して商品認識サーバーは複数用意します。商品認識時の流れは次のとおりです。特性から形状が変化せず、平面(立体物でも正面がほぼ一意に決まる)物を対象として、ドリンク・水・お酒、食料品の一部、キッチン・日用品の一部、本・雑誌・コミック、そして音楽ソフト・映像ソフトの5カテゴリーを選定し利用しています。それぞれの件数と得られた局所特徴量数は表1の通りです。対象の商品について、画像(画像サイズ=250または400ピクセル)と商品情報を取得し、特徴量データベースおよび商品データベースを作成したものが現在公開されているサイヤスカメラで利用されています。サイヤスカメラデータ商品認識のデモでは、サイヤスカメラで実際に商品を撮影して認識させてみましょう。以下がアプリの認識を実際に行う画面です。アプリの下部の赤いボタンを押すと、認識を開始します。アプリに商品をかざして、商品を認識するとカメラ部分に商品が自動的表示されます。認識した商品をクリックすると、商品の最安値を検索して結果を表示します。サイヤスカメラ最安値表示例また、図10は一例として、日本酒「獺祭」を認識させてみた例です。獺祭のラベルを認識して商品が検索されていることがわかると思います。こちらの結果には日本酒だけでなく書籍も表示されています。このようなカテゴリー違いは現状のアプローチでは起きてしまうことが分かっており、今後の課題となっています。ディープラーニングなどを利用したカテゴリー分類の仕組みと特定物体認識を組み合わせることで解決できるのではないかと考えています。(4)直積量子化の導入により億単位の局所特徴量を用いた商品認識システム構築について紹介しました。本システムにより、スマートフォンで撮影された商品画像から実用的な時間内での商品認識が可能になりました。このような新しい技術を利用して、お客様のショッピング体験を向上できるようにこれからも工夫していきたいと考えています。JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。JAPANのサービス開発を支える技術やデザイン、文化を発信しています。Reserved.このページの先頭へ。