(57)【特許請求の範囲】
【請求項１】
ｉ）プロセッサ、前記プロセッサに結合されたストレージ・デバイス、前記プロセッサに結合されたネットワーク・インタフェース、及び前記プロセッサに結合されたディスプレイを含むモバイル・コンピューティング・デバイス、
ｉｉ）１つ以上のサーバ及び前記１つ以上のサーバに結合されたデータベースを含むクラウド・コンピューティング・プラットフォーム、
ｉｉｉ）前記ストレージ・デバイスに格納された画像リポジトリを含む前記モバイル・コンピューティング・デバイス、
ｉｖ）複数の画像を格納する前記画像リポジトリ、
ｖ）前記プロセッサで動作するように適合された第一ソフトウェアを含む前記モバイル・コンピューティング・デバイス、
ｖｉ）特定の画像の小規模モデルを生成するように適合された前記第一ソフトウェア、前記特定の画像のインディシアを含む前記小規模モデル、
ｖｉｉ）前記ネットワーク・インタフェースを使用して前記クラウド・コンピューティング・プラットフォームへ前記小規模モデルを送信するように適合された前記第一ソフトウェア、
ｖｉｉｉ）前記１つ以上のサーバで動作するように適合された第二ソフトウェアを組み込む前記クラウド・コンピューティング・プラットフォーム、
ｉｘ）前記小規模モデルを受信するように適合された前記第二ソフトウェア、
ｘ）前記小規模モデルから前記インディシアを抽出するように適合された前記第二ソフトウェア、
ｘｉ）前記受信した小規模モデルに対応するタグ・リストを生成するように適合された前記第二ソフトウェア、
ｘｉｉ）前記インディシア及び前記タグ・リストを含むパケットを形成するように適合された前記第二ソフトウェア、
ｘｉｉｉ）前記クラウド・コンピューティング・プラットフォームから前記モバイル・コンピューティング・デバイスへ前記パケットを送信するように適合された前記第二ソフトウェア、
ｘｉｖ）前記パケットを受信するように適合された前記ネットワーク・インタフェース、
ｘｖ）前記ストレージ・デバイスに格納された第二データベースを含む前記モバイル・コンピューティング・デバイス、
ｘｖｉ）前記パケットから前記インディシア及び前記タグ・リストを抽出するように適合された前記第一ソフトウェア、
ｘｖｉｉ）前記インディシアに対応する前記画像と前記タグ・リストを関連付ける前記データベース内に記録を作成するように適合された前記第一ソフトウェア、
ｘｖｉｉｉ）第三ソフトウェアを組み込む前記モバイル・コンピューティング・デバイス、
ｘｉｘ）前記ディスプレイ上に検索画面を表示するように適合された前記第三ソフトウェア、
ｘｘ）検索文字列を受け取るように適合された前記検索画面、
ｘｘｉ）前記検索文字列を自然言語処理モジュールへ提出するように適合された前記第三ソフトウェア、
ｘｘｉｉ）前記検索文字列に基づきカテゴリ・リストを生成するように適合された前記自然言語処理モジュール、
ｘｘｉｉｉ）前記カテゴリ・リストに基づき前記データベースにクエリを行い画像リストを受信するように適合された前記第三ソフトウェア、及び
ｘｘｉｖ）前記ディスプレイ上に前記画像リストを表示するように適合された前記第三ソフトウェア、  
を備える、画像編成システム。
【請求項２】
前記自然言語処理モジュールは、ソートされたカテゴリ・リストを返し、前記カテゴリ・リストは、距離メトリックによりソートされる、請求項１の前記画像編成システム。  
【請求項３】
前記モバイル・コンピューティング・デバイスは、スマートフォン、タブレット・コンピュータ、またはウェアラブル・コンピュータである、請求項１の前記画像編成システム。
【請求項４】
前記ストレージ・デバイスは、フラッシュ・メモリである、請求項１の前記画像編成システム。
【請求項５】
前記モバイル・コンピューティング・デバイスは、スマートフォンであり、前記ストレージ・デバイスは、フラッシュ・メモリである、請求項１の前記画像編成システム。
【請求項６】
前記モバイル・コンピューティング・デバイスは、スマートフォンであり、前記ストレージ・デバイスは、ＳＤメモリ・カードである、請求項１の前記画像編成システム。
【請求項７】
前記ネットワーク・インタフェースは、無線ネットワーク・インタフェースである、請求項１の前記画像編成システム。
【請求項８】
前記無線ネットワーク・インタフェースは、８０２．１１無線ネットワーク・インタフェースである、請求項７の前記画像編成システム。
【請求項９】
前記無線ネットワーク・インタフェースは、セルラ式無線インタフェースである、請求項７の前記画像編成システム。
【請求項１０】
前記データベースは、リレーショナル・データベース、オブジェクト指向データベース、ＮＯＳＱＬデータベース、またはＮｅｗＳＱＬデータベースである、請求項１の前記画像編成システム。
【請求項１１】
前記画像リポジトリは、ファイル・システムを使用して実装される、請求項１の前記画像編成システム。
【請求項１２】
前記小規模モデルは、画像のサムネイルである、請求項１の前記画像編成システム。
【請求項１３】
ｉ）プロセッサ、前記プロセッサに結合されたストレージ・デバイス、及び前記プロセッサに結合されたディスプレイを含むモバイル・コンピューティング・デバイス、
ｉｉ）前記ストレージ・デバイスに格納された画像リポジトリを含む前記モバイル・コンピューティング・デバイス、
ｉｉｉ）複数の画像を格納する前記画像リポジトリ、
ｉｖ）前記プロセッサで動作するように適合された第一ソフトウェアを含む前記モバイル・コンピューティング・デバイス、
ｖ）特定の画像に対応する小規模モデルを生成するように適合された前記第一ソフトウェア、前記特定の画像のインディシアを含む前記小規模モデル、
ｖｉ）前記プロセッサで動作するように適合された第二ソフトウェアを組み込む前記モバイル・コンピューティング・デバイス、
ｖｉｉ）前記第一ソフトウェアとネットワーク・インタフェースで接続するように適合され、さらに前記小規模モデルにアクセスするように適合された前記第二ソフトウェア、
ｖｉｉｉ）前記アクセスされた小規模モデルに対応するタグ・リストを生成するように適合された前記第二ソフトウェア、
ｉｘ）前記ストレージ・デバイスに格納されたデータベースを含む前記モバイル・コンピューティング・デバイス、
ｘ）前記インディシアに対応する前記画像と前記タグ・リストを関連付ける前記データベース内に記録を作成するように適合された前記第二ソフトウェア、
ｘｉ）第三ソフトウェアを組み込む前記モバイル・コンピューティング・デバイス、
ｘｉｉ）検索画面を前記ディスプレイ上に表示するように適合された前記第三ソフトウェア、
ｘｉｉｉ）検索文字列を受け取るように適合された前記検索画面、
ｘｉｖ）前記検索文字列を自然言語処理モジュールへ提出するように適合された前記第三ソフトウェア、
ｘｖ）前記検索文字列に基づきカテゴリ・リストを生成するように適合された前記自然言語処理モジュール、
ｘｖｉ）前記カテゴリ・リストに基づき前記データベースにクエリを行い、画像リストを受信するように適合された前記第三ソフトウェア、及び
ｘｖｉｉ）前記画像リストを前記ディスプレイ上に表示するように適合された前記第三ソフトウェア、
を備える、画像編成システム。
【請求項１４】
前記自然言語処理モジュールは、ソートされたカテゴリ・リストを返し、前記カテゴリ・リストは、距離メトリックによりソートされる、請求項１３の前記画像編成システム。
【請求項１５】
前記モバイル・コンピューティング・デバイスは、スマートフォン、タブレット・コンピュータ、またはウェアラブル・コンピュータである、請求項１３の前記画像編成システム。
【請求項１６】
前記ストレージ・デバイスは、フラッシュ・メモリである、請求項１３の前記画像編成システム。
【請求項１７】
前記モバイル・コンピューティング・デバイスは、スマートフォンであり、前記ストレージ・デバイスは、フラッシュ・メモリである、請求項１３の前記画像編成システム。
【請求項１８】
前記モバイル・コンピューティング・デバイスは、スマートフォンであり、前記ストレージ・デバイスは、ＳＤメモリ・カードである、請求項１３の前記画像編成システム。
【請求項１９】
前記ネットワーク・インタフェースは、無線ネットワーク・インタフェースである、請求項１３の前記画像編成システム。
【請求項２０】
前記無線ネットワーク・インタフェースは、８０２．１１無線ネットワーク・インタフェースである、請求項１９の前記画像編成システム。
【請求項２１】
前記無線ネットワーク・インタフェースは、セルラ式無線インタフェースである、請求項１９の前記画像編成システム。
【請求項２２】
前記データベースは、リレーショナル・データベース、オブジェクト指向データベース、ＮＯＳＱＬデータベース、またはＮｅｗＳＱＬデータベースである、請求項１３の前記画像編成システム。
【請求項２３】
前記画像リポジトリは、ファイル・システムを使用して実装される、請求項１３の前記画像編成システム。
【請求項２４】
前記小規模モデルは、画像のサムネイルである、請求項１３の前記画像編成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、「ＳＹＳＴＥＭ，ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＯＲＧＡＮＩＺＩＮＧ  ＰＨＯＴＯＧＲＡＰＨＳ  ＳＴＯＲＥＤ  ＯＮ  Ａ  ＭＯＢＩＬＥ  ＣＯＭＰＵＴＩＮＧ  ＤＥＶＩＣＥ」と題する、２０１４年６月２４日に出願され、カリフォルニア州マウンテン・ビューのＯｒｂｅｕｓ社に譲渡され、その全体を参照により本明細書に援用される、米国特許出願第１４／３１６，９０５号の利益及び優先権を主張する。本出願は、「ＳＹＳＴＥＭ，ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＳＣＥＮＥ  ＲＥＣＯＧＮＩＴＩＯＮ」と題する、２０１３年１１月７日に出願され、カリフォルニア州マウンテン・ビューのＯｒｂｅｕｓ社に譲渡され、その全体を参照により本明細書に援用され、「ＳＹＳＴＥＭ，ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＳＣＥＮＥ  ＲＥＣＯＧＮＩＴＩＯＮ」と題する、２０１２年１１月９日に出願され、カリフォルニア州マウンテン・ビューのＯｒｂｅｕｓ社に譲渡され、その全体を本明細書に援用される、米国特許出願第６１／７２４，６２８号に優先権を主張する、米国特許出願第１４／０７４，５９４に関する。また本出願は、２０１３年１１月７日に出願され、カリフォルニア州マウンテン・ビューのＯｒｂｅｕｓ社に譲渡され、その全体を参照により本明細書に援用され、「ＳＹＳＴＥＭ，ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＦＡＣＩＡＬ  ＲＥＣＯＧＮＩＴＩＯＮ」と題する、２０１３年６月２０日に出願され、カリフォルニア州マウンテン・ビューのＯｒｂｅｕｓ社に譲渡され、その全体を本明細書に援用される、米国特許出願第６１／８３７，２１０号に優先権を主張する、米国特許出願第１４／０７４，６１５号に関する。
【０００２】
本開示は、デジタル・カメラを組み込むモバイル・コンピューティング・デバイスに格納された画像の編成及びカテゴリ化に関する。さらに特に、本開示は、デジタル・カメラを組み込むモバイル・コンピューティング・デバイス上で動作するソフトウェア、及びクラウド・サービスを介して動作し画像を自動的にカテゴリ化するソフトウェアを組み込むシステム、方法及び装置に関する。
【背景技術】
【０００３】
画像認識は、コンピュータにより実行され、画像（写真またはビデオ・クリップのような）を解析し理解するプロセスである。一般的に画像は、感光性カメラを含む、センサにより生成される。各画像は、多数（数百万のような）の画素を含む。各画素は、画像内の特定の位置に対応する。加えて典型的に、各画素は、１つ以上のスペクトル帯、物理的手段（音波または電磁波の深度、吸収率または反射率のような）などでの光強度に対応する。典型的に画素は、色空間内のカラー・タプルとして表現される。たとえば、周知の赤、緑及び青（ＲＧＢ）色空間において、一般的に各色は、３つの値をもつタプルとして表現される。ＲＧＢタプルの３つの値は、一緒に加えられＲＧＢタプルにより表現された色を生成する赤、緑及び青を表す。
【０００４】
画素を記述するデータ（色のような）に加えて、また画像データは、画像内のオブジェクトを記述する情報を含むことができる。たとえば、画像内の人間の顔は、正面像、３０°の左側像または４５°の右側像であることができる。追加の実施例として、画像内のオブジェクトは、家屋または飛行機の代わりに、自動車である。画像を理解するには、画像データにより表現されたシンボル情報を解く必要がある。画像内の色、パターン、人間の顔、車両、航空機及び他のオブジェクト、シンボル、形態などを認識する特殊な画像認識技術を開発している。
【０００５】
またシーン理解または認識は、近年進んでいる。シーンとは、１つより多いオブジェクトを含む現実世界の周囲または環境のビューである。シーン画像は、さまざまなタイプの大多数の物理的なオブジェクト（人間、車両のような）を含むことが可能である。加えて、シーン内の個々のオブジェクトは、互いに、またはそれらの環境と相互作用する、またはこれらに関連する。たとえば、ビーチ・リゾートの写真は、３つのオブジェクト、空、海及びビーチを含むことができる。追加の実施例として、一般的に教室のシーンは、机、椅子、生徒及び教師を含む。シーン理解は、交通監視、侵入検知、ロボット開発、ターゲット広告などのような、さまざまな状況で非常に有益であることが可能である。
【０００６】
顔認識は、コンピュータによりデジタル画像（写真のような）またはビデオ・フレーム（複数を含む）内の人を識別または検証するプロセスである。顔検出及び認識技術は、たとえば、空港、通り、建物の入口、スタジアム、ＡＴＭ（現金自動預け払い機）、ならびに他の公的及び私的環境で広く展開される。通常、顔認識は、画像を解析して理解するコンピュータ上で動作するソフトウェア・プログラムまたはアプリケーションにより実行される。
【０００７】
画像内の顔を認識することは、画像データにより表現されたシンボル情報を解く必要がある。特殊な画像認識技術は、画像内の人間の顔を認識するために展開されている。たとえば、いくつかの顔認識アルゴリズムは、人間の顔に関する画像から特徴を抽出することで顔特徴を認識する。これらのアルゴリズムは、目、鼻、口、顎、耳などの相対的な位置、大きさ及び形状を分析することができる。次に抽出された特徴を使用して、特徴をマッチングすることで画像内の顔を識別する。
【０００８】
一般的に画像認識ならびに特に顔及びシーン認識は、近年進んでいる。たとえば、主成分分析（「ＰＣＡ」）アルゴリズム、線形判別分析（「ＬＤＡ」）アルゴリズム、一個抜き交差検証（「ＬＯＯＣＶ」）アルゴリズム、Ｋ最近傍（「ＫＮＮ」）アルゴリズム及び粒子フィルタ・アルゴリズムは、顔及びシーン認識のために展開され適用されている。これらの例示的なアルゴリズムの説明は、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ，Ａｎ  Ａｌｇｏｒｉｔｈｍｉｃ  Ｐｅｒｓｐｅｃｔｉｖｅ」、第３、８、１０、１５章、４７〜９０、１６７〜１９２、２２１〜２４５、３３３〜３６１頁、Ｍａｒｓｌａｎｄ、ＣＲＣプレス、２００９でより詳しく説明される。
【０００９】
近年の開発にもかかわらず、顔認識及びシーン認識は、困難な問題であることがわかっている。この困難の中核となるのは、画像の変化である。たとえば、同じ場所及び時間で、典型的に２つの異なるカメラは、レンズ及びセンサでの変化のような、カメラ自体の差により、異なる光強度及びオブジェクト形状の変化に関する２枚の写真を制作する。加えて、個々のオブジェクト間の空間的な関係及び相互作用は、無限個の変化を有する。さらに、１人の顔は、無限個の異なる画像にキャストされることができる。現在の顔認識技術は、顔画像を正面像から２０°超の角度で撮るときにあまり正確ではなくなる。追加の実施例として、現在の顔認識システムは、表情の変化に対処するためには有効ではない。
【００１０】
画像認識への従来のアプローチは、入力画像から画像特徴を導出すること、及び導出された画像特徴を既知の画像の画像特徴と比較することである。たとえば、顔認識への従来のアプローチは、入力画像から顔特徴を導出すること、及び導出された画像特徴を既知の画像の顔特徴と比較することである。これらの比較結果は、入力画像及び既知の画像のうちの１つの間のマッチングに影響する。一般的に顔またはシーンを認識する従来のアプローチは、認識処理効率のためにマッチング精度を犠牲にする、またはその逆である。
【００１１】
人々は、休暇中に特有の滞在、史跡への週末の訪問または家族のイベントについてのフォト・アルバムのような、フォト・アルバムを手作業で作成する。今日のデジタル世界において、手作業のフォト・アルバム作成プロセスは、時間がかかり退屈であることがわかる。スマートフォン及びデジタル・カメラのような、デジタル・デバイスは、通常大きな記憶容量を有する。たとえば、３２ギガバイト（「ＧＢ」）のストレージ・カードは、ユーザが数千枚の写真を撮ること、及び数時間のビデオを録画することを可能にする。ユーザは、自身の写真及びビデオを共有してどこでもアクセスすることができるようにソーシャル・ウェブサイト上（Ｆａｃｅｂｏｏｋ、Ｔｗｉｔｔｅｒなど）及びコンテンツ・ホスティング・サイト上（Ｄｒｏｐｂｏｘ及びＰｉｃａｓｓａなど）に頻繁にアップロードする。デジタル・カメラ・ユーザは、特定の基準に基づきフォト・アルバムを生成する自動システム及び方法を待望する。加えて、ユーザは、自身の写真を認識し、認識結果に基づきフォト・アルバムを自動的に生成するシステム及び方法を切望する。
【００１２】
モバイル・デバイスをより大きく信頼するので、ユーザは、今自身のモバイル・デバイス上でフォト・ライブラリ全体を維持することが多い。モバイル・デバイス上で利用可能なメモリを莫大かつ急速に増加させるにつれ、ユーザは、モバイル・デバイス上に数千、さらに数万枚の写真を格納することが可能である。このように大量の写真があるため、未編成の写真集の中から特定の写真を探すことは、ユーザにとって不可能とは言えないまでも、困難である。
【００１３】
開示されたシステム、方法及び装置の目的
したがって、モバイル・デバイス上で画像を編成するためのシステム、装置及び方法を提供することは、本開示の目的である。
【００１４】
本開示の別の目的は、クラウド・サービスにより決定されたカテゴリに基づきモバイル・デバイスで画像を編成するためのシステム、装置及び方法を提供することである。
【００１５】
本開示の別の目的は、ユーザがモバイル・コンピューティング・デバイスに格納された画像を探すことを可能にするためのシステム、装置及び方法を提供することである。
【００１６】
本開示の別の目的は、ユーザが検索文字列を使用してモバイル・コンピューティング・デバイスに格納された画像を探すことを可能にするためのシステム、装置及び方法を提供することである。
【００１７】
本開示の他の利点は、当業者には明らかであろう。しかしながら、システムまたは方法がすべての列挙された利点を達成することなく本開示を実施することが可能であること、及び保護された本開示が特許請求の範囲により定められることを理解するべきである。
【発明の概要】
【００１８】
一般的に言えば、さまざまな実施形態に従い、本開示は、モバイル・コンピューティング・デバイス上にある画像リポジトリからの画像を編成して取得するための画像編成システムを提供する。モバイル・コンピューティング・デバイスは、たとえば、スマートフォン、タブレット・コンピュータまたはウェアラブル・コンピュータであることが可能であり、プロセッサ、ストレージ・デバイス、ネットワーク・インタフェース及びディスプレイを含む。モバイル・コンピューティング・デバイスは、１つ以上のサーバ及び１つのデータベースを含むことが可能であるクラウド・コンピューティング・プラットフォームとインタフェースで接続することが可能である。
【００１９】
モバイル・コンピューティング・デバイスは、たとえば、モバイル・コンピューティング・デバイス上でファイル・システムを使用して、実装されることが可能である画像リポジトリを含む。またモバイル・コンピューティング・デバイスは、画像リポジトリ内の画像から小規模モデルを作成するために適合される第一ソフトウェアを含む。この小規模モデルは、たとえば、サムネイルまたは画像シグネチャであることが可能である。一般的に小規模モデルは、小規模モデルを作成した画像のインディシアを含む。次に小規模モデルは、モバイル・コンピューティング・デバイスからクラウド・プラットフォームへ送信される。
【００２０】
クラウド・プラットフォームは、小規模モデルを受信するように適合される第二ソフトウェアを含む。この第二ソフトウェアは、小規模モデルを小規模モデルから構築した画像のインディシアを抽出するように適合される。さらに第二ソフトウェアは、画像内で認識されたシーン・タイプ及び認識される任意の顔に対応する小規模モデルからタグ・リストを作成するように適合される。第二ソフトウェアは、作成されたタグ・リスト及び抽出されたインディシアを含むパケットを構築する。次にこのパケットは、モバイル・コンピューティング・デバイスへ返送される。
【００２１】
次にモバイル・コンピューティング・デバイス上で動作する第一ソフトウェアは、パケットからインディシア及びタグ・リストを抽出し、モバイル・コンピューティング・デバイス上のデータベース内でこのタグ・リストをインディシアと関連付ける。
【００２２】
次にユーザは、モバイル・コンピューティング・デバイス上で動作して画像リポジトリ内に格納された画像を検索する第三ソフトウェアを使用することが可能である。特に、ユーザは、自然言語プロセッサにより構文解析され、モバイル・コンピューティング・デバイス上でデータベースを検索するために使用される、検索文字列を提出することが可能である。この自然言語プロセッサは、順序付けられたタグ・リストを返すため、最も関連性の高いものから最も関連性の低いものへの順序で画像を表示することが可能である。
【００２３】
本開示の特有な特徴が行われ使用されることができる特許請求の範囲、本発明自体及び方式内で特に指摘されるが、本明細書の一部を形成する添付の図面と関連して行われる以下の説明を参照することでより良く理解されることができ、その中でいくつかの図を通して、同様の参照番号は、同様の部品を指す。
【図面の簡単な説明】
【００２４】
【図１】本開示に従い構築された顔認識システムの簡略化されたブロック図である。
【図２】本開示の教示に従い最終顔特徴を導出するプロセスを描写するフローチャートである。
【図３】本開示の教示に従い顔認識モデルを導出するプロセスを描写するフローチャートである。
【図４】本開示の教示に従い画像内の顔を認識するプロセスを描写するフローチャートである。
【図５】本開示の教示に従い画像内の顔を認識するプロセスを描写するフローチャートである。
【図６】本開示の教示に従い顔認識サーバ・コンピュータ及びクライアント・コンピュータが画像内の顔を共同して認識するプロセスを描写するシーケンス図である。
【図７】本開示の教示に従い顔認識サーバ・コンピュータ及びクライアント・コンピュータが画像内の顔を共同して認識するプロセスを描写するシーケンス図である。
【図８】本開示の教示に従い顔認識クラウド・コンピュータ及びクラウド・コンピュータが画像で顔を共同して認識するプロセスを描写するシーケンス図である。
【図９】本開示の教示に従い顔認識サーバ・コンピュータがソーシャル・メディア・ネットワーキング・ウェブ・ページに掲載された写真内の顔を認識するプロセスを描写するシーケンス図である。
【図１０】本開示の教示に従い顔認識コンピュータが顔認識をリファインする反復プロセスを描写するフローチャートである。
【図１１Ａ】本開示の教示に従い顔認識コンピュータがビデオ・クリップから顔認識モデルを導出するプロセスを描写するフローチャートである。
【図１１Ｂ】本開示の教示に従い顔認識コンピュータがビデオ・クリップ内の顔を認識するプロセスを描写するフローチャートである。
【図１２】本開示の教示に従い顔認識コンピュータが画像内の顔を検出するプロセスを描写するフローチャートである。
【図１３】本開示の教示に従い顔認識コンピュータが顔画像内の顔特徴位置を判定するプロセスを描写するフローチャートである。
【図１４】本開示の教示に従い顔認識コンピュータが２つの画像特徴の類似性を判定するプロセスを描写するフローチャートである。
【図１５】本開示の教示に従うクライアント・コンピュータの斜視図である。
【図１６】本開示に従い構築された画像処理システムの簡略化されたブロック図である。
【図１７】本開示の教示に従い画像処理コンピュータが画像を認識するプロセスを描写するフローチャートである。
【図１８Ａ】本開示の教示に従い画像処理コンピュータが画像のシーン・タイプを判定するプロセスを描写するフローチャートである。
【図１８Ｂ】本開示の教示に従い画像処理コンピュータが画像のシーン・タイプを判定するプロセスを描写するフローチャートである。
【図１９】本開示の教示に従い画像処理コンピュータが１セットの既知の画像から画像特徴及び重み付けを抽出するプロセスを描写するフローチャートである。
【図２０】本開示の教示に従い画像処理コンピュータ及びクライアント・コンピュータがシーン画像を共同して認識するプロセスを描写するシーケンス図である。
【図２１】本開示の教示に従い画像処理コンピュータ及びクライアント・コンピュータがシーン画像を共同して認識するプロセスを描写するシーケンス図である。
【図２２】本開示の教示に従い画像処理コンピュータ及びクラウド・コンピュータがシーン画像を共同して認識するプロセスを描写するシーケンス図である。
【図２３】本開示の教示に従い画像処理コンピュータがソーシャル・メディア・ネットワーキング・ウェブ・ページに掲載された写真内のシーンを認識するプロセスを描写するシーケンス図である。
【図２４】本開示の教示に従い画像処理コンピュータがウェブ・ビデオ・サーバにホストされたビデオ・クリップ内のシーンを認識するプロセスを描写するシーケンス図である。
【図２５】本開示の教示に従い画像処理コンピュータがシーン理解をリファインする反復プロセスを描写するフローチャートである。
【図２６】本開示の教示に従い画像処理コンピュータがシーン理解をリファインする反復プロセスを描写するフローチャートである。
【図２７】本開示の教示に従い画像処理コンピュータが画像のタグを処理するプロセスを描写するフローチャートである。
【図２８】本開示の教示に従い画像処理コンピュータがＧＰＳ座標に基づき地名を判定するプロセスを描写するフローチャートである。
【図２９】本開示の教示に従い画像処理コンピュータが画像上でシーン認識及び顔認識を実行するプロセスを描写するフローチャートである。
【図３０】本開示の教示に従い地図上に表示された写真で地図を示す２つのサンプル・スクリーンショットである。
【図３１】本開示の教示に従い画像処理コンピュータが写真検索結果に基づきフォト・アルバムを作成するプロセスを描写するフローチャートである。
【図３２】本開示の教示に従い画像処理コンピュータがフォト・アルバムを自動的に作成するプロセスを描写するフローチャートである。
【図３３】開示された画像編成システムの１部を実装するモバイル・コンピューティング・デバイスのシステム図である。
【図３４】開示された画像編成システムの１部を実装するクラウド・コンピューティング・プラットフォームのシステム図である。
【図３５Ａ】開示された画像編成システムの１部を実装するモバイル・コンピューティング・デバイス及びクラウド・コンピューティング・プラットフォーム上で動作するソフトウェア・コンポーネントのシステム図である。
【図３５Ｂ】開示された画像編成システムの１部を実装するためにモバイル・コンピューティング・デバイス上で動作するソフトウェア・コンポーネントのシステム図である。
【図３６Ａ】開示された画像編成システムの１部を実装するモバイル・コンピューティング・デバイス上で動作するプロセスのフローチャートである。
【図３６Ｂ】開示された画像編成システムの１部を実装するモバイル・コンピューティング・デバイス上で動作するプロセスのフローチャートである。
【図３７】開示された画像編成システムの１部を実装するクラウド・コンピューティング・プラットフォーム上で動作するプロセスのフローチャートである。
【図３８】開示された画像編成システムの１部を実装するモバイル・コンピューティング・デバイス及びクラウド・コンピューティング・プラットフォームの動作を描写するシーケンス図である。
【図３９】開示された画像編成システムの１部を実装するモバイル・コンピューティング・デバイス上で動作するプロセスのフローチャートである。
【図４０Ａ】ユーザからカスタム検索文字列及びエリア・タグを受け取るモバイル・コンピューティング・デバイス上で動作するプロセスのフローチャートである。
【図４０Ｂ】データベース内にカスタム検索文字列及びエリア・タグを格納するクラウド・コンピューティング・プラットフォーム上で動作するプロセスのフローチャートである。
【発明を実施するための形態】
【００２５】
図面及び特に図１に移り、１つ以上の画像内の顔を認識または識別するための顔認識システム１００を示す。このシステム１００は、画像、画像特徴、認識顔モデル（または略してモデル）及びラベルを格納するデータベース１０４に結合された顔認識サーバ・コンピュータ１０２を含む。１つのラベル（一意の番号または名前のような）は、人及び／またはこの人の顔を識別する。複数のラベルは、データベース１０４内でデータ構造により表現されることが可能である。コンピュータ１０２は、たとえば、プロセッサのインテルＸｅｏｎファミリの変種のいずれか、またはプロセッサのＡＭＤ  Ｏｐｔｅｒｏｎファミリの変種のいずれかのような、１つ以上のプロセッサを含む。加えて、コンピュータ１０２は、たとえば、ハード・ドライブのような、ギガビット・イーサネット・インタフェース、いくらかのメモリ容量、及びいくらかのストレージ容量のような、１つ以上のネットワーク・インタフェースを含む。１つの実装において、データベース１０４は、たとえば、多数の画像、これらの画像から導出された画像特徴及びモデルを格納する。さらにコンピュータ１０２は、インターネット１１０のような、ワイド・エリア・ネットワークに結合される。
【００２６】
本明細書で使用されるように、画像特徴は、一片の画像情報を意味し、典型的に画像に適用された動作（特徴抽出または特徴検出のような）の結果を指す。例示的な画像特徴は、色ヒストグラム特徴、ローカル・バイナリ・パターン（「ＬＢＰ」）特徴、マルチスケール・ローカル・バイナリ・パターン（「ＭＳ-ＬＢＰ」）特徴、勾配方向ヒストグラム（「ＨＯＧ」）及びスケール不変特徴量変換（「ＳＩＦＴ」）特徴である。
【００２７】
インターネット１１０経由で、コンピュータ１０２は、クライアント（またユーザと本明細書で言われる）１２０により使用されたクライアントまたは消費者コンピュータ１２２（図１５で描写されたデバイスのうちの１つであることが可能である）のような、さまざまなコンピュータから顔画像を受信する。図１５の各デバイスは、ハウジング、プロセッサ、ネットワーキング・インタフェース、ディスプレイ・スクリーン、いくらかのメモリ容量（８ＧＢ  ＲＡＭのような）及びいくらかのストレージ容量を含む。加えて、デバイス１５０２及び１５０４は、タッチ・パネルを各々含む。あるいは、コンピュータ１０２は、高速ユニバーサル・シリアル・バス（ＵＳＢ）・リンクのような、直接リンクを介して顔画像を取得する。コンピュータ１０２は、受信した画像を解析及び理解し、これらの画像内の顔を認識する。さらに、コンピュータ１０２は、画像認識モデル（または略してモデル）をトレーニングするために同じ人の顔を含むビデオ・クリップまたは画像バッチを取得または受信する。
【００２８】
さらに、顔認識コンピュータ１０２は、ウェブ・サーバ１１２及び１１４のような、インターネット１１０経由で他のコンピュータから画像を受信することができる。たとえば、コンピュータ１２２は、コンピュータ１０２へ、クライアント１２０のＦａｃｅｂｏｏｋのプロフィール写真（また写真及び絵と本明細書で交換可能に言われる）のような、顔画像へＵＲＬ（ユニフォーム・リソース・ロケータ）を送信する。これに応じて、コンピュータ１０２は、ウェブ・サーバ１１２から、ＵＲＬが指す画像を取得する。追加の実施例として、コンピュータ１０２は、ウェブ・サーバ１１４から、１セット（１つ以上を意味する）のフレームまたは静止画像を含む、ビデオ・クリップを要求する。ウェブ・サーバ１１４は、Ｄｒｏｐｂｏｘのような、ファイル及びストレージ・ホスティング・サービスにより提供された任意のサーバ（複数を含む）であることが可能である。さらに実施形態において、コンピュータ１０２は、ウェブ・サーバ１１２及び１１４をクロールし、写真及びビデオ・クリップのような、画像を取得する。たとえば、Ｐｅｒｌ言語で書き込まれたプログラムは、コンピュータ１０２上で実行され、画像を取得するためにクライアント１２０のＦａｃｅｂｏｏｋページをクロールすることが可能である。１つの実装において、クライアント１２０は、自身のＦａｃｅｂｏｏｋまたはＤｒｏｐｂｏｘアカウントにアクセスするためのパーミッションを提供する。
【００２９】
本教示の１つの実施形態において、画像内の顔を認識するために、顔認識コンピュータ１０２は、すべての顔認識ステップを実行する。別の実装において、クライアント-サーバ・アプローチを使用して顔認識を実行する。たとえば、クライアント・コンピュータ１２２がコンピュータ１０２に顔を認識するように要求するときに、クライアント・コンピュータ１２２は、画像から特定の画像特徴を生成し、生成された画像特徴をコンピュータ１０２へアップロードする。このような事例において、コンピュータ１０２は、画像を受信せずに、またはアップロードされた画像特徴を生成せずに顔認識を実行する。あるいは、コンピュータ１２２は、データベース１０４（コンピュータ１０２を介して直接的、または間接的のいずれか一方で）から所定の画像特徴及び／または他の画像特徴情報をダウンロードする。それに応じて、画像内の顔を認識するために、コンピュータ１２２は、顔認識を独立して実行する。このような事例において、コンピュータ１２２は、コンピュータ１０２に画像または画像特徴をアップロードすることを回避する。
【００３０】
さらに実装において、顔認識をクラウド・コンピューティング環境１５２内で実行する。クラウド１５２は、米国の各海岸及び西海岸の州のような、１つより多い地理的領域に分散される、多数の、及び異なるタイプのコンピューティング・デバイスを含むことができる。たとえば、別の顔認識サーバ１０６は、コンピュータ１２２によりアクセス可能である。サーバ１０２及び１０６は、並列顔認識を提供する。サーバ１０６は、画像、画像特徴、モデル、ユーザ情報などを格納するデータベース１０８にアクセスする。これらのデータベース１０４、１０８は、データの複製、バックアップ、インデックス作成などを支援する分散されたデータベースであることが可能である。１つの実装において、データベース１０４は、画像への参照（物理パス及びファイル名のような）を格納するが、物理画像は、データベース１０４以外に格納されたファイルである。このような事例において、本明細書で使用されるように、データベース１０４は、依然として画像を格納するとみなされる。追加の実施例として、クラウド１５２内のサーバ１５４、ワークステーション・コンピュータ１５６及びデスクトップ・コンピュータ１５８は、異なる州または国に物理的に設置され、コンピュータ１０２と共同して顔画像を認識する。
【００３１】
さらに実装において、サーバ１０２及び１０６の両方は、負荷分散デバイス１１８の基になり、それらの負荷に基づきサーバ１０２及び１０６間の顔認識タスク／要求を指示する。顔認識サーバ上の負荷は、たとえば、サーバが取り扱っている、または処理している現在の顔認識タスクの数として定義される。またこの負荷は、サーバのＣＰＵ（中央処理装置）負荷として定義されることが可能である。さらに他の実施例として、負荷分散デバイス１１８は、顔認識要求を取り扱うサーバをランダムに選択する。
【００３２】
図２は、顔認識コンピュータ１０２が最終的な顔特徴を導出するプロセス２００を描写する。２０２で、コンピュータ１０２上で動作するソフトウェア・アプリケーションは、たとえば、データベース１０４、クライアント・コンピュータ１２２またはウェブ・サーバ１１２若しくは１１４から画像を取得する。取得された画像は、プロセス２００についての入力画像である。２０４で、ソフトウェア・アプリケーションは、画像内で人間の顔を検出する。ソフトウェア・アプリケーションは、いくつかの技術を利用して、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｄｅｔｅｃｔｉｎｇ  Ｆａｃｅｓ  ｉｎ  Ｉｍａｇｅｓ：Ａ  Ｓｕｒｖｅｙ」、Ｍｉｎｇ-Ｈｓｕａｎ  Ｙａｎｇら、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｐａｔｔｅｒｎ  Ａｎａｌｙｓｉｓ  ａｎｄ  ｍａｃｈｉｎｅ  Ｉｎｔｅｌｌｉｇｅｎｃｅ、Ｖｏｌ．２４、Ｎｏ．１、２００２年１月に記述されるような、知識ベースのトップダウン方法、不変な顔特徴に基づくボトムアップ方法、テンプレート・マッチング方法及び外観ベースの方法のような、入力画像内の顔を検出することが可能である。
【００３３】
１つの実装において、ソフトウェア・アプリケーションは、１２００で図１２に示される、多相アプローチを使用して画像（２０２で取得された）内で顔を検出する。ここで図１２に移り、１２０２で、ソフトウェア・アプリケーションは、画像上で高速顔検出プロセスを実行し、顔が画像内に存在するかどうかを判定する。１つの実装において、高速顔検出プロセス１２００は、特徴のカスケードに基づく。高速顔検出方法の１つの実施例は、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｒａｐｉｄ  Ｏｂｊｅｃｔ  Ｄｅｔｅｃｔｉｏｎ  ｕｓｉｎｇ  ａ  Ｂｏｏｓｔｅｄ  Ｃａｓｃａｄｅ  ｏｆ  Ｓｉｍｐｌｅ  Ｆｅａｔｕｒｅｓ」、Ｐａｕｌ  Ｖｉｏｌａら、Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ  ２００１、ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ  Ｓｏｃｉｅｔｙ  Ｃｏｎｆｅｒｅｎｃｅ、Ｖｏｌ．１、２００１に記述されるような、カスケード接続検出プロセスである。カスケード接続検出プロセスは、ブーストされた単純な特徴のカスケードを使用する高速顔検出方法である。しかしながら、高速顔検出プロセスは、精度を犠牲にして速度を得る。その結果、例示的な実装は、多相検出方法を用いる。
【００３４】
１２０４で、ソフトウェア・アプリケーションは、１２０２で顔を検出するかどうかを判定する。そうではない場合に、１２０６で、ソフトウェア・アプリケーションは、画像上で顔認識を終了する。あるいは、１２０８で、ソフトウェア・アプリケーションは、ディープ・ラーニング・プロセスを使用して顔認識の第二フェーズを実行する。ディープ・ラーニング・プロセスまたはアルゴリズム、たとえば、深層信念ネットワークは、入力階層モデルを学習しようとする機械学習方法である。これらの層は、より高レベルの概念をより低レベルの概念から導出する別個のレベルの概念に対応する。さらにさまざまなディープ・ラーニング・アルゴリズムは、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｌｅａｒｎｉｎｇ  Ｄｅｅｐ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  ｆｏｒ  ＡＩ」、Ｙｏｓｈｕａ  Ｂｅｎｇｉｏ、Ｆｏｕｎｄａｔｉｏｎｓ  ａｎｄ  Ｔｒｅｎｄｓ  ｉｎ  Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ、Ｖｏｌ．２、Ｎｏ．１、２００９に記述される。
【００３５】
１つの実装において、最初にモデルは、これらのモデルを入力画像に使用または適用して顔が画像内に存在するかどうかを判定する前に、顔を含む１セットの画像からトレーニングされる。１セットの画像からモデルをトレーニングするため、ソフトウェア・アプリケーションは、１セットの画像からＬＢＰ特徴を抽出する。代替の実施形態において、異なる寸法の異なる画像特徴またはＬＢＰ特徴を１セットの画像から抽出する。次に畳み込み深層信念ネットワークで２層を含むディープ・ラーニング・アルゴリズムを抽出されたＬＢＰ特徴に適用し、新規の特徴を学習する。その後ＳＶＭ方法を使用し、学習された新規の特徴でモデルをトレーニングする。
【００３６】
次にトレーニングされたモデルを画像から学習された新規の特徴に適用し、画像内の顔を検出する。たとえば、深層信念ネットワークを使用して画像の新規の特徴を学習する。１つの実装において、１つまたは２つのモデルをトレーニングする。たとえば、１つのモデル（また「顔である」モデルと本明細書で言われる）を適用し、顔が画像内に存在するかどうかを判定することが可能である。顔であるモデルをマッチングする場合に、画像内で顔を検出する。追加の実施例として、別のモデル（また、「顔ではない」モデルと本明細書で言われる）をトレーニングして使用し、顔が画像内に存在しないかどうかを判定する。
【００３７】
１２１０で、ソフトウェア・アプリケーションは、１２０８で顔を検出するかどうかを判定する。そうではない場合に、１２０６で、ソフトウェア・アプリケーションは、この画像で顔認識を終了する。あるいは、１２１２で、ソフトウェア・アプリケーションは、画像で顔検出の第三フェーズを実行する。最初にモデルは、１セットのトレーニング画像から抽出されたＬＢＰ特徴からトレーニングされる。ＬＢＰ特徴を画像から抽出した後に、モデルを画像のＬＢＰ特徴に適用し、顔が画像内に存在するかどうかを判定する。またモデル及びＬＢＰ特徴は、それぞれ第三フェーズ・モデル及び特徴と本明細書で言われる。１２１４で、ソフトウェア・アプリケーションは、顔を１２１２で検出したかどうかを確認する。そうではない場合に、１２０６で、ソフトウェア・アプリケーションは、この画像での顔認識を終了する。あるいは、１２１６で、ソフトウェア・アプリケーションは、検出された顔を含む画像内の部分を識別し、これにマーク付けする。１つの実装において、顔部分（また顔ウィンドウと本明細書で言われる）は、矩形領域である。さらに実装において、顔ウィンドウは、異なる人々の異なる顔について、１００×１００画素のような、固定されたサイズを有する。さらに実装において、１２１６で、ソフトウェア・アプリケーションは、検出された顔の、顔ウィンドウの中点のような、中心点を識別する。１２１８で、ソフトウェア・アプリケーションは、顔が画像内に検出される、または存在することを示す。
【００３８】
図２に戻り、顔を入力画像内で検出した後、２０６で、ソフトウェア・アプリケーションは、目、鼻、口、頬、顎などの中点のような、重要な顔特徴点を判定する。さらに、重要な顔特徴点は、たとえば、顔の中点を含むことができる。さらに実装において、２０６で、ソフトウェア・アプリケーションは、重要な顔特徴の、サイズ及び輪郭のような、寸法を測定する。たとえば、２０６で、ソフトウェア・アプリケーションは、左目の頂点、底点、左点及び右点を測定する。１つの実装において、各点は、入力画像の、左上角部のような、１つの角部に関する１組の画素番号である。
【００３９】
顔特徴位置（顔特徴点及び／または寸法を意味する）を図１３で図示されるようなプロセス１３００により測定する。ここで図１３に移り、１３０２で、ソフトウェア・アプリケーションは、１セットのソース画像から１セットの顔特徴（目、鼻、口などのような）内の各顔特徴についての１セットのＬＢＰ特徴テンプレートを導出する。１つの実装において、１つ以上のＬＢＰ特徴をソース画像から導出する。各１つ以上のＬＢＰ特徴は、顔特徴に対応する。たとえば、１つの左目ＬＢＰ特徴は、ソース画像内の顔の左目を含む、１００×１００のような、画像領域（またＬＢＰ特徴テンプレート画像サイズと本明細書で言われる）から導出される。このような顔特徴について導出されたＬＢＰ特徴は、ＬＢＰ特徴テンプレートと本明細書で集合的に言われる。
【００４０】
１３０４で、ソフトウェア・アプリケーションは、各ＬＢＰ特徴テンプレートについて畳み込み値（「ｐ１」）を計算する。この値ｐ１は、たとえば、左目のような、対応する顔特徴がソース画像内の位置（ｍ，ｎ）に出現する確率を示す。１つの実装において、ＬＢＰ特徴テンプレートＦtについて、反復プロセスを使用して対応する値ｐ１を計算する。ｍt及びｎt  をＬＢＰ特徴テンプレートのＬＢＰ特徴テンプレート画像サイズとする。加えて、（ｕ，ｖ）をソース画像内の画素の座標または位置とする。（ｕ，ｖ）をソース画像の左上角部から計測する。各画像領域、（ｕ，ｖ）-（ｕ＋ｍt，ｖ＋ｎt）について、ソース画像内で、ＬＢＰ特徴Ｆsを導出する。次にＦt及びＦsの内積、ｐ（ｕ，ｖ）を計算する。ｐ（ｕ，ｖ）は、対応する顔特徴（左目のような）がソース画像内の位置（ｕ，ｖ）に出現する確率とみなされる。ｐ（ｕ，ｖ）の値を正規化することが可能である。次に（ｍ，ｎ）をａｒｇｍａｘ（ｐ（ｕ，ｖ））として測定する。ａｒｇｍａｘは、最大値点集合を表す。
【００４１】
通常、顔中心点（または別の顔の地点）に対する、口または鼻のような顔特徴の相対位置は、ほとんどの顔について同じである。したがって、各顔特徴は、対応する共通相対位置を有する。１３０６で、ソフトウェア・アプリケーションは、共通相対位置で、対応する顔特徴が検出された顔に出現する、または存在する顔特徴確率（「ｐ２」）を推定し測定する。一般的に、顔を含む画像内の特定の顔特徴の位置（ｍ，ｎ）は、確率分布ｐ２（ｍ，ｎ）に従う。そこで確率分布ｐ２（ｍ，ｎ）が２次元ガウス分布であり、顔特徴が存在する最も可能性の高い位置は、ガウス分布のピークが位置するところである。このような２次元ガウス分布の平均及び分散は、既知の１セットの顔画像での実証的な顔特徴位置に基づき確立されることが可能である。
【００４２】
１３０８で、検出された顔内の各顔特徴について、ソフトウェア・アプリケーションは、顔特徴確率及び対応するＬＢＰ特徴テンプレートの各畳み込み値を使用して各位置（ｍ，ｎ）についてのマッチング・スコアを計算する。たとえば、マッチング・スコアは、ｐ１（ｍ，ｎ）及びｐ２（ｍ，ｎ）の積、すなわち、ｐ１×ｐ２である。１３１０で、検出された顔の各顔特徴について、ソフトウェア・アプリケーションは、顔特徴の最高マッチング・スコアを決定する。１３１２で、検出された顔の各顔特徴について、ソフトウェア・アプリケーションは、最高マッチング・スコアに対応するＬＢＰ特徴テンプレートに対応する顔特徴位置を選択することで顔特徴位置を決定する。上記の実施例の事例において、対応する顔特徴の位置としてａｒｇｍａｘ（ｐ１（ｍ，ｎ）*ｐ２（ｍ，ｎ））をとる。
【００４３】
図２に戻り、重要な顔特徴の決定された地点及び／または寸法に基づき、２０８で、ソフトウェア・アプリケーションは、顔を複数の顔特徴部位、たとえば、左目、右目及び鼻に分ける。１つの実装において、各顔の部位は、１７×１７画素のような、固定されたサイズの長方形または正方形領域である。各顔特徴部位について、２１０で、ソフトウェア・アプリケーションは、１セットの画像特徴、たとえば、ＬＢＰまたはＨＯＧ特徴を抽出する。抽出されることが可能な別の画像特徴は、２１０で、ピラミッド変換ドメイン（「ＰＬＢＰ」）へ拡張されたＬＢＰである。階層的な空間ピラミッドのＬＢＰ情報をカスケード接続することで、ＰＬＢＰ記述子は、テクスチャ解像度の変化を考慮に入れる。ＰＬＢＰ記述子は、テクスチャ表現に有効である。
【００４４】
よく単一タイプの画像特徴は、画像から関連情報を得るために、または入力画像内の顔を認識するために十分ではない。代替の２つ以上の異なる画像特徴を画像から抽出する。一般的に２つ以上の異なる画像特徴は、単一の画像特徴ベクトルとして編成される。１つの実装において、多数（１０以上のような）の画像特徴は、顔特徴部位から抽出される。たとえば、１×１画素セル及び／または４×４画素セルに基づくＬＢＰ特徴は、顔特徴部位から抽出される。
【００４５】
各顔特徴部位について、２１２で、ソフトウェア・アプリケーションは、１セットの画像特徴をサブパート特徴に結合する。たとえば、１セットの画像特徴をＭ×１または１×Ｍベクトルに結合し、Ｍは、このセット内の画像特徴数である。２１４で、ソフトウェア・アプリケーションは、すべての顔特徴部位のＭ×１または１×Ｍベクトルを顔についての全特徴に結合する。たとえば、Ｎ（６のような正の整数）個の顔特徴部位があり、全特徴は、（Ｎ*Ｍ）×１ベクトルまたは１×（Ｎ*Ｍ）ベクトルである。本明細書で使用されるように、Ｎ*Ｍは、整数Ｎ及びＭの乗算積を表す。２１６で、ソフトウェア・アプリケーションは、全特徴で次元削減を実行し、入力画像内の顔について最終特徴を導出する。最終特徴は、全特徴の１サブセットの画像特徴である。１つの実装において、２１６で、ソフトウェア・アプリケーションは、全特徴にＰＣＡアルゴリズムを適用し、１サブセットの画像特徴を選択してこの１サブセットの画像特徴内の各画像特徴について画像特徴重み付けを導出する。画像特徴重み付けは、１サブセットの画像特徴に対応し、画像特徴重み付けメトリックを含む。
【００４６】
ＰＣＡは、本質的に高次元である１セットのデータをＨ次元に削減可能である単純な方法であり、Ｈは、ほとんどのより高次元のデータを含む超平面の次元数の推定値である。データ・セット内の各データ要素は、共分散行列の１セットの固有ベクトルにより表される。本教示に従い、１サブセットの画像特徴を選択し、全特徴の画像特徴を近似的に表す。１サブセットの画像特徴内の画像特徴のいくつかは、顔認識内の他のものより重要である可能性がある。さらにこのようにして、１セットの固有値は、画像特徴重み付けメトリック、すなわち、画像特徴距離メトリックを示す。ＰＣＡは、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ  Ｐｒｉｎｃｉｐａｌ  Ｃｏｍｐｏｎｅｎｔ  Ａｎａｌｙｓｉｓ」、Ｄａｖｉｄ  Ｂａｒｂｅｒ、２００４で記述される。
【００４７】
数学的に、ＰＣＡを大規模な１セットの入力画像に適用し、画像特徴距離メトリックを導出することが可能であるプロセスは、次のように表されることが可能である。
【００４８】
最初に、入力データの平均値（ｍ）及び共分散行列（Ｓ）を計算する。
【００４９】
【数１】
0006431934.tif 000002
【００５０】
最大固有値を含む共分散行列（Ｓ）の固有ベクトルｅ１，．．．，ｅＭを配置する。この行列Ｅ＝［ｅ１，．．．，ｅＭ］は、その列を含む最大固有ベクトルで構成される。
【００５１】
より高次の各データ点ｙμのより低次元な表現は、次の式で決定されることが可能である。
【００５２】
【数２】
0006431934.tif 000003
【００５３】
別の実装において、ソフトウェア・アプリケーションは、ＬＤＡを全特徴に適用し、１サブセットの画像特徴を選択して対応する画像特徴重み付けを導出する。さらに実装において、２１８で、ソフトウェア・アプリケーションは、最終特徴及び対応する画像特徴重み付けをデータベース１０４内に格納する。加えて、２１８で、ソフトウェア・アプリケーションは、最終特徴を入力画像内の顔を識別するラベルと関連付けることで最終特徴にラベル付けする。１つの実装において、関連付けは、リレーショナル・データベースを含む表内の記録により表現される。
【００５４】
図３を参照して、サーバ・コンピュータ１０２で動作するソフトウェア・アプリケーションにより実行されるモデル・トレーニング・プロセス３００を図示する。３０２で、ソフトウェア・アプリケーションは、クライアント１２０のような、既知の人の顔を含む１セットの異なる画像を取得する。たとえば、クライアント・コンピュータ１２２は、１セットの画像をサーバ１０２またはクラウド・コンピュータ１５４にアップロードする。追加の実施例として、クライアント・コンピュータ１２２は、サーバ１０２へ、サーバ１１２にホストされた１セットの画像を指す、１セットのＵＲＬをアップロードする。次に、サーバ１０２は、サーバ１１２から１セットの画像を取得する。各取得された画像について、３０４で、ソフトウェア・アプリケーションは、たとえば、プロセス２００の要素を実行することで最終特徴を抽出する。
【００５５】
３０６で、ソフトウェア・アプリケーションは、１セットの最終特徴に１つ以上のモデル・トレーニング・アルゴリズム（ＳＶＭのような）を実行し、顔認識について認識モデルを導出する。認識モデルは、顔をより正確に表現する。３０８で、認識モデルをデータベース１０４に格納する。加えて、３０８で、ソフトウェア・アプリケーションは、データベース１０４に、認識モデルと関連した顔を識別する、認識モデル及びラベル間の関連付けを格納する。換言すれば、３０８で、ソフトウェア・アプリケーションは、認識モデルにラベル付けする。１つの実装において、関連付けは、リレーショナル・データベース内の表での記録により表現される。
【００５６】
例示的なモデル・トレーニング・アルゴリズムは、Ｋ平均クラスタリング、サポート・ベクタ・マシン（「ＳＶＭ」）、メトリック・ラーニング、ディープ・ラーニング及びその他のものである。Ｋ平均クラスタリングは、観測値（すなわち、本明細書でモデル）を、各観測値が最も近い平均値を有するクラスタに属するｋ（正の整数）クラスタに分割する。さらにＫ平均クラスタリングの概念は、次の式により図示される。
【００５７】
【数３】
0006431934.tif 000004
【００５８】
１セットの観測値（ｘ1，ｘ2，．．．，ｘn）をｋセット｛Ｓ1，Ｓ2，．．．，Ｓk｝にパーティション化する。これらのｋセットは、クラスタ内の平方和を最小にするように決定される。通常、Ｋ平均クラスタリング方法は、２つのステップ、割り当てステップ及び更新ステップ間の反復方式で実行される。最初の１セットのｋ平均値ｍ1(1)，．．．，ｍk(1)の場合、２つのステップを以下で示す。
【００５９】
【数４】
0006431934.tif 000005
【００６０】
このステップ中に、各ｘpを厳密に１つのＳ(t)へ割り当てる。次のステップは、新規のクラスタ内の観測値の重心である新規の平均値を計算する。
【００６１】
【数５】
0006431934.tif 000006
【００６２】
１つの実装において、Ｋ平均クラスタリングを使用して、顔をグループ化し、間違った顔を削除する。たとえば、クライアント１２０は、顔を含む五十（５０）枚の画像をアップロードし、間違って、たとえば、誰かの顔を含む三（３）枚の画像をアップロードしたかもしれない。クライアント１２０の顔についての認識モデルをトレーニングするために、アップロードされた画像からの認識モデルをトレーニングするときに５０枚の画像から３枚の間違った画像を削除したい。追加の実施例として、クライアント１２０が異なる人々の多数の顔画像をアップロードするときに、Ｋ平均クラスタリングを使用して、これらの画像内に含まれた顔に基づき多数の画像をグループ化する。
【００６３】
ＳＶＭ方法を使用し、ＳＶＭ分類子をトレーニングする、または導出する。トレーニングされたＳＶＭ分類子は、ＳＶＭ決定関数、トレーニングされた閾値及び他のトレーニングされたパラメータにより識別される。ＳＶＭ分類子は、モデルのうちの１つと関連付けられ、これに対応する。ＳＶＭ分類子及び対応するモデルをデータベース１０４に格納する。
【００６４】
通常、ＫＮＮのような機械学習アルゴリズムは、２つの画像特徴が互いにどのくらい近いかを計測する距離メトリックに依存する。換言すれば、ユークリッド距離のような画像特徴距離は、一方の顔画像が他方の所定の顔画像のどのくらい近くにマッチングするかを計測する。学習されたメトリックは、距離メトリック学習プロセスから導出され、顔認識での性能及び精度を大幅に向上させることが可能である。１つのこのような学習された距離メトリックは、既知の画像に対する未知の画像の類似性を測定するマハラノビス距離である。たとえば、マハラノビス距離を使用して、入力顔画像が既知の人の顔画像にどのくらい近くにマッチングされるかを測定することが可能である。１グループの値の平均値のベクトルμ＝（μ1，μ2，．．．，μN）T、及び共分散行列Ｓの場合、マハラノビス距離を次の式で示す。
【００６５】
【数６】
0006431934.tif 000007
【００６６】
さらにさまざまなマハラノビス距離及び距離メトリック学習方法は、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｄｉｓｔａｎｃｅ  Ｍｅｔｒｉｃ  Ｌｅａｒｎｉｎｇ：Ａ  Ｃｏｍｐｒｅｈｅｎｓｉｖｅ  Ｓｕｒｖｅｙ」、Ｌｉｕ  Ｙａｎｇ、２００６年５月１９日に記述される。１つの実装において、図１４で示されるようなディープ・ラーニング・プロセス１４００を使用して、マハラノビス距離を学習または導出する。図１４に移り、１４０２で、サーバ１０２のようなコンピュータにより実行されたソフトウェア・アプリケーションは、入力として２つの画像特徴、Ｘ及びＹを取得または受信する。たとえば、Ｘ及びＹは、同じ既知の顔を含む２枚の異なる画像の最終特徴である。１４０４で、ソフトウェア・アプリケーションは、多層深層信念ネットワークに基づき、入力特徴Ｘ及びＹから新規の画像特徴を導出する。１つの実装において、１４０４で、深層信念ネットワークの第一層は、特徴Ｘ及びＹ間の差Ｘ-Ｙを使用する。
【００６７】
第二層で、特徴Ｘ及びＹの積ＸＹを使用する。第三層で、特徴Ｘ及びＹの畳み込みを使用する。顔画像をトレーニングすることから、これらの層についての重み付け及び多層深層信念ネットワークのニューロンをトレーニングする。ディープ・ラーニング・プロセスの終わりとして、カーネル関数を導出する。換言すれば、カーネル関数、Ｋ（Ｘ，Ｙ）は、ディープ・ラーニング・プロセスの出力である。上記のマハラノビス距離の式は、カーネル関数の１つの形式である。
【００６８】
１４０６で、ＳＶＭ方法のような、モデル・トレーニング・アルゴリズムを使用して、ディープ・ラーニング・プロセスの出力、Ｋ（Ｘ，Ｙ）でモデルをトレーニングする。次にトレーニングされたモデルは、２つの入力画像特徴Ｘ１及びＹ１のディープ・ラーニング処理、Ｋ（Ｘ１，Ｙ１）の特定の出力に適用され、２つの入力画像特徴を同じ顔から導出するかどうか、すなわち、それらが同じ顔を表示するかどうかを判定する。
【００６９】
モデル・トレーニング・プロセスは、１セットの画像で実行され、特定の顔についての最終または認識モデルを導出する。モデルが利用可能であると、それを使用して画像内の顔を認識する。さらに認識プロセスは、図４を参照して図示され、顔認識プロセス４００を示す。４０２で、サーバ１０２上で動作するソフトウェア・アプリケーションは、顔認識についての画像を取得する。この画像は、クライアント・コンピュータ１２２から受信される、またはサーバ１１２及び１１４から取得されることが可能である。あるいは、画像は、データベース１０４から取得される。さらに実装において、４０２で、顔認識についての画像のバッチを取得する。４０４で、ソフトウェア・アプリケーションは、データベース１０４から１セットのモデルを取得する。これらのモデルは、たとえば、モデル・トレーニング・プロセス３００から生成される。４０６で、ソフトウェア・アプリケーションは、プロセス２００を実行し、またはこれを実行するために別のプロセスまたはソフトウェア・アプリケーションを呼び出し、取得された画像から最終特徴を抽出する。取得された画像は、顔を含まず、プロセス４００は、４０６で終了する。
【００７０】
４０８で、ソフトウェア・アプリケーションは、各モデルを最終特徴に適用し、１セットの比較スコアを生成する。換言すれば、これらのモデルは、最終特徴で動作し、比較スコアを生成または計算する。４１０で、ソフトウェア・アプリケーションは、１セットの比較スコアから最高スコアを選択する。次に最高スコアを出力するモデルに対応する顔は、入力画像内の顔として認識される。換言すれば、４０２で取得された入力画像内の顔は、最高スコアに対応する、またはこれと関連するモデルにより識別されたものとして認識される。各モデルは、自然人の顔と関連する、またはこれでラベル付けされる。入力画像内の顔を認識するときに、次に入力画像は、認識された顔を識別するラベルでラベル付けされ、これと関連する。その結果、顔またはこの顔を含む画像にラベル付けすることは、最高スコアを有するモデルと関連したラベルと画像を関連付ける。この関連付け及び認識された顔を有する人の個人情報をデータベース１０４に格納する。
【００７１】
４１２で、ソフトウェア・アプリケーションは、最高スコアを有するモデルと関連したラベルで顔及び取得された画像にラベル付けする。１つの実装において、各ラベル及び関連付けは、リレーショナル・データベース内の表の記録である。４１０に戻り、選択された最高スコアは、非常に低いスコアである可能性がある。たとえば、顔は、取得されたモデルと関連した顔と異なり、最高スコアは、より低いスコアになりそうである。このような事例において、さらに実装において、最高スコアを所定の閾値と比較する。最高スコアが閾値を下回る場合に、４１４で、ソフトウェア・アプリケーションは、取得された画像内で顔を認識しないことを示す。
【００７２】
さらに実装において、４１６で、ソフトウェア・アプリケーションは、顔認識について取得された画像を正しく認識し、これにラベル付けするかどうかを確認する。たとえば、ソフトウェア・アプリケーションは、顔を正しく認識するかどうかについてクライアント１２０からユーザ確認を取得する。そうであれば、４１８で、ソフトウェア・アプリケーションは、最終特徴及びラベル（顔及び画像間の関連付け及び基になる人を意味する）をデータベース１０４内に格納する。そうでなければ、４２０で、ソフトウェア・アプリケーションは、たとえば、クライアント１２０から顔を基になる人と関連付ける新規のラベルを取得する。４１８で、ソフトウェア・アプリケーションは、最終特徴、認識モデル及び新規のラベルをデータベース１０４内に格納する。
【００７３】
次に格納された最終特徴及びラベルは、モデル・トレーニング・プロセス３００により使用され、モデルを改良して更新する。図１０を参照して例示的なリファイン及び補正プロセス１０００を示す。１００２で、ソフトウェア・アプリケーションは、クライアント１２０のような、既知の人の顔を有する入力画像を取得する。１００４で、ソフトウェア・アプリケーションは、プロセス４００のような顔認識を入力画像上で実行する。１００６で、ソフトウェア・アプリケーションは、たとえば、クライアント１２０から確認を求めることで、顔を正しく認識するかどうかを判定する。そうではない場合に、１００８で、ソフトウェア・アプリケーションは、入力画像にラベル付けし、この入力画像をクライアント１２０と関連付ける。１０１０で、ソフトウェア・アプリケーションは、モデル・トレーニング・プロセス３００を入力画像上で実行し、導出された認識モデル及びラベルをデータベース１０４内に格納する。さらに実装において、ソフトウェア・アプリケーションは、クライアント１２０の顔を含む他の既知の画像に加えて入力画像上でトレーニング・プロセス３００を実行する。顔を正しく認識し、またソフトウェア・アプリケーションは、１０１２で、入力画像にラベル付けすることができ、任意選択でトレーニング・プロセス３００を実行し、クライアント１２０についての認識モデルを強化する。
【００７４】
図４に戻り、顔認識プロセス４００は、プロセス３００からトレーニングされ生成された、画像特徴モデルに基づく。一般的にモデル・トレーニング・プロセス３００は、ＣＰＵサイクル及びメモリのような、大量の計算リソースを必要とする。このようにプロセス３００は、比較的時間がかかり、リソースの高価なプロセスである。実時間顔認識のような、特定の事例において、それは、より高速の顔認識プロセスにとって望ましい。１つの実装において、最終特徴及び／または全特徴は、それぞれ２１４及び２１６で抽出され、データベース１０４内に格納される。プロセス５００は、最終特徴または全特徴を使用して画像内の顔を認識し、図５を参照して示される。１つの実装において、プロセス５００は、サーバ１０２上で動作するソフトウェア・アプリケーションにより実行され、周知のＫＮＮアルゴリズムを利用する。
【００７５】
５０２で、ソフトウェア・アプリケーションは、たとえば、データベース１０４、クライアント・コンピュータ１２２またはサーバ１１２から顔認識についての顔を含む画像を取得する。さらに実装において、５０２で、ソフトウェア・アプリケーションは、顔認識についての画像のバッチを取得する。５０４で、ソフトウェア・アプリケーションは、データベース１０４から、最終特徴を取得する。あるいは、全特徴を取得し、顔認識のために使用する。各最終特徴は、既知の顔または人に対応する、またはこれを識別する。換言すれば、各最終特徴にラベル付けする。１つの実施形態において、最終特徴のみを顔認識のために使用する。あるいは、全特徴のみを使用する。５０６で、ソフトウェア・アプリケーションは、ＫＮＮアルゴリズムの整数Ｋについての値を設定する。１つの実装において、Ｋの値は、一（１）である。このような事例において、最近傍を選択する。換言すれば、５０２で取得された画像内で認識された顔として、データベース１０４内の既知の顔の最も近いマッチングを選択する。５０８で、ソフトウェア・アプリケーションは、画像から最終特徴を抽出する。全特徴を顔認識のために使用し、５１０で、ソフトウェア・アプリケーションは、画像から全特徴を導出する。
【００７６】
0006431934.tif 000008
【００７７】
本教示の代替の実施形態において、顔プロセス４００及び５００をクライアント-サーバまたはクラウド・コンピューティング・フレームワーク内で実行する。ここで図６及び７を参照して、２つのクライアント-サーバ・ベースの顔認識プロセスをそれぞれ６００及び７００で示す。６０２で、クライアント・コンピュータ１２２上で動作するクライアント・ソフトウェア・アプリケーションは、顔認識についての入力画像から１セットの全特徴を抽出する。入力画像は、クライアント・コンピュータ１２２のストレージ・デバイスからメモリ内にロードされる。さらに実装において、６０２で、クライアント・ソフトウェア・アプリケーションは、１セットの全特徴から１セットの最終特徴を抽出する。６０４で、クライアント・ソフトウェア・アプリケーションは、画像特徴をサーバ１０２にアップロードする。コンピュータ１０２上で動作するサーバ・ソフトウェア・アプリケーションは、６０６で、クライアント・コンピュータ１２２から１セットの画像特徴を受信する。
【００７８】
６０８で、サーバ・ソフトウェア・アプリケーションは、プロセス４００及び／または５００の要素を実行し、入力画像内の顔を認識する。たとえば、６０８で、サーバ・ソフトウェア・アプリケーションは、プロセス５００の要素５０４、５０６、５１２、５１４、５１６を実行し、顔を認識する。５１２で、サーバ・ソフトウェア・アプリケーションは、認識結果をクライアント・コンピュータ１２２に送信する。たとえば、この結果は、入力画像内に人間の顔がないこと、画像内の顔を認識しないこと、または顔を特定の人の顔として認識することを示すことが可能である。
【００７９】
図７で示されるような方法７００を参照して図示されるような別の実装において、クライアント・コンピュータ１２２は、ほとんどの処理を実行し、１つ以上の入力画像内の顔を認識する。７０２で、クライアント・コンピュータ１２２上で動作するクライアント・ソフトウェア・アプリケーションは、サーバ・コンピュータ１０２に既知の顔の最終特徴またはモデルについての要求を送信する。あるいは、クライアント・ソフトウェア・アプリケーションは、１つより多いデータ・カテゴリを要求する。たとえば、クライアント・ソフトウェア・アプリケーションは、既知の顔の最終特徴及びモデルを要求する。さらに、クライアント・ソフトウェア・アプリケーションは、特定の人々のみについてのこのようなデータを要求することが可能である。
【００８０】
７０４で、サーバ・ソフトウェア・アプリケーションは、この要求を受信し、要求されたデータをデータベース１０４から取得する。７０６で、サーバ・ソフトウェア・アプリケーションは、要求されたデータをクライアント・コンピュータ１２２に送信する。７０８で、クライアント・ソフトウェア・アプリケーションは、たとえば、最終特徴を顔認識についての入力画像から抽出する。入力画像をクライアント・コンピュータ１２２のストレージ・デバイスからメモリ内にロードする。７１０で、クライアント・ソフトウェア・アプリケーションは、プロセス４００及び／または５００の要素を実行し、入力画像内の顔を認識する。たとえば、７１０で、クライアント・ソフトウェア・アプリケーションは、プロセス５００の要素５０４、５０６、５１２、５１４、５１６を実行し、入力画像内の顔を認識する。
【００８１】
また顔認識プロセス４００または５００は、クラウド・コンピューティング環境１５２で実行されることが可能である。１つのこのような例示的な実装を図８で示す。８０２で、顔認識サーバ・コンピュータ１０２上で動作するサーバ・ソフトウェア・アプリケーションは、入力画像またはこの入力画像へのＵＲＬをクラウド・コンピュータ１５４、１５６または１５８上で動作するクラウド・ソフトウェア・アプリケーションに送信する。８０４で、クラウド・ソフトウェア・アプリケーションは、プロセス４００または５００の１部の、またはすべての要素を実行し、入力画像内の顔を認識する。８０６で、クラウド・ソフトウェア・アプリケーションは、認識結果をサーバ・ソフトウェア・アプリケーションに返す。たとえば、この結果は、入力画像内に人間の顔がないこと、画像内の顔を認識しないこと、または顔を特定の人の顔として認識することを示すことが可能である。
【００８２】
あるいは、クライアント・コンピュータ１２２は、クラウド・コンピュータ１５４のような、クラウド・コンピュータ１５４と通信及び共同し、画像またはビデオ・クリップ内の顔を認識するために要素７０２、７０４、７０６、７０８、７１０を実行する。さらに実装において、負荷分散機構を展開して使用し、サーバ・コンピュータ及びクラウド・コンピュータ間に顔認識要求を配信する。たとえば、ユーティリティ・ツールは、各サーバ・コンピュータ及びクラウド・コンピュータ上での処理負荷を監視し、サーバ・コンピュータを選択する、またはクラウド・コンピュータは、新規の顔認識要求またはタスクを提供する、より低い処理負荷を有する。さらに実装において、またモデル・トレーニング・プロセス３００は、クライアント-サーバまたはクラウド・アーキテクチャ内で実行される。
【００８３】
ここで図９を参照して、顔認識コンピュータ１０２がサーバ１１２または１１４のような、ソーシャル・メディア・ネットワーキング・サーバまたはファイル・ストレージ・サーバによりホストされ提供される写真画像またはビデオ・クリップ内の顔を認識するプロセス９００を説明するシーケンス図を示す。９０２で、クライアント・コンピュータ１２２上で動作するクライアント・ソフトウェア・アプリケーションは、Ｆａｃｅｂｏｏｋのようなソーシャル・メディア・ウェブサイトまたはＤｒｏｐｂｏｘのようなファイル・ストレージ・ホスティング・サイト上にホストされた写真またはビデオ・クリップで顔認識についての要求を出す。１つの実装において、さらにクライアント・ソフトウェア・アプリケーションは、アカウント・アクセス情報（ログイン・クレデンシャルのような）をソーシャル・メディア・ウェブサイトまたはファイル・ストレージ・ホスティング・サイトへ提供する。９０４で、サーバ・コンピュータ１０２上で動作するサーバ・ソフトウェア・アプリケーションは、サーバ１１２から写真またはビデオ・クリップを取得する。たとえば、サーバ・ソフトウェア・アプリケーションは、サーバ１１２上でクライアント１２２と関連したウェブ・ページをクロールし、写真を取得する。さらに実施例として、サーバ・ソフトウェア・アプリケーションは、ＨＴＴＰ（ハイパーテキスト・トランスファ・プロトコル）要求を介して写真またはビデオ・クリップを要求する。
【００８４】
９０６で、サーバ１１２は、サーバ１０２に写真またはビデオ・クリップを返す。９０８で、サーバ・ソフトウェア・アプリケーションは、取得された写真またはビデオ・クリップ上で、たとえば、プロセス３００、４００または５００を実行することで、顔認識を実行する。たとえば、プロセス３００を実行するとき、クライアント１２０の顔を記述するモデルまたは画像特徴を導出してデータベース１０４に格納する。９１０で、サーバ・ソフトウェア・アプリケーションは、認識結果または通知をクライアント・ソフトウェア・アプリケーションに返す。
【００８５】
ここで図１１を参照して、顔認識モデルをビデオ・クリップから導出するプロセス１１００Ａを示す。１１０２で、サーバ１０２上で動作するソフトウェア・アプリケーションは、顔認識について、静止ビデオ・フレームまたは画像のストリームまたはシーケンスを含む、ビデオ・クリップを取得する。１１０２で、さらにアプリケーションは、ビデオ・クリップから１セットの代表フレームまたは全フレームを選択し、モデルを導出する。１１０４で、ソフトウェア・アプリケーションは、プロセス２００のようなプロセスを実行し、顔を検出し、たとえば、選択されたセットのフレームの第一または第二フレームのような、第一フレームからこの顔の最終特徴を導出する。加えて、１１０４で、サーバ・アプリケーションは、検出された顔を含む第一フレーム内の顔領域またはウィンドウを識別する。たとえば、顔ウィンドウは、長方形状または正方形状である。
【００８６】
１１０６で、１セットの選択されたフレーム内の各他のフレームについて、サーバ・アプリケーションは、１１０４で識別された顔ウィンドウに対応する画像領域から最終特徴を抽出または導出する。たとえば、１１０４で識別された顔ウィンドウは、画素座標組（１０１，２４２）及び（３００，４３５）により示され、１１０６で、他のフレーム内の各対応する顔ウィンドウは、画素座標組（１０１，２４２）及び（３００，４３５）により画定される。さらに実装において、顔ウィンドウは、１１０４で識別された顔ウィンドウより大きい、または小さい。たとえば、１１０４で識別された顔ウィンドウは、画素座標組（１０１，２４２）及び（３００，４３５）により示され、他のフレーム内の各対応する顔ウィンドウは、画素座標組（９１，２３２）及び（３１０，４４５）により画定される。後者の２つの画素座標組は、１１０４の顔領域より大きい画像領域を画定する。１１０８で、サーバ・アプリケーションは、最終特徴でモデル・トレーニングを実行し、識別された顔の認識モデルを導出する。１１１０で、サーバ・アプリケーションは、データベース１０４内に認識された顔を含む人を示すモデル及びラベルを格納する。
【００８７】
ビデオ・クリップ内で顔を認識するプロセス１１００Ｂは、図１１を参照して図示される。１１５２で、サーバ１０２上で動作するソフトウェア・アプリケーションは、たとえば、データベース１０４から１セットの顔認識モデルを取得する。１つの実装において、またアプリケーションは、取得されたモデルと関連したラベルを取得する。１１５４で、アプリケーションは、顔認識について、静止ビデオ・フレームまたは画像のストリームまたはシーケンスを含む、ビデオ・クリップを取得する。１１５６で、アプリケーションは、ビデオ・クリップから１セットの代表フレームを選択する。１１５８で、取得されたモデルを使用して、アプリケーションは、各選択されたフレーム上で顔認識プロセスを実行し、顔を認識する。各認識された顔は、モデルに対応する。さらに、１１５８で、各認識された顔について、アプリケーションは、認識された顔に対応するモデルの関連したラベルと顔を関連付ける。１１６０で、アプリケーションは、選択されたフレームと関連したラベル間で最も高い頻度を有するラベルでビデオ・クリップ内の顔にラベル付けする。
【００８８】
図１６に移り、シーン画像を理解するための画像処理システム１６００を示す。１つの実装において、システム１６００は、システム１００の機能を実行することが可能であり、その逆も同様である。システム１６００は、画像（または画像ファイルへの参照）及び画像特徴を格納するデータベース１６０４に結合された画像処理コンピュータ１６０２を含む。１つの実装において、データベース１６０４は、たとえば、多数の画像及びこれらの画像から導出された画像特徴を格納する。さらに、画像は、ビーチ・リゾートまたは川のような、シーン・タイプによりカテゴリ化される。さらにコンピュータ１６０２は、インターネット１６１０のような、ワイド・エリア・ネットワークに結合される。インターネット１６１０経由で、コンピュータ１６０２は、クライアント１６２０により使用されたクライアント（消費者またはユーザ）・コンピュータ１６２２（図１５で示されるデバイスのうちの１つであることが可能である）のような、さまざまなコンピュータからシーン画像を受信する。あるいは、コンピュータ１６０２は、高速ＵＳＢリンクのような、直接リンクを介してシーン画像を取得する。コンピュータ１６０２は、受信したシーン画像を解析及び理解し、これらの画像のシーン・タイプを判定する。
【００８９】
さらに、画像処理コンピュータ１６０２は、ウェブ・サーバ１６０６及び１６０８から画像を受信することができる。たとえば、コンピュータ１６２２は、シーン画像（ウェブ・サーバ１６０６上にホストされた製品についての広告写真のような）へのＵＲＬをコンピュータ１６０２に送信する。それに応じて、コンピュータ１６０２は、ウェブ・サーバ１６０６から、ＵＲＬが指す画像を取得する。追加の実施例として、コンピュータ１６０２は、ウェブ・サーバ１６０８上にホストされた旅行ウェブサイトからビーチ・リゾートのシーン画像を要求する。本教示の１つの実施形態において、クライアント１６２０は、自身のコンピュータ１６２２上にソーシャル・ネットワーキング・ウェブ・ページをロードする。このソーシャル・ネットワーキング・ウェブ・ページは、ソーシャル・メディア・ネットワーキング・サーバ１６１２上にホストされた１セットの写真を含む。クライアント１６２０が１セットの写真内のシーンの認識を要求するときに、コンピュータ１６０２は、ソーシャル・メディア・ネットワーキング・サーバ１６１２から１セットの写真を取得し、写真上でシーン理解を実行する。追加の実施例として、クライアント１６２０が自身のコンピュータ１６２２のウェブ・ビデオ・サーバ１６１４上にホストされたビデオ・クリップをみるときに、コンピュータ１６０２にビデオ・クリップ内のシーン・タイプを認識することを要求する。その結果、コンピュータ１６０２は、ウェブ・ビデオ・サーバ１６１４から１セットのビデオ・フレームを取得し、ビデオ・フレーム上でシーン理解を実行する。
【００９０】
１つの実装において、シーン画像を理解するために、画像処理コンピュータ１６０２は、すべてのシーン認識ステップを実行する。別の実装において、クライアント-サーバ・アプローチを使用して、シーン認識を実行する。たとえば、コンピュータ１６２２がコンピュータ１６０２にシーン画像を理解するように要求するとき、コンピュータ１６２２は、シーン画像から特定の画像特徴を生成し、これらの生成された画像特徴をコンピュータ１６０２にアップロードする。このような事例において、コンピュータ１６０２は、シーン画像を受信せずに、またはアップロードされた画像特徴を生成せずにシーン理解を実行する。あるいは、コンピュータ１６２２は、データベース１６０４（コンピュータ１６０２を介して直接に、または間接に、のいずれか一方で）から所定の画像特徴及び／または他の画像特徴情報をダウンロードする。その結果、シーン画像を認識するために、コンピュータ１６２２は、画像認識を独立して実行する。このような事例において、コンピュータ１６２２は、コンピュータ１６０２上に画像または画像特徴をアップロードすることを回避する。
【００９１】
さらに実装において、シーン画像認識をクラウド・コンピューティング環境１６３２内で実行する。クラウド１６３２は、米国の各海岸及び西海岸の州のような、１つより多い地理的領域に配信される多数かつ異なるタイプのコンピューティング・デバイスを含むことができる。たとえば、クラウド１６３２内のサーバ１６３４、ワークステーション・コンピュータ１６３６及びデスクトップ・コンピュータ１６３８は、異なる州または国に物理的に設置され、コンピュータ１６０２と共同してシーン画像を認識する。
【００９２】
図１７は、画像処理コンピュータ１６０２が画像を解析及び理解するプロセス１７００を描写する。１７０２で、コンピュータ１６０２上で動作するソフトウェア・アプリケーションは、シーン認識についてクライアント・コンピュータ１６２２からネットワーク（インターネット１６１０のような）経由でソース・シーン画像を受信する。あるいは、ソフトウェア・アプリケーションは、ウェブ・サーバ１６０６または１６０８のような、別のネットワーク化されたデバイスからソース・シーン画像を受信する。よくシーン画像は、異なるオブジェクトの複数の画像を含む。たとえば、夕焼けの画像は、空に輝く太陽の画像及び風景の画像を含むことができる。このような事例において、別々に太陽及び風景にシーン理解を実行することが望ましい場合がある。その結果、１７０４で、ソフトウェア・アプリケーションは、ソース画像をシーン認識についての複数の画像にセグメント化するかどうかを判定する。そうである場合に、１７０６で、ソフトウェア・アプリケーションは、ソース・シーン画像を複数の画像にセグメント化する。
【００９３】
さまざまな画像セグメント化アルゴリズム（当業者に既知の正規化カットまたは他のアルゴリズムのような）を利用して、ソース・シーン画像をセグメント化することが可能である。１つのこのようなアルゴリズムは、本明細書とともに提出された資料を参照して本明細書で援用される、「Ａｄａｐｔｉｖｅ  Ｂａｃｋｇｒｏｕｎｄ  Ｍｉｘｔｕｒｅ  Ｍｏｄｅｌｓ  ｆｏｒ  Ｒｅａｌ-Ｔｉｍｅ  Ｔｒａｃｋｉｎｇ」、Ｃｈｒｉｓ  Ｓｔａｕｆｆｅｒ、Ｗ．Ｅ．Ｌ  Ｇｒｉｍｓｏｎ、Ｔｈｅ  Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  Ｌａｂｏｒａｔｏｒｙ、Ｍａｓｓａｃｈｕｓｅｔｔｓ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｔｅｃｈｎｏｌｏｇｙに記述される。また正規化カット・アルゴリズムは、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｎｏｒｍａｌｉｚｅｄ  Ｃｕｔｓ  ａｎｄ  Ｉｍａｇｅ  Ｓｅｇｍｅｎｔａｔｉｏｎ」、Ｊｉａｎｂｏ  Ｓｈｉ及びＪｉｔｅｎｄｒａ  Ｍａｌｉｋ、ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｐａｔｔｅｒｎ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｍａｃｈｉｎｅ  Ｉｎｔｅｌｌｉｇｅｎｃｅ、Ｖｏｌ．２２、Ｎｏ．８、２０００年８月に記述される。
【００９４】
たとえば、ソース・シーン画像は、ビーチ・リゾート写真であり、ソフトウェア・アプリケーションは、背景差分アルゴリズムを適用し、この写真を３枚の画像、空の画像、海の画像及びビーチの画像に分割することができる。さまざまな背景差分アルゴリズムは、本明細書とともに提出された資料を参照して本明細書で援用される、「Ｓｅｇｍｅｎｔｉｎｇ  Ｆｏｒｅｇｒｏｕｎｄ  Ｏｂｊｅｃｔｓ  ｆｒｏｍ  ａ  Ｄｙｎａｍｉｃ  Ｔｅｘｔｕｒｅｄ  Ｂａｃｋｇｒｏｕｎｄ  ｖｉａ  ａ  Ｒｏｂｕｓｔ  Ｋａｌｍａｎ  Ｆｉｌｔｅｒ」、Ｊｉｎｇ  Ｚｈｏｎｇ及びＳｔａｎ  Ｓｃｌａｒｏｆｆ、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｎｉｎｔｈ  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ（ＩＣＣＶ  ２００３）２-Ｖｏｌｕｍｅ  Ｓｅｔ  ０-７６９５-１９５０-４／０３、「Ｓａｌｉｅｎｃｙ、Ｓｃａｌｅ  ａｎｄ  Ｉｍａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ」、Ｔｉｍｏｒ  Ｋａｄｉｒ、Ｍｉｃｈａｅｌ  Ｂｒａｄｙ、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｊｏｕｒｎａｌ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ４５（２）、８３〜１０５、２００１、及び「ＧｒａｂＣｕｔ-Ｉｎｔｅｒａｃｔｉｖｅ  Ｆｏｒｅｇｒｏｕｎｄ  Ｅｘｔｒａｃｔｉｏｎ  ｕｓｉｎｇ  Ｉｔｅｒａｔｅｄ  Ｇｒａｐｈ  Ｃｕｔｓ」、Ｃａｒｓｔｅｎ  Ｒｏｔｈｅｒ、Ｖｌａｄｉｍｉｒ  Ｋｏｌｍｏｇｏｒｏｖ、Ａｎｄｒｅｗ  Ｂｌａｋｅ、ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｇｒａｐｈｉｃｓ（ＴＯＧ）、２００４に記述される。
【００９５】
その後、ソフトウェア・アプリケーションは、シーン理解について各３枚の画像を解析する。さらに実装において、空間パラメータ化プロセスを介して各画像セグメントを複数の画像ブロックに分割する。たとえば、複数の画像ブロックは、四（４）、十六（１６）または二百五十六（２５６）個の画像ブロックを含む。次にシーン理解方法を各コンポーネント画像ブロックで実行する。１７０８で、ソフトウェア・アプリケーションは、シーン理解についての入力画像として複数の画像のうちの１つを選択する。１７０４に戻り、ソフトウェア・アプリケーションが単一の画像としてソース・シーン画像を解析及び処理するように判定する場合に、１７１０で、ソフトウェア・アプリケーションは、シーン理解についての入力画像としてソース・シーン画像を選択する。１７１２で、ソフトウェア・アプリケーションは、データベース１６０４から距離メトリックを取得する。１つの実施形態において、距離メトリックは、１セット（またはベクトル）の画像特徴を示し、この１セットの画像特徴に対応する１セットの画像特徴重み付けを含む。
【００９６】
１つの実装において、多数（千以上のような）の画像特徴を画像から抽出する。たとえば、１×１画素セル及び／または４×４画素セルに基づくＬＢＰ特徴をシーン理解についての画像から抽出する。追加の実施例として、静止画像の推定深度は、画像内のオブジェクト表面及び画像を捕捉したセンサ間の物理的な距離を画定する。三角形分割は、推定深度特徴を抽出する周知の技術である。多くの場合、単一タイプの画像特徴は、画像から関連情報を得るために、または画像を認識するために十分ではない。代替に２つ以上の異なる画像特徴を画像から抽出する。一般的にこれらの２つ以上の異なる画像特徴を単一の画像特徴ベクトルとして編成する。すべての可能な特徴ベクトルのセットは、特徴空間を構成する。
【００９７】
距離メトリックを既知の１セットの画像から抽出する。この１セットの画像を使用して、入力画像についてのシーン・タイプ及び／またはマッチング画像を探す。この１セットの画像は、１つ以上のデータベース（データベース１６０４のような）内に格納されることが可能である。別の実装において、１セットの画像は、クラウド・コンピューティング環境（クラウド１６３２のような）に格納されアクセス可能である。加えて、１セットの画像は、たとえば、２００万枚の画像のような、多数の画像を含むことが可能である。さらに、１セットの画像は、シーン・タイプによりカテゴリ化される。１つの例示的な実装において、１セットの２００万枚の画像を、たとえば、ビーチ、砂漠、花、食べ物、森林、屋内、山、ナイトライフ、海、公園、レストラン、川、ロック・クライミング、雪、郊外、夕焼け、都市及び水のような、数十個のカテゴリまたはタイプに分割する。さらに、シーン画像は、１つより多いシーン・タイプでラベル付けされ、これらと関連することが可能である。たとえば、海-ビーチ・シーン画像は、ビーチ・タイプ及び海岸タイプの両方を含む。画像についての複数のシーン・タイプは、たとえば、人間の視聴者が提供した信頼水準により順序付けられる。
【００９８】
さらに距離メトリックの抽出は、図１９で示されるようにトレーニング・プロセス１９００を参照して図示される。ここで図１９を参照して、１９０２で、ソフトウェア・アプリケーションは、データベース１６０４から１セットの画像を取得する。１つの実装において、１セットの画像をシーン・タイプによりカテゴリ化する。１９０４で、ソフトウェア・アプリケーションは、１セットの画像内の各画像から１セットの未加工の画像特徴（色ヒストグラム及びＬＢＰ画像特徴のような）を抽出する。各セットの未加工の画像特徴は、同数の画像特徴を含む。加えて、各セットの未加工の画像特徴のうちの画像特徴は、同じタイプの画像特徴のものである。たとえば、複数セットの未加工の画像特徴のそれぞれの第一画像特徴は、同じタイプの画像特徴のものである。追加の実施例として、複数セットの未加工の画像特徴のそれぞれの最後の画像特徴は、同じタイプの画像特徴のものである。その結果、複数セットの未加工の画像特徴は、対応する複数のセットの画像特徴と本明細書で言われる。
【００９９】
一般的に各セットの未加工の画像特徴は、多数の特徴を含む。加えて、ほとんどの未加工の画像特徴は、高価な計算を招く、及び／またはシーン理解で意味がない。その結果、１９０６で、ソフトウェア・アプリケーションは、次元削減プロセスを実行し、シーン認識についての１サブセットの画像特徴を選択する。１つの実装において、１９０６で、ソフトウェア・アプリケーションは、ＰＣＡアルゴリズムを複数セットの未加工の画像特徴に適用し、対応する複数サブセットの画像特徴を選択し、これらの複数サブセットの画像特徴内の各画像特徴についての画像特徴重み付けを導出する。画像特徴重み付けは、画像特徴重み付けメトリックを含む。別の実装において、ソフトウェア・アプリケーションは、ＬＤＡを複数セットの未加工の画像特徴に適用し、複数サブセットの画像特徴を選択し、対応する画像特徴重み付けを導出する。
【０１００】
画像特徴重み付けメトリックは、選択されたサブセットの画像特徴から導出され、モデルと本明細書で言われる。複数のモデルは、複数セットの未加工の画像特徴から導出されることが可能である。通常異なるモデルは、異なる複数サブセットの複数の画像特徴及び／または１つの画像特徴によりトレーニングされる。したがって、いくつかのモデルは、他のモデルより複数セットの未加工の画像をより正確に表現することができる。その結果、１９０８で、交差検証プロセスを１セットの画像に適用し、シーン認識についての複数のモデルから１つのモデルを選択する。交差検証は、異なるモデルのシーン理解の結果を評価する技術である。交差検証プロセスは、１セットの画像を相補的なサブセットにパーティション化することを伴う。１サブセットの画像を検証のために使用しながら、この１サブセットの画像からシーン理解モデルを導出する。
【０１０１】
たとえば、交差検証プロセスを１セットの画像で実行するときに、第一モデル下でシーン認識精度は、九十パーセント（９０％）であるが、第二モデル下でシーン認識精度は、八十パーセント（８０％）である。このような事例において、第一モデルは、第二モデルより複数セットの未加工の画像をより正確に表現するため、第二モデルよりも選択される。１つの実施形態において、一つ抜き交差検証アルゴリズムを１９０８で適用する。
【０１０２】
１９１０で、ソフトウェア・アプリケーションは、データベース１６０４に、画像特徴メトリック及び複数サブセットの画像特徴を含む、選択されたモデルを格納する。別の実装において、１つのモデルのみをトレーニング・プロセス１９００で導出する。このような事例において、ステップ１９０８をトレーニング・プロセス１９００で実行しない。
【０１０３】
図１７に戻り、１７１４で、ソフトウェア・アプリケーションは、入力画像から、距離メトリックにより示された１セットの画像特徴に対応する１セットの入力画像特徴を抽出する。本明細書で使用されるように、１セットの入力画像特徴は、距離メトリックに対応すると言われる。１７１６で、ソフトウェア・アプリケーションは、画像シーン・タイプによりカテゴリ化される１セットの画像内の各画像についての１セットの画像特徴（プロセス１９００を使用して生成された）を取得する。各取得された複数セットの画像特徴は、距離メトリックにより示された１セットの画像特徴に対応する。１つの実装において、１セットの画像について取得された複数セットの画像特徴は、データベース１６０４またはクラウド１６３２内に格納される。
【０１０４】
１７１８で、距離メトリックを使用して、ソフトウェア・アプリケーションは、１セットの入力画像特徴及び１セットの画像についての各複数セットの画像特徴間の画像特徴距離を計算する。１つの実装において、２セットの画像特徴間の画像特徴距離は、距離メトリックに含まれた重み付けを適用した２つの画像特徴ベクトル間のユークリッド距離である。１７２０で、計算された画像特徴距離に基づき、ソフトウェア・アプリケーションは、入力画像についてシーン・タイプを判定し、入力画像へのシーン・タイプの割り当てをデータベース１６０４に書き込む。さらにこのような判定プロセスは、図１８Ａ及び１８Ｂを参照して図示される。
【０１０５】
図１８Ａに移り、正確な画像認識について１サブセットの画像を選択するプロセス１８００Ａを示す。１つの実装において、ソフトウェア・アプリケーションは、ＫＮＮアルゴリズムを利用し、１サブセットの画像を選択する。１８０２で、ソフトウェア・アプリケーションは、整数Ｋについての値（５または１０のような）を設定する。１８０４で、ソフトウェア・アプリケーションは、１７１６で計算されるＫの最短画像特徴距離及び対応するＫ画像を選択する。換言すれば、選択されたＫ画像は、トップＫマッチングであり、計算された画像特徴距離に関して入力画像に最も近い。１８０６で、ソフトウェア・アプリケーションは、Ｋ画像のシーン・タイプ（ビーチ・リゾートまたは山のような）を判定する。１８０８で、ソフトウェア・アプリケーションは、Ｋ画像が同じシーン画像タイプを有するかどうかを確認する。そうである場合に、１８１０で、ソフトウェア・アプリケーションは、Ｋ画像のシーン・タイプを入力画像に割り当てる。
【０１０６】
別の方法で、１８１２で、ソフトウェア・アプリケーションは、たとえば、自然言語処理技術を適用し、Ｋ画像のシーン・タイプをマージし、より抽象的なシーン・タイプを生成する。たとえば、Ｋ画像の半分は、海-ビーチ・タイプであり、もう半分は、湖-岸タイプであり、ソフトウェア・アプリケーションは、１８１２で岸タイプを生成する。自然言語処理は、本明細書とともに提出された資料を参照して本明細書で援用される、「Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ、ａ  Ｍｏｄｅｒｎ  Ａｐｐｒｏａｃｈ」、第２３章、６９１〜７１９頁、Ｒｕｓｓｅｌｌ、Ｐｒｅｎｔｉｃｅ  Ｈａｌｌ、１９９５に記述される。１８１４で、ソフトウェア・アプリケーションは、より抽象的なシーン・タイプを正常に生成したかどうかを確認する。そうである場合に、１８１６で、ソフトウェア・アプリケーションは、より抽象的なシーン・タイプを入力画像に割り当てる。さらに実装において、ソフトウェア・アプリケーションは、生成されたシーン・タイプで各Ｋ画像にラベル付けする。
【０１０７】
１８１４に戻り、より抽象的なシーン・タイプを正常に生成し、１８１８で、ソフトウェア・アプリケーションは、各判定されたシーン・タイプについてのＫ画像の画像数を計算する。１８２０で、ソフトウェア・アプリケーションは、計算された最大数の画像が属するシーン・タイプを識別する。１８２２で、ソフトウェア・アプリケーションは、識別されたシーン・タイプを入力画像に割り当てる。たとえば、Ｋは、整数十（１０）であり、八（８）枚のＫ画像はシーン・タイプ森林であり、残りの二（２）枚のＫ画像は、シーン・タイプ公園であり、計算された最大数の画像を有するシーン・タイプは、シーン・タイプ森林であり、計算された最大数は、八枚である。この事例において、ソフトウェア・アプリケーションは、シーン・タイプ森林を入力画像に割り当てる。さらに実装において、ソフトウェア・アプリケーションは、信頼水準をシーン割り当てに割り当てる。たとえば、上記で説明された実施例において、入力画像をシーン・タイプ森林で正確にラベル付けする信頼水準は、八十パーセント（８０％）である。
【０１０８】
あるいは、１７２０で、ソフトウェア・アプリケーションは、図１８Ｂを参照して図示されるように識別分類方法１８００Ｂを実行することで入力画像についてシーン・タイプを判定する。ここで図１８Ｂを参照して、１８３２で、ソフトウェア・アプリケーションは、データベース１６０４内に格納された各シーン・タイプについて、複数の画像から画像特徴を抽出する。たとえば、ビーチ・タイプの１万枚の画像を１８３２で処理する。このような各画像について抽出された画像特徴は、距離メトリックにより示された１セットの画像特徴に対応する。１８３４で、ソフトウェア・アプリケーションは、シーン・タイプの抽出された画像特徴及び距離メトリックで機械学習を実行し、周知のサポート・ベクタ・マシン（ＳＶＭ）のような、分類モデルを導出する。別の実装において、１８３２及び１８３４を画像トレーニング・プロセス中に別のソフトウェア・アプリケーションで実行する。
【０１０９】
別の実装において、１７２０で、ソフトウェア・アプリケーションは、方法１８００Ａ及び方法１８００Ｂの両方の要素を実行することで、入力画像についてのシーン・タイプを判定する。たとえば、ソフトウェア・アプリケーションは、方法１８００Ａを用い、トップＫのマッチング画像を選択する。その後、ソフトウェア・アプリケーションは、マッチングされたトップＫ画像上で方法１８００Ｂの、要素１８３６、１８３８、１８４０のような、いくつかの要素を実行する。
【０１１０】
１８３６で、導出された分類モデルを入力画像特徴に適用し、マッチング・スコアを生成する。１つの実装において、各スコアは、入力画像及び分類モデルの基になるシーン・タイプ間のマッチングの確率である。１８３８で、ソフトウェア・アプリケーションは、最高マッチング・スコアを有するシーン・タイプの数（八または十二のような）を選択する。１８４０で、ソフトウェア・アプリケーションは、選択されたシーン・タイプを整理し、入力画像について１つ以上のシーン・タイプを判定する。１つの実施形態において、ソフトウェア・アプリケーションは、自然言語処理技術を実行し、入力画像についてシーン・タイプを識別する。
【０１１１】
さらに実装において、ソース・シーン画像を複数の画像にセグメント化し、シーン理解を各複数の画像で実行し、ソフトウェア・アプリケーションは、各複数の画像について割り当てられたシーン・タイプを分析し、シーン・タイプをソース・シーン画像に割り当てる。たとえば、ソース・シーン画像を２枚の画像にセグメント化し、これら２枚の画像をそれぞれ海の画像及びビーチの画像として認識し、ソフトウェア・アプリケーションは、ソース・シーン画像を海−ビーチ・タイプとしてラベル付けする。
【０１１２】
本教示の代替の実施形態において、クライアント-サーバまたはクラウド・コンピューティング・フレームワークを使用してシーン理解プロセス１７００を実行する。ここで図２０及び２１を参照して、２つのクライアント-サーバ・ベースのシーン認識プロセスをそれぞれ２０００及び２１００で示す。２００２で、コンピュータ１６２２上で動作するクライアント・ソフトウェア・アプリケーションは、入力画像から、１７１４で抽出された１セットの入力画像特徴に対応する、１セットの画像特徴を抽出する。２００４で、クライアント・ソフトウェア・アプリケーションは、１セットの画像特徴をコンピュータ１６０２上で動作するサーバ・ソフトウェア・アプリケーションにアップロードする。２００６で、サーバ・ソフトウェア・アプリケーションは、たとえば、プロセス１７００の１７１２、１７１６、１７１８、１７２０を実行することで入力画像について１つ以上のシーン・タイプを判定する。２００８で、サーバ・ソフトウェア・アプリケーションは、１つ以上のシーン・タイプをクライアント・ソフトウェア・アプリケーションに送信する。
【０１１３】
図２１で示されるように方法２１００を参照して説明されるような別の実装において、クライアント・コンピュータ１６２２は、ほとんどの処理を実行し、シーン画像を認識する。２１０２で、クライアント・コンピュータ１６２２上で動作するクライアント・ソフトウェア・アプリケーションは、画像処理コンピュータ１６０２に、データベース１６０４内に格納された既知の画像についての距離メトリック及び複数セットの画像特徴についての要求を送信する。各複数セットの画像特徴は、１７１４で抽出された１セットの入力画像特徴に対応する。２１０４で、コンピュータ１６０２上で動作するサーバ・ソフトウェア・アプリケーションは、データベース１６０４から距離メトリック及び複数セットの画像特徴を取得する。２１０６で、サーバ・ソフトウェア・アプリケーションは、距離メトリック及び複数セットの画像特徴をクライアント・ソフトウェア・アプリケーションに返す。２１０８で、クライアント・ソフトウェア・アプリケーションは、入力画像から１セットの入力画像特徴を抽出する。２１１０で、クライアント・ソフトウェア・アプリケーションは、たとえば、プロセス１７００の１７１８、１７２０を実行することで、入力画像について１つ以上のシーン・タイプを判定する。
【０１１４】
またシーン画像理解プロセス１７００をクラウド・コンピューティング環境１６３２内で実行することが可能である。１つの例示的な実装を図２２で示す。２２０２で、画像処理コンピュータ１６０２上で動作するサーバ・ソフトウェア・アプリケーションは、入力画像またはこの入力画像へのＵＲＬをクラウド・コンピュータ１６３４上で動作するクラウド・ソフトウェア・アプリケーションに送信する。２２０４で、クラウド・ソフトウェア・アプリケーションは、プロセス１７００の要素を実行し、入力画像を認識する。２２０６で、クラウド・ソフトウェア・アプリケーションは、入力画像について判定されたシーン・タイプ（複数を含む）をサーバ・ソフトウェア・アプリケーションに返す。
【０１１５】
ここで図２３を参照して、コンピュータ１６０２がソーシャル・メディア・ネットワーキング・サーバ１６１２により提供されたウェブ・ページ内に含まれた写真画像内のシーンを認識するプロセス２３００を説明するシーケンス図を示す。２３０２で、クライアント・コンピュータ１６２２は、ソーシャル・メディア・ネットワーキング・サーバ１６１２から１つ以上の写真を含むウェブ・ページについて要求を出す。２３０４で、サーバ１６１２は、要求されたウェブ・ページをクライアント・コンピュータ１６２２に送信する。たとえば、クライアント１６２０がコンピュータ１６２２を使用してＦａｃｅｂｏｏｋページ（ホーム・ページのような）にアクセスするときに、コンピュータ１６２２は、ページ要求をＦａｃｅｂｏｏｋサーバに送信する。あるいは、Ｆａｃｅｂｏｏｋサーバは、クライアント１６２０の認証及び承認に成功するとクライアントのホーム・ページを送り返す。クライアント１６２０がコンピュータ１６０２にウェブ・ページ内に含まれた写真内のシーンを認識するように要求するとき、クライアント１６２０は、たとえば、ウェブ・ページ上のＵＲＬまたはインターネット・ブラウザ・プラグイン・ボタンをクリックする。
【０１１６】
ユーザ要求に応答して、２３０６で、クライアント・コンピュータ１６２２は、コンピュータ１６０２に写真内のシーンを認識するように要求する。１つの実装において、要求２３０６は、写真へのＵＲＬを含む。別の実装において、要求２３０６は、写真のうちの１枚以上を含む。２３０８で、コンピュータ１６０２は、サーバ１６１２から写真を要求する。２３１０で、サーバ１６１２は、要求された写真を返す。２３１２で、コンピュータ１６０２は、方法１７００を実行し、写真内のシーンを認識する。２３１４で、コンピュータ１６０２は、クライアント・コンピュータ１６２２に各写真についてマッチングされた画像の認識されたシーン・タイプ及び／または識別を送信する。
【０１１７】
図２４を参照して、コンピュータ１６０２がウェブ・ビデオ・クリップ内の１つ以上のシーンを認識するプロセス２４００を説明するシーケンス図を示す。２４０２で、コンピュータ１６２２は、ウェブ・ビデオ・クリップ（ＹｏｕＴｕｂｅ．ｃｏｍサーバ上に投稿されたビデオ・クリップのような）への要求を送信する。２４０４で、ウェブ・ビデオ・サーバ１６１４は、ビデオ・クリップのビデオ・フレームまたはビデオ・クリップへのＵＲＬをコンピュータ１６２２に返す。ＵＲＬをコンピュータ１６２２に返し、次にコンピュータ１６２２は、ＵＲＬが指示するウェブ・ビデオ・サーバ１６１４または別のウェブ・ビデオ・サーバからビデオ・クリップのビデオ・フレームを要求する。２４０６で、コンピュータ１６２２は、コンピュータ１６０２にウェブ・ビデオ・クリップ内の１つ以上のシーンを認識するように要求する。１つの実装において、要求２４０６は、ＵＲＬを含む。
【０１１８】
２４０８で、コンピュータ１６０２は、ウェブ・ビデオ・サーバ１６１４から１つ以上のビデオ・フレームを要求する。２４１０で、ウェブ・ビデオ・サーバ１６１４は、ビデオ・フレームをコンピュータ１６０２に返す。２４１２で、コンピュータ１６０２は、ビデオ・フレームのうちの１つ以上で方法１７００を実行する。１つの実装において、コンピュータ１６０２は、各ビデオ・フレームを静止画像として扱い、６個のビデオ・フレームのような、複数のビデオ・フレーム上でシーン認識を実行する。コンピュータ１６０２は、処理されたビデオ・フレームの特定の割合（５０％のような）でシーン・タイプを認識し、認識されたシーン・タイプをビデオ・フレームのシーン・タイプと仮定する。さらに、認識されたシーン・タイプをビデオ・フレームのインデックス範囲と関連付ける。２４１４で、コンピュータ１６０２は、認識されたシーン・タイプをクライアント・コンピュータ１６２２に送信する。
【０１１９】
さらに実装において、データベース１６０４は、シーン・タイプでラベル付けまたはカテゴリ化されない１セットの画像を含む。このようなカテゴリ化されない画像を使用して、シーン理解をリファイン及び改良することが可能である。図２５は、ソフトウェア・アプリケーションまたは別のアプリケーション・プログラムが１つの例示的な実装において、ＰＣＡアルゴリズムを使用して、１７１２で取得された距離メトリックをリファインする反復プロセス２５００を図示する。２５０２で、ソフトウェア・アプリケーションは、入力画像として、たとえば、データベース１６０４から、ラベル付けされない、または割り当てられない画像を取得する。２５０４で、入力画像から、ソフトウェア・アプリケーションは、１７１２で取得された距離メトリックに対応する、１セットの画像特徴を抽出する。２５０６で、ソフトウェア・アプリケーションは、２５０４で抽出された距離メトリック及び１セットの画像特徴を使用して入力画像の画像特徴を再構築する。このような表現は、次のように表されることが可能である。
【０１２０】
【数７】
0006431934.tif 000009
【０１２１】
２５０８で、ソフトウェア・アプリケーションは、入力画像及び２５０６で構築された表現間の再構築エラーを計算する。再構築エラーは、次のように表現されることが可能である。
【０１２２】
【数８】
0006431934.tif 000010
【０１２３】
そこでλM+1からλNは、図４のプロセス１９００を実行する際に破棄された固有値を表現し、距離メトリックを導出する。
【０１２４】
２５１０で、ソフトウェア・アプリケーションは、再構築エラーが所定の閾値を下回るかどうかを確認する。そうである場合に、ソフトウェア・アプリケーションは、２５１２で入力画像にシーン理解を実行し、２５１４で認識されたシーン・タイプを入力画像に割り当てる。さらに実装において、２５１６で、ソフトウェア・アプリケーションは、ラベル付けされた画像として入力画像に関して再びトレーニング・プロセス１９００を実行する。その結果、改良された距離メトリックを生成する。２５１０に戻り、再構築エラーは、所定の閾値内になく、２５１８で、ソフトウェア・アプリケーションは、入力画像についてシーン・タイプを取得する。たとえば、ソフトウェア・アプリケーションは、入力デバイスまたはデータ・ソースから入力画像についてのシーン・タイプの表示を受信する。その後、２５１４で、ソフトウェア・アプリケーションは、取得されたシーン・タイプで入力画像にラベル付けする。
【０１２５】
図２６を参照して、代替の反復シーン理解プロセス２６００を示す。このプロセス２６００は、１つまたは複数の画像でソフトウェア・アプリケーションにより実行され、シーン理解を最適化することが可能である。２６０２で、ソフトウェア・アプリケーションは、既知のシーン・タイプを含む入力画像を取得する。１つの実装において、入力画像についての既知のシーン・タイプは、人間のオペレータにより提供される。たとえば、人間のオペレータは、キーボード及び表示画面のような、入力デバイスを使用して入力画像についての既知のシーン・タイプを入力または設定する。あるいは、入力画像についての既知のシーン・タイプをデータベースのようなデータ・ソースから取得する。２６０４でソフトウェア・アプリケーションは、シーン理解を入力画像上で実行する。２６０６で、ソフトウェア・アプリケーションは、既知のシーン・タイプが認識されたシーン・タイプと同じであるかどうかを確認する。そうである場合に、ソフトウェア・アプリケーションは、２６０２に移行し、次の入力画像を取得する。そうではない場合に、２６０８で、ソフトウェア・アプリケーションは、既知のシーン・タイプで入力画像にラベル付けする。２６１０で、ソフトウェア・アプリケーションは、シーン・タイプでラベル付けされた入力画像に関して、再びトレーニング・プロセス１９００を実行する。
【０１２６】
デジタル写真は、多くの場合に１セットのメタデータ（写真についてのデータを意味する）を含む。たとえば、デジタル写真は、次のメタデータ、題、件名、著作者、取得日、著作権、写真撮影時の時刻及び日付の作成時刻、焦点距離（４ｍｍのような）、３５ｍｍ焦点距離（３３のような）、写真の寸法、水平解像度、垂直解像度、ビット深度（２４のような）、色表現（ｓＲＧＢのような）、カメラ・モデル（ｉＰｈｏｎｅ５のような）、Ｆストップ、露出時間、ＩＳＯ速度、輝度、サイズ（２．０８ＭＢのような）、ＧＰＳ（全地球測位システム）緯度（４２；８；３．０００００００００００４２６のような）、ＧＰＳ経度（８７；５４；８．９９９９９９９９９９１２のような）、及びＧＰＳ高度（１９８．３６６７３７７３９８７２０６のような）を含む。
【０１２７】
またデジタル写真は、メタデータとして写真内に埋め込まれた１つ以上のタグを含むことが可能である。これらのタグは、写真の特性を記述して示す。たとえば、「家族」タグは、この写真が家族写真であることを示し、「結婚式」タグは、この写真が結婚式の写真であることを示し、「夕焼け」タグは、写真が夕焼けシーン写真であることを示し、「サンタ・モニカ・ビーチ」タグは、この写真がサンタ・モニカ・ビーチで撮られたことなどを示す。またＧＰＳ緯度、経度及び高度は、写真撮影時にカメラ及び通常写真内のオブジェクトの地理的位置（または略して地理位置）を識別するジオタグと言われる。ジオタグを含む写真またはビデオは、ジオタグ付きであると言われる。別の実装において、ジオタグは、写真内に埋め込まれたタグのうちの１つである。
【０１２８】
サーバ１０２、１０６、１６０２または１６０４上で動作する、サーバ・ソフトウェア・アプリケーションが写真のアルバム（またスマート・アルバムと本明細書で言われる）を自動的に生成するプロセスを図２７の２７００で示す。またプロセス２７００がクラウド・コンピュータ１６３４、１６３６、１６３８のような、クラウド・コンピュータにより実行されることが可能であることに留意するべきである。ユーザ１２０が１セットの写真をアップロードするときに、２７０２で、サーバ・ソフトウェア・アプリケーションは、コンピュータ１２２（ｉＰｈｏｎｅ５のような）から１枚以上の写真を受信する。アップロードすることは、サーバ１０２により提供されたウェブ・ページ・インタフェース、またはコンピュータ１２２上で動作するモバイル・ソフトウェア・アプリケーションを使用して、クライアント１２０により開始されることが可能である。あるいは、ウェブ・ページ・インタフェースまたはモバイル・ソフトウェア・アプリケーションを使用して、ユーザ１２０は、サーバ１１２上にホストされた写真を指すＵＲＬを提供する。２７０２で、次にサーバ・ソフトウェア・アプリケーションは、サーバ１１２から写真を取得する。
【０１２９】
２７０４で、サーバ・ソフトウェア・アプリケーションは、各受信または取得した写真からメタデータ及びタグを抽出または取得する。たとえば、コンピュータ・プログラミング言語Ｃ＃で書き込まれた一片のソフトウェア・プログラム・コードを使用して、写真からメタデータ及びタグを読み出すことが可能である。任意選択で、２７０６で、サーバ・ソフトウェア・アプリケーションは、取得した写真のタグを正規化する。たとえば、「夕闇」及び「たそがれ」タグの両方を「夕焼け」に変更する。２７０８で、サーバ・ソフトウェア・アプリケーションは、各写真について追加のタグを生成する。たとえば、位置タグを写真内のジオタグから生成する。さらにこの位置タグ生成プロセスは、図２８を参照して２８００で図示される。２８０２で、サーバ・ソフトウェア・アプリケーションは、ジオタグ内のＧＰＳ座標をこのＧＰＳ座標に対応する位置を要求するマップ・サービス・サーバ（Ｇｏｏｇｌｅ  Ｍａｐサービスのような）に送信する。たとえば、この位置は、「サンタ・モニカ・ビーチ」または「オヘア空港」である。２８０４で、サーバ・ソフトウェア・アプリケーションは、マッピングされた位置の名前を受信する。次に位置の名前は、写真についての位置タグとみなされる。
【０１３０】
追加の実施例として、２７０８で、サーバ・ソフトウェア・アプリケーションは、各写真上で実行されるシーン理解及び／または顔認識の結果に基づきタグを生成する。さらにタグ生成プロセスは、図２９を参照して２９００で図示される。２９０２で、サーバ・ソフトウェア・アプリケーションは、２７０２で取得された各写真上でシーン理解を実行する。たとえば、サーバ・ソフトウェア・アプリケーションは、プロセス１７００、１８００Ａ及び１８００Ｂのステップを実行し、各写真のシーン・タイプ（ビーチ、夕焼けなどのような）を判定する。次にシーン・タイプは、基になる写真についての追加のタグ（すなわち、シーン・タグ）として使用される。さらに実装において、写真作成時刻を使用して、シーン理解を支援する。たとえば、シーン・タイプをビーチであると判定し、写真の作成時刻がＰＭ５：００であるときに、ビーチ及び夕焼けビーチの両方は、写真のシーン・タイプであることが可能である。追加の実施例として、同じ位置または構図の夕闇シーン写真及び夕焼けシーン写真は、非常に類似しているように見える可能性がある。このような事例において、写真作成時刻は、シーン・タイプ、すなわち、夕闇シーンまたは夕焼けシーンを判定することを支援する。
【０１３１】
さらに写真作成時刻を使用してシーン・タイプ判定で支援するために、写真の作成時刻の日付及び地理位置は、シーン・タイプを判定する際に検討される。たとえば、太陽は、その年の異なる季節に異なる時間で空の視界から消える。さらに、夕焼けの時間は、異なる位置で異なる。さらに地理位置は、他の方式でシーン理解の際に支援することが可能である。たとえば、大きな湖の写真及び海の写真は、非常に類似してみえる可能性がある。このような事例において、写真の地理位置を使用して、湖の写真を海の写真と区別する。
【０１３２】
さらに実装において、２９０４で、サーバ・ソフトウェア・アプリケーションは、顔認識を実行し、顔を認識して各写真内の個人の表情を判定する。１つの実装において、異なる顔画像（笑顔、怒りなどのような）を異なるタイプのシーンとして見る。サーバ・ソフトウェア・アプリケーションは、各写真でシーン理解を実行し、各写真内の感情を認識する。たとえば、サーバ・ソフトウェア・アプリケーションは、方法１９００を特定の表情または感情の１セットのトレーニング画像上で実行し、この感情についてのモデルを導出する。各タイプの感情について、複数のモデルを導出する。次に複数のモデルは、方法１７００を実行することでテスト画像に対して適用される。次に最高のマッチングまたは認識結果を有するモデルは、特定の感情で選択され、これと関連する。このようなプロセスは、各感情について実行される。
【０１３３】
２９０４で、さらにサーバ・ソフトウェア・アプリケーションは、感情タグを各写真に追加する。たとえば、写真の表情が笑顔であるとき、サーバ・ソフトウェア・アプリケーションは、「笑顔」タグを写真に追加する。「笑顔」タグは、表情または感情タイプ・タグである。
【０１３４】
図２７に戻り、さらに他の実施例として、２７０８で、サーバ・ソフトウェア・アプリケーションは、タイミング・タグを生成する。たとえば、写真の作成時刻が７月４日または１２月２５日であるとき、次に「７月４日」タグまたは「クリスマス」タグを生成する。１つの実装において、生成されたタグを写真ファイル内に書き込まない。あるいは、写真ファイルを追加のタグと変更する。さらに実装において、２７１０で、サーバ・ソフトウェア・アプリケーションは、ユーザ１２０が入力したタグを取得する。たとえば、サーバ・ソフトウェア・アプリケーションは、ユーザ１２０が新規のタグを入力することで写真にタグ付けすることを可能にするウェブ・ページ・インタフェースを提供する。２７１２で、サーバ・ソフトウェア・アプリケーションは、各写真についてのメタデータ及びタグをデータベース１０４内に保存する。サーバ・ソフトウェア・アプリケーションが各写真の各片のメタデータをデータベース１０４内に書き込むことができないことに留意するべきである。換言すれば、サーバ・ソフトウェア・アプリケーションは、写真メタデータをデータベース１０４内に選択的に書き込むことができる。
【０１３５】
１つの実装において、２７１２で、サーバ・ソフトウェア・アプリケーションは、各写真への参照をデータベース１０４内に格納するが、写真は、データベース１０４と異なるストレージ・デバイス内に格納された物理的ファイルである。このような事例において、データベース１０４は、各写真について一意の識別子を維持する。一意の識別子を使用して、データベース１０４内に対応する写真のメタデータ及びタグを配置する。２７１４で、サーバ・ソフトウェア・アプリケーションは、そのタグ及び／またはメタデータに基づき各写真にインデックスを作成する。１つの実装において、サーバ・ソフトウェア・アプリケーションは、データベース１０４上で動作するデータベース管理ソフトウェアにより提供されたソフトウェア・ユーティリティを使用して、各写真にインデックスを作成する。
【０１３６】
２７１６で、サーバ・ソフトウェア・アプリケーションは、２７０２で取得された写真をこの写真のジオタグに基づき地図上に表示する。あるいは、２７１６で、サーバ・ソフトウェア・アプリケーションは、２７０２で取得された１サブセットの写真をこの写真のジオタグに基づき地図上に表示する。表示された写真の２枚のスクリーンショットを図３０の３００２及び３００４で示す。ユーザ１２０は、ズームイン及びズームアウト制御を地図上で使用し、特定の地理的領域内の写真を表示することが可能である。写真をアップロードしてこれらにインデックスを作成した後に、サーバ・ソフトウェア・アプリケーションは、２７０２でアップロードされた写真を含む写真をユーザ１２０が検索することを可能にする。その後アルバムを検索結果（すなわち、写真リスト）から生成することが可能である。さらにアルバム生成プロセスは、図３１を参照して３１００で図示される。３１０２で、サーバ・ソフトウェア・アプリケーションは、シーン・タイプ、表情、作成時刻、異なるタグなどのような、１セットの検索パラメータを取得する。たとえば、サーバ・ソフトウェア・アプリケーションのウェブ・ページ・インタフェースまたはモバイル・ソフトウェア・アプリケーションを介してこれらのパラメータを入力する。３１０４で、サーバ・ソフトウェア・アプリケーションは、検索クエリを定式化し、データベース１０４に検索クエリを実行するように要求する。
【０１３７】
応答して、データベース１０４は、クエリを実行し、１セットの検索結果を返す。３１０６で、サーバ・ソフトウェア・アプリケーションは、検索結果を受信する。３１０８で、サーバ・ソフトウェア・アプリケーションは、検索結果を、たとえば、ウェブ・ページ上に表示する。検索結果リスト内の各写真は、特定のメタデータ及び／またはタグ、及び特定のサイズ（元のサイズの半分のような）の写真で表示される。次にユーザ１２０は、ボタンをクリックし、返された写真でフォト・アルバムを作成する。クリックに応答して、３１１０で、サーバ・ソフトウェア・アプリケーションは、検索結果を含むアルバムを生成し、このアルバムをデータベース１０４に格納する。たとえば、データベース１０４内のアルバムは、アルバム内の各写真の一意の識別子、ならびにアルバムの題及び説明を含むデータ構造である。題及び説明は、ユーザ１２０により入力される、または写真のメタデータ及びタグに基づき自動的に生成される。
【０１３８】
さらに実装において、写真を２７０２でアップロードした後に、サーバ１０２上で動作するサーバ・ソフトウェア・アプリケーションまたはバックグラウンド・プロセスは、アップロードされた写真のいくつかを含む１つ以上のアルバムを自動的に生成する。さらに自動生成プロセスは、図３２を参照して３２００で図示される。３２０２で、サーバ・ソフトウェア・アプリケーションは、アップロードされた写真のタグを取得する。３２０４で、サーバ・ソフトウェア・アプリケーションは、異なる組み合わせのタグを判定する。たとえば、１つの組み合わせは、「ビーチ」、「夕焼け」、「家族の休暇」及び「サン・ディエゴ・シー・ワールド」のタグを含む。追加の実施例として、これらの組み合わせは、タイミング・タグ、位置タグなどのような、タグ・タイプに基づく。各組み合わせは、１セットの検索パラメータである。３２０６で、各タグの組み合わせについて、サーバ・ソフトウェア・アプリケーションは、この組み合わせ内のすべてのタグを各々含む、たとえば、アップロードされた写真、またはアップロードされた写真及び既存の写真から写真を選択する（データベース１０４にクエリを行うことで等）。別の実装において、写真をメタデータ（作成時刻のような）及びタグに基づき選択する。
【０１３９】
３２０８で、サーバ・ソフトウェア・アプリケーションは、各セットの選択された写真についてアルバムを生成する。各アルバムは、たとえば、アルバム内の写真のメタデータ及びタグに基づき生成されることが可能である題及び／または要約を含む。３２１０で、サーバ・ソフトウェア・アプリケーションは、アルバムをデータベース１０４内に格納する。さらに実装において、サーバ・ソフトウェア・アプリケーションは、１冊以上のアルバムをユーザ１２０に表示する。また各表示されたアルバムについての要約を表示する。加えて、各アルバムは、アルバム内の代表的な写真または写真のサムネイルとともに示される。
【０１４０】
画像編成システム
また本開示は、画像編成システムを含む。特に、上記で説明されたシーン認識及び顔認識技術を使用して、自動的に画像集にタグ付けし、これにインデックスを作成することが可能である。たとえば、画像リポジトリ内の各画像について、タグ・リスト及び画像のインディシアは、データベース記録によるように、関連付けられることが可能である。次にデータベース記録は、たとえば、検索文字列を使用して検索されることが可能なデータベース内に格納されることが可能である。
【０１４１】
画像編成システムに適用可能な図に移行し、図３３は、開示された画像編成システムとともに使用するように構成されたモバイル・コンピューティング・デバイス３３００を描写する。モバイル・コンピューティング・デバイス３３００は、たとえば、図１５で描写されるすべての、スマートフォン１５０２、タブレット・コンピュータ１５０４またはウェアラブル・コンピュータ１５１０であることが可能である。モバイル・コンピューティング・デバイス３３００は、例示的な実装において、ディスプレイ３３０４及び入力デバイス３３１４に結合されたプロセッサ３３０２を含むことが可能である。ディスプレイ３３０４は、たとえば、液晶ディスプレイまたは有機発光ダイオード・ディスプレイであることが可能である。入力デバイス３３１４は、たとえば、タッチスクリーン、タッチスクリーン及び１つ以上のボタンの組み合わせ、タッチスクリーン及びキーボードの組み合わせ、またはタッチスクリーン、キーボード及び別個のポインティング・デバイスの組み合わせであることが可能である。
【０１４２】
またモバイル・コンピューティング・デバイス３３００は、フラッシュ・メモリ（他のタイプのメモリを使用可能であるが）のような内部ストレージ・デバイス３３１０、及びまた一般にフラッシュ・メモリを含むＳＤカード・スロットのようなリムーバブル・ストレージ・デバイス３３１２を含むことが可能であるが、回転磁気ドライブのような他のタイプのメモリも含むことが可能である。加えて、またモバイル・コンピューティング・デバイス３３００は、カメラ３３０８及びネットワーク・インタフェース３３０６を含むことが可能である。ネットワーク・インタフェース３３０６は、たとえば、８０２．１１の変種またはセルラ式無線インタフェースのうちの１つのような、無線ネットワーキング・インタフェースであることが可能である。
【０１４３】
図３４は、仮想化サーバ３４０２及び仮想化データベース３４０４を含むクラウド・コンピューティング・プラットフォーム３４００を描写する。一般的に仮想化サーバ３４０２は、それらを利用する任意のアプリケーションに単一のサーバとして見える複数の物理的サーバを備える。仮想化データベース３４０４は、仮想化データベース３４０４を使用する単一のデータベースとして同様に提供する。
【０１４４】
図３５Ａは、クラウド・ベースの画像編成システムの主要なソフトウェア・コンポーネントを説明するソフトウェア・ブロック図を描写する。モバイル・コンピューティング・デバイス３３００は、そのプロセッサ３３０２上で動作するさまざまなコンポーネント及び他のコンポーネントを含む。カメラ・モジュール３５０２は、通常デバイス製造元またはオペレーティング・システム製造者により実装され、ユーザの指示で写真を作成し、これらの写真を画像リポジトリ３５０４に蓄積する。画像リポジトリ３５０４は、たとえば、モバイル・コンピューティング・デバイス３３００の内部ストレージ３３１０またはリムーバブル・ストレージ３３１２上に実装されるファイル・システム内のディレクトリとして実装されることが可能である。前処理及びカテゴリ化コンポーネント３５０６は、画像リポジトリ内の画像の小規模モデルを生成する。
【０１４５】
前処理及びカテゴリ化コンポーネント３５０６は、たとえば、特定の画像のサムネイルを生成することが可能である。たとえば、４０００×３０００画素画像は、相当な省スペースをもたらす、２４０×１８０画素画像に縮小されることが可能である。加えて、画像シグネチャは、小規模モデルとして生成され使用されることが可能である。画像シグネチャは、たとえば、画像についての特徴の集合を含むことが可能である。これらの特徴は、限定されないが、画像の色ヒストグラム、画像のＬＢＰ特徴などを含むことが可能である。シーン認識及び顔認識アルゴリズムを記述するときに、これらの特徴のより完全なリスト作成を上記で考察する。加えて、画像と関連した任意のジオタグ情報ならびに日付及び時間情報は、サムネイルまたは画像シグネチャも加えて送信されることが可能である。また、別個の実施形態において、モバイル・デバイスのネットワーク・インタフェースと関連したＭＡＣ識別子、またはモバイル・デバイスと関連して生成された汎用一意識別子（ＵＵＩＤ）のような、モバイル・デバイスのインディシアは、サムネイルとともに送信される。
【０１４６】
前処理及びカテゴリ化コンポーネント３５０６は、いくつかの異なる方式で起動されることが可能である。第一に、前処理及びカテゴリ化コンポーネント３５０６は、画像リポジトリ３５０４内のすべての画像を介して反復することが可能である。通常これは、たとえば、アプリケーションを最初にインストールするときに、またはユーザの指示で、発生する。第二に、前処理及びカテゴリ化コンポーネント３５０６は、ユーザにより起動されることが可能である。第三に、前処理及びカテゴリ化コンポーネント３５０６は、画像リポジトリ３５０４内で新規の画像を検出するときに起動されることが可能である。第四に、前処理及びカテゴリ化コンポーネント３５０６は、たとえば、１日１回または１時間１回のように、定期的に起動されることが可能である。
【０１４７】
前処理及びカテゴリ化コンポーネント３５０６は、小規模モデルをそれらを作成する場合にネットワーキング・モジュール３５０８に伝える。またこのネットワーキング・モジュール３５０８は、カスタム検索用語画面３５０７とインタフェースで接続する。このカスタム検索用語画面３５０７は、以下に記述されるように、カスタム検索用語を受け取る。次にネットワーキング・モジュール３５０８は、単一の小規模モデル（または複数の小規模モデル）をクラウド・プラットフォーム３４００へ送信し、クラウド・プラットフォーム３４００上で動作するネットワーキング・モジュール３５１６は、小規模モデルを受信する。ネットワーキング・モジュール３５１６は、小規模モデルを仮想化サーバ３４０２上で動作する画像構文解析器及び認識器３５１８に伝える。
【０１４８】
画像構文解析器及び認識器３５１８は、本開示の前節で考察されたアルゴリズムを使用し、小規模モデルを記述するタグ・リストを生成する。次に画像構文解析器及び認識器３５１８は、構文解析された小規模モデルに対応する画像のタグ・リスト及びインディシアを伝えて、ネットワーキング・モジュール３５１６に返す、タグ・リスト及びインディシアを送信して、モバイル・コンピューティング・デバイス３３００のネットワーキング・モジュール３５０８に返す。次にタグ・リスト及びインディシアをネットワーキング・モジュール３５０８から前処理及びカテゴリ化モジュール３５０６に伝え、データベース３５１０内でタグ・リスト及びインディシアを関連付ける記録を作成する。
【０１４９】
本開示の画像編成システムの１つの実施形態において、またタグをモバイル・デバイスのインディシアに加えてデータベース３５２０内に格納する。これは、画像リポジトリを複数のデバイス間で検索することを可能にする。
【０１５０】
図３５Ｂに移行し、画像検索機能を実装するソフトウェア・コンポーネントを描写するソフトウェア・ブロック図を説明する。検索画面３５１２は、検索文字列をユーザから受け取る。検索文字列３５１２は、データベース・インタフェース３５１６に提出される格納されたタグ・リストを生成する自然言語プロセッサ３５１３に提出される。次にデータベース・インタフェース３５１６は、画像画面３５１４上に描写される画像リストを返す。
【０１５１】
自然言語プロセッサ３５１３は、たとえば、距離メトリックに基づき、タグ・リストをソートすることが可能である。たとえば、「ビーチの犬」の検索文字列は、「犬」及び「ビーチ」の両方でタグ付けされる画像リストを生成する。しかしながら、ソートされたリストの下位は、「犬」または「ビーチ」またはさらに「猫」でもタグ付けされる画像である。猫は、オペレータがペットのタイプについて検索したために含まれ、複数のタイプのペットの写真、たとえば、猫またはカナリアがモバイル・コンピューティング・デバイスに存在する場合に、それらも返す。
【０１５２】
また位置を検索文字列として使用することが可能である。たとえば、「ボストン」の検索文字列は、マサチューセッツ州ボストンの境界内の位置でジオタグ付けされたすべての画像を返す。
【０１５３】
図３６Ａは、クラウド・プラットフォーム３４００への小規模モデルの送信前にモバイル・コンピューティング・デバイス３３００上で動作するプリプロセッサ及びカテゴライザ３５０６により実行されたステップを図示するフローチャートを描写する。ステップ３６０２で、画像リポジトリ内に新規の画像を記録する。ステップ３６０４で、画像を処理して小規模モデルを生成し、ステップ３６０６で、小規模モデルをクラウド・プラットフォーム３４００へ送信する。
【０１５４】
図３６Ｂは、クラウド・プラットフォーム３４００からの小規模モデルの受信後にモバイル・コンピューティング・デバイス３３００上で動作するプリプロセッサ及びカテゴライザ３５０６により実行されたステップを図示するフローチャートを描写する。ステップ３６１２において、画像に対応するタグ・リスト及びインディシアを受信する。ステップ３６１４において、タグ・リスト及びインディシアを関連付ける記録を作成し、ステップ３６１６で、この記録をデータベース３５１０へコミットする。
【０１５５】
またステップ３６１４でデータベース記録を形成するために使用されるタグは、自動的にアルバムを作成するために使用されることが可能である。これらのアルバムは、ユーザが画像リポジトリを閲覧することを可能にする。たとえば、アルバムは、画像に含まれるもののタイプに基づき作成されることが可能である、すなわち「犬」とタイトルを付けられたアルバムは、ユーザの画像リポジトリ内の犬の写真を含むすべての画像を含む。同様に、アルバムは、「夕焼け」または「自然」のような、シーン・タイプに基づき自動的に作成されることが可能である。またアルバムは、「デトロイト」アルバムまたは「サン・フランシスコ」アルバムのような、ジオタグ情報に基づき作成されることが可能である。加えて、アルバムは、「２０１３年６月２１日」または「２０１２年の大晦日の真夜中」のような、日付及び時間で作成されることが可能である。
【０１５６】
図３７は、クラウド・コンピューティング・プラットフォーム３４００上で動作する画像構文解析器及び認識器３５１８により実行され、システムにより構文解析された小規模モデルに対応する画像を記述するタグ・リストを生成するステップを説明するフローチャートを描写する。ステップ３７０２で、小規模モデルを受信する。ステップ３７０４で、小規模モデルに対応する画像のインディシアを抽出し、ステップ３７０６で、上記で説明された方法を使用して小規模モデルを構文解析し、画像特徴を認識する。ステップ３７０８で、小規模モデルについてのタグ・リストを生成する。たとえば、背景にボートを含む１グループの人々のビーチでの写真は、「ビーチ」及び「ボート」と同様に写真内の人々の名前をタグとして生成することができる。最終的に、ステップ３７１０で、構文解析された小規模モデルに対応する画像のタグ・リスト及びインディシアをクラウド・コンピューティング・プラットフォーム３４００からモバイル・コンピューティング・デバイス３３００へ送信する。
【０１５７】
図３８は、モバイル・コンピューティング・デバイス３３００及びクラウド・コンピューティング・プラットフォーム３４００間の通信のシーケンス図を描写する。ステップ３８０２で、モバイル・コンピューティング・デバイス３３００上の画像リポジトリ内の画像を処理し、この画像に対応する小規模モデルを作成する。ステップ３８０４で、小規模モデルをモバイル・コンピューティング・デバイス３３００からクラウド・プラットフォーム３４００へ送信する。ステップ３８０６で、クラウド・プラットフォーム３４００は、小規模モデルを受信する。ステップ３８０８で、画像インディシアを小規模モデルから抽出し、ステップ３８１０で、構文解析及び認識プロセスを使用して、この小規模モデルから画像特徴を抽出する。ステップ３８１２で、これらの画像特徴は、タグ・リスト及びステップ３８０８で抽出された画像インディシアを含むパケットにまとめられる。
【０１５８】
ステップ３８１４で、タグ・リスト及び画像インディシアを含むパケットをクラウド・プラットフォーム３４００からモバイル・コンピューティング・デバイス３３００へ送信する。ステップ３８１６で、タグ・リスト及び画像インディシアを含むパケットを受信する。ステップ３８１８で、画像インディシア及びタグ・リストを関連付けるデータベース記録を作成し、ステップ３８２０で、データベース記録をデータベースにコミットする。
【０１５９】
図３９は、モバイル・コンピューティング・デバイス上の画像リポジトリ内の画像を検索することが可能なプロセスのフローチャートを描写する。ステップ３９０２で、検索画面を表示する。検索画面は、ユーザがステップ３９０４で受け取られる、検索文字列を入力することを可能にする。ステップ３９０６で、検索文字列を自然言語構文解析器３５１３に提出する。この検索文字列は、「犬」のような単語、または「犬及び猫」のような用語の組み合わせであることが可能である。また検索文字列は、たとえば、「夕焼け」または「自然」のような場面設定を記述する用語、「動物」または「食べ物」のような特定のカテゴリを記述する用語、ならびに特定の位置または日付及び時間帯を記述する用語を含むことが可能である。検索画面は、音声コマンドを介してでも、すなわち、ユーザが語句「犬及び猫」を話すことで、受け取ることが可能であることに留意するべきである。
【０１６０】
自然言語構文解析器３５１３は、検索文字列を受け取り、データベース３５１０内に存在するタグ・リストを返す。自然言語構文解析器３５１３をデータベース３５１０内のタグ用語でトレーニングする。
【０１６１】
ステップ３９０８に移行し、自然言語構文解析器は、ソートされたタグ・リストを返す。ステップ３９１０で、ソートされたリスト内のすべてのタグを介してループするループをインスタンス化する。ステップ３９１２で、タグ・リスト内の現在のタグに基づきデータベースを検索する。ステップ３９１２で、検索されたタグに対応する画像についてデータベースを検索する。
【０１６２】
ステップ３９１４で、検索されたタグにマッチングするルールを先に確立したかどうかを判定する確認を行う。検索されたタグにマッチングするルールを確立した場合に、このルールをステップ３９１６で有効にする。ステップ３９１８で、検索されたタグに対応する画像をマッチング・セットに追加する。マッチング画像（またはこれらの画像のインディシア）をソートされたタグ・リストの順序に対応する順序で追加する場合に、またマッチング・セット内の画像をソートされたタグ・リストの順序でソートする。次に実行は、ステップ３９２０へ移行し、現在のタグがソートされたリスト内の最後のタグであるかどうかを判定する確認を行う。そうではない場合に、実行は、ステップ３９２１へ転移し、ソートされたリスト内の次のタグを選択する。ステップ３９２０に戻り、現在のタグがソートされたリスト内の最後のタグである場合に、実行は、ステップ３９２２に移行し、プロセスを終了する。
【０１６３】
上記で、以前に確立されたルールの確認を行うようなステップ３９１４を記述した。開示された画像編成システムのこの特徴は、システムの検索及び編成システムをユーザのモバイル・デバイス上の他のアプリケーションと共有することを可能にする。これは、検索された画像が特定のカテゴリにマッチングするときに構成されたルールを有効にすることで達成される。たとえば、検索された画像を名刺のような名札としてカテゴリ化する場合に、光学文字認識（ＯＣＲ）アプリケーションと名刺を共有するルールを有効にすることが可能である。同様に、検索された画像を「犬」または「猫」としてカテゴリ化する場合に、ユーザが画像をペット愛好家の友達と共有したいかどうかを尋ねるルールを有効にすることが可能である。
【０１６４】
図４０Ａに移行し、ステップ４００２で、カスタム検索用語画面３５０７は、画像に適用されるエリア・タグに加えてユーザからカスタム検索文字列を受け取る。エリア・タグは、ユーザにより画定された幾何学的領域であり、画像のいずれかの部分に適用されることが可能である。たとえば、カスタム検索文字列は、たとえば、画像内の特定の猫を意味するために使用されることが可能である、「フラッフィ」であることが可能である。ステップ４００４で、カスタム検索文字列及びエリア・タグをネットワーク・モジュール３５０８によりクラウド・サーバに送信する。
【０１６５】
図４０Ｂに移行し、ステップ４０１２で、ネットワーク・モジュール３５１６は、カスタム検索文字列及びエリア・タグを受信する。ステップ４０１４で、画像構文解析器及び認識器３５１８は、ステップ４０１６で格納される、データベース記録内のカスタム検索文字列及びエリア・タグを関連付ける。格納されると、エリア・タグでタグ付けされるアイテムを認識するときに画像構文解析器及び認識器３５１８は、カスタム検索文字列を返す。その結果、「フラッフィ」をエリア・タグ及びカスタム検索文字列で示した後に、フラッフィの写真を提出する場合に、「フラッフィ」のタグを返す。
【０１６６】
クラウド構成に実装されるような開示された画像編成システムを記述するが、またそれを完全にモバイル・コンピューティング・デバイス上に実装することが可能である。このような実装において、画像構文解析器及び認識器３５１８をモバイル・コンピューティング・デバイス３３００上に実装する。加えて、ネットワーキング・モジュール３５０８及び３５１６を必要としない。また、追加のモバイル・デバイス、ローカル・サーバ、無線ルータまたはさらに関連したデスクトップ若しくはラップトップ・コンピュータのような、単一のヘルパ・デバイス上にクラウド・コンピューティング部分を実装することが可能である。
【０１６７】
明らかに、本開示の多くの追加の修正形態及び変形形態は、上記の教示に照らして、可能である。したがって、添付の特許請求の範囲の範囲内で、具体的に上記で説明されたもの以外で本開示を実施することができることを理解するべきである。たとえば、データベース１０４は、単一の位置で、または複数の位置間で分散された、１つより多い物理的データベースを含むことが可能である。データベース１０４は、ＯｒａｃｌｅデータベースまたはＭｉｃｒｏｓｏｆｔ  ＳＱＬデータベースのような、リレーショナル・データベースであることが可能である。あるいは、データベース１０４は、ＮｏＳＱＬ（ノット・オンリＳＱＬ）データベースまたはＧｏｏｇｌｅのＢｉｇｔａｂｌｅデータベースである。このような事例において、サーバ１０２は、インターネット１１０経由でデータベース１０４にアクセスする。追加の実施例として、サーバ１０２及び１０６は、インターネット１１０と異なるワイド・エリア・ネットワークを介してアクセスされることが可能である。さらに他の実施例として、サーバ１６０２及び１６１２の機能性は、１つより多い物理的サーバにより実行されることが可能であり、データベース１６０４は、１つより多い物理的データベースを含むことが可能である。
【０１６８】
本開示の前述の説明は、例示及び説明のために提出されているが、本開示を開示された正確な形態に網羅的である、または限定することを意図されない。この説明は、本教示の原則及びこれらの原則の実施上の適用を最も良く説明し、当業者が意図された特定の用途に適しているようなさまざまな実施形態及びさまざまな修正形態に本開示を最も良く利用することを可能にするにために選択された。本開示の範囲が本明細書により限定されるべきではないが、以下に記述される特許請求の範囲により定められるものとすることを意図する。加えて、狭い特許請求の範囲が以下で示されることがあるが、本発明の範囲が請求項（複数を含む）により提出された範囲よりもはるかに広いことを認識するべきである。より広い特許請求の範囲が本出願から優先権の利益を主張する１つ以上の出願で提出されるであろうことを意図する。上記の説明及び添付の図面が以下の単一の請求項または複数の請求項の範囲内にない追加の主題を開示する限り、追加の発明は公衆に献呈されておらず、このような追加の発明を主張する１つ以上の出願を提出する権利は留保される。
【図１】
0006431934.tif 000011
【図２】
0006431934.tif 000012
【図３】
0006431934.tif 000013
【図４】
0006431934.tif 000014
【図５】
0006431934.tif 000015
【図６】
0006431934.tif 000016
【図７】
0006431934.tif 000017
【図８】
0006431934.tif 000018
【図９】
0006431934.tif 000019
【図１０】
0006431934.tif 000020
【図１１Ａ】
0006431934.tif 000021
【図１１Ｂ】
0006431934.tif 000022
【図１２】
0006431934.tif 000023
【図１３】
0006431934.tif 000024
【図１４】
0006431934.tif 000025
【図１５】
0006431934.tif 000026
【図１６】
0006431934.tif 000027
【図１７】
0006431934.tif 000028
【図１８Ａ】
0006431934.tif 000029
【図１８Ｂ】
0006431934.tif 000030
【図１９】
0006431934.tif 000031
【図２０】
0006431934.tif 000032
【図２１】
0006431934.tif 000033
【図２２】
0006431934.tif 000034
【図２３】
0006431934.tif 000035
【図２４】
0006431934.tif 000036
【図２５】
0006431934.tif 000037
【図２６】
0006431934.tif 000038
【図２７】
0006431934.tif 000039
【図２８】
0006431934.tif 000040
【図２９】
0006431934.tif 000041
【図３０】
0006431934.tif 000042
【図３１】
0006431934.tif 000043
【図３２】
0006431934.tif 000044
【図３３】
0006431934.tif 000045
【図３４】
0006431934.tif 000046
【図３５Ａ】
0006431934.tif 000047
【図３５Ｂ】
0006431934.tif 000048
【図３６Ａ】
0006431934.tif 000049
【図３６Ｂ】
0006431934.tif 000050
【図３７】
0006431934.tif 000051
【図３８】
0006431934.tif 000052
【図３９】
0006431934.tif 000053
【図４０Ａ】
0006431934.tif 000054
【図４０Ｂ】
0006431934.tif 000055