以下の説明は、当業者が本開示を作成および使用することを可能にするために提示され、特定の用途およびその要件の文脈で提供される。開示された実施形態に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般原理は、本開示の趣旨および範囲から逸脱することなく、他の実施形態および用途に適用され得る。したがって、本開示は、示される実施形態に限定されず、特許請求の範囲と一致する最も広い範囲が与えられるべきである。
本明細書で使用される用語は、特定の例示的な実施形態を説明することのみを目的としており、限定することを意図していない。本明細書で使用される場合、単数形「a」、「an」、および「the」は、文脈がそうでないことを明確に示さない限り、複数形も含むことが意図され得る。本開示で使用される場合、「備える(comprise,comprises,comprising)」、「含む(include,includes,including)」という用語は、述べられた特徴、整数、ステップ、オペレーション、要素、および/またはコンポーネントの存在を指定するが、1つ以上の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、および/またはそれらのグループの存在または追加を排除するものではないことがさらに理解されよう。
本開示のこれら、および他の特徴や特性、ならびにオペレーションの方法および構造の関連要素の機能および部品の組み合わせおよび製造の経済性は、添付の図面を参照して以下の説明を検討すると、より明らかになる場合があり、これらの図面はすべて、本開示の一部を形成する。ただし、図面は例示および説明のみを目的としており、本開示の範囲を限定することを意図していないことを明確に理解されたい。図面は縮尺通りではないことが理解される。
本開示で使用されるフローチャートは、本開示のいくつかの実施形態に従ってシステムが実施するオペレーションを示す。フローチャートのオペレーションは、記載されているのとは異なる順序で実装されてもよいことは明確に理解されるべきである。逆に、オペレーションは逆の順序で、または同時に実装されてもよい。さらに、フローチャートに1つ以上の他のオペレーションが追加されてもよい。フローチャートから1つ以上のオペレーションが削除されてもよい。
さらに、本開示のシステムおよび方法は、主にオンデマンド輸送サービスに関して説明されているが、これは単なる1つの例示的な実施形態であることも理解されたい。本開示のシステムまたは方法は、任意の他の種類のオンデマンドサービスに適用され得る。例えば、本開示のシステムまたは方法は、陸、海、航空宇宙など、またはそれらの任意の組み合わせを含む異なる環境の輸送システムに適用されてもよい。輸送システムの車両は、タクシー、自家用車、ヒッチ、バス、電車、新幹線、高速鉄道、地下鉄、船舶、航空機、宇宙船、熱気球、無人車両など、またはそれらの任意の組み合わせを含み得る。輸送システムはまた、管理および/または分配のための任意の輸送システム、例えば、速達(express)を送信および/または受信するためのシステムを含み得る。本開示のシステムまたは方法の適用は、ウェブページ、ブラウザのプラグイン、クライアント端末、カスタムシステム、内部分析システム、人工知能ロボットなど、またはそれらの任意の組み合わせを含み得る。
本開示における「乗客」、「要求者」、「サービス要求者」、および「顧客」という用語は、サービスを要求または注文することができる個人、エンティティ、またはツールを指すために互換的に使用される。また、本開示における「ドライバ」、「プロバイダ」、「サービスプロバイダ」、および「サプライヤ」という用語は、サービスを提供するか、またはサービスの提供を容易にすることができる個人、エンティティ、またはツールを指すために互換的に使用される。本開示における「ユーザ」という用語は、サービスを要求し、サービスを注文し、サービスを提供し、またはサービスの提供を容易にすることができる個人、エンティティ、またはツールを指すことができる。例えば、ユーザは、乗客、ドライバ、オペレータなど、またはそれらの任意の組み合わせであり得る。本開示では、「乗客」および「乗客端末」は互換的に使用され得、「ドライバ」および「ドライバ端末」は互換的に使用され得る。
本開示における「サービス要求」および「注文」という用語は、互換的に使用され、乗客、要求者、サービス要求者、顧客、ドライバ、プロバイダ、サービスプロバイダ、供給者など、またはそれらの任意の組み合わせによって開始され得る要求を指す。サービス要求は、乗客、要求者、サービス要求者、顧客、ドライバ、提供者、サービス提供者、または供給者のいずれかによって受け入れられ得る。サービス要求は有料または無料の場合がある。
本開示で使用される測位技術は、全地球測位システム(GPS)、全地球航法衛星システム(GLONASS)、コンパス航法システム(COMPASS)、ガリレオ測位システム、準天頂衛星システム(QZSS)、ワイヤレスフィデリティ(WiFi)測位技術など、またはそれらの任意の組み合わせに基づくことができる。上記の測位システムのうちの1つ以上は、本開示において互換的に使用され得る。
本開示は、画像内のオブジェクト検出のための人工知能(AI)システムおよび方法に関する。具体的には、AIシステムおよび方法は、画像内のターゲットオブジェクトの境界を決定することができる。ターゲットオブジェクトの決定された境界は、四辺形のボックスであり得る。ターゲットオブジェクトの境界を決定するために、AIシステムおよび方法は、画像を畳み込みニューラルネットワーク(CNN)に入力して複数の特徴マップを生成し、複数の特徴マップに基づいて複数の領域候補を生成することができる。AIシステムおよび方法は、ROIプーリングオペレーションを実行することにより、複数の領域候補および複数の特徴マップに基づいて、複数のプーリング領域候補を決定することができる。AIシステムおよび方法は、複数のプーリング領域候補を、分類器によって1つ以上のオブジェクトカテゴリまたは背景カテゴリにさらに分類することができる。複数のプーリング領域候補は、ターゲットオブジェクトに対応する1つ以上のプーリング領域候補を含み得る。1つ以上のプーリング領域候補の各々は、複数の隅を有し得る。ターゲットオブジェクトに対応するプーリング領域候補の場合、AIシステムおよび方法は、対応する隅の位置に従って、プーリング領域候補の複数の隅の各隅について複数のクロッピング戦略を決定することができる。AIシステムおよび方法はまた、複数のクロッピング戦略の1つに従って複数の隅の各々をクロッピングすることにより、プーリング領域候補をトリミングすることができる。いくつかの実施形態では、AIシステムおよび方法は、プーリング領域候補に基づいて決定され得る、クロッピング方向およびクロッピング長さに基づいて隅をクロッピングすることができる。AIシステムおよび方法は、クロッピングされた複数の隅に基づいて、トリミングされたプーリング領域候補に対する境界を識別し、その境界を画像にマッピングして、ターゲットオブジェクトの境界を決定することができる。本開示では、プーリング領域候補の隅に関連する情報(例えば、隅の位置)およびプーリング領域候補の特徴が考慮され得る。したがって、本開示に従って決定されるターゲットオブジェクトの境界は、ターゲットオブジェクト、特に傾斜したターゲットオブジェクト(例えば、安全ベルト、傾斜した文字)に対してより適切であり得、ターゲットの位置を特定する精度を改善し得る。
図1は、本開示のいくつかの実施形態による例示的なAI画像処理システム100を示す概略図である。AI画像処理システム100は、オブジェクション検出のために構成され得る。例えば、AI画像処理システム100は、画像内のオブジェクトに対応する境界を決定することができる。いくつかの実施形態では、AI画像処理システム100は、オンライントゥオフライン(O2O)サービスを提供するオンラインプラットフォームであり得る。AI画像処理システム100は、センサ110、ネットワーク120、端末130、サーバ140、および記憶デバイス150を含み得る。
センサ110は、1つ以上の画像を取り込むように構成され得る。本出願で使用されるように、画像は、静止画像、ビデオ、ストリームビデオ、またはビデオから得られたビデオフレームであり得る。画像は、三次元(3D)画像または二次元(2D)画像であり得る。センサ110は、1つ以上のカメラであってもよく、またはそれらを含んでもよい。いくつかの実施形態では、センサ110は、デジタルカメラ、ビデオカメラ、防犯カメラ、ウェブカメラ、スマートフォン、タブレット、ラップトップ、ウェブカメラを備えたビデオゲームコンソール、複数のレンズを備えたカメラ、ビデオカメラなどであってもよい。いくつかの実施形態では、センサ110(例えば、カメラ)は、1つ以上のオブジェクトを含む画像を取り込むことができる。
ネットワーク120は、情報および/またはデータの交換を容易にすることができる。いくつかの実施形態では、AI画像処理システム100の1つ以上のコンポーネント(例えば、センサ110、端末130、サーバ140、記憶デバイス150)は、ネットワーク120を介したAI画像処理システム100において情報および/またはデータを他のコンポーネントに送信することができる。例えば、サーバ140は、ネットワーク120を介してセンサ110から得られた画像を処理することができる。別の例として、サーバ140は、ネットワーク120を介して端末130からユーザ指示を取得することができる。いくつかの実施形態では、ネットワーク120は、任意のタイプの有線または無線のネットワーク、あるいはそれらの組み合わせであってもよい。単なる例として、ネットワーク120は、ケーブルネットワーク、有線ネットワーク、光ファイバネットワーク、電気通信ネットワーク、イントラネット、インターネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワイヤレスローカルエリアネットワーク(WLAN)、メトロポリタンエリアネットワーク(MAN)、広域ネットワーク(WAN)、公衆電話交換網(PSTN)、Bluetooth(商標)ネットワーク、ZigBee(商標)ネットワーク、近距離無線通信(NFC)ネットワークなど、またはそれらの任意の組み合わせを含み得る。いくつかの実施形態では、ネットワーク120は、1つ以上のネットワークアクセスポイントを含み得る。例えば、ネットワーク120は、基地局および/またはインターネット交換ポイント120-1、120-2、…などの有線または無線のネットワークアクセスポイントを含んでもよく、それを介してAI画像処理システム100の1つ以上のコンポーネントが、データおよび/または情報を交換するためにネットワーク120に接続されてもよい。
端末130は、モバイルデバイス130-1、タブレットコンピュータ130-2、ラップトップコンピュータ130-3など、またはそれらの任意の組み合わせを含む。いくつかの実施形態では、モバイルデバイス130-1は、スマートホームデバイス、ウェアラブルデバイス、スマートモバイルデバイス、仮想現実デバイス、拡張現実デバイスなど、またはそれらの任意の組み合わせを含み得る。いくつかの実施形態では、スマートホームデバイスは、スマート照明デバイス、インテリジェント電気装置の制御デバイス、スマートモニタリングデバイス、スマートテレビ、スマートビデオカメラ、インターホンなど、またはそれらの任意の組み合わせを含み得る。いくつかの実施形態では、ウェアラブルデバイスは、ブレスレット、フットギア、眼鏡、ヘルメット、時計、衣服、バックパック、アクセサリなど、またはそれらの任意の組み合わせを含み得る。いくつかの実施形態では、スマートモバイルデバイスは、スマートフォン、携帯情報端末(PDA)、ゲームデバイス、ナビゲーションデバイス、販売時点情報管理(POS)デバイスなど、またはそれらの任意の組み合わせを含み得る。いくつかの実施形態では、仮想現実デバイスおよび/または拡張現実デバイスは、仮想現実ヘルメット、仮想現実メガネ、仮想現実パッチ、拡張現実ヘルメット、拡張現実メガネ、拡張現実パッチなど、またはそれらの任意の組み合わせを含み得る。例えば、仮想現実デバイスおよび/または拡張現実デバイスは、Google Glass、Oculus Rift、HoloLens、Gear VRなどを含み得る。いくつかの実施形態では、端末130は、センサ110を遠隔操作することができる。いくつかの実施形態では、端末130は、無線接続を介してセンサ110を操作することができる。いくつかの実施形態では、端末130は、ユーザによって入力された情報および/または命令を受信し、受信した情報および/または命令を、ネットワーク120を介してセンサ110またはサーバ140に送信することができる。いくつかの実施形態では、端末130は、サーバ140からデータおよび/または情報を受信することができる。いくつかの実施形態では、端末130は、サーバ140の一部であってもよい。いくつかの実施形態では、端末130は省略されてもよい。
いくつかの実施形態では、サーバ140は、単一のサーバまたはサーバグループであってもよい。サーバグループは、集中型または分散型であってもよい(例えば、サーバ140は分散型システムであってもよい)。いくつかの実施形態では、サーバ140はローカルまたはリモートであってもよい。例えば、サーバ140は、ネットワーク120を介して、センサ110、端末130、および/または記憶デバイス150に格納された情報および/またはデータにアクセスすることができる。別の例として、サーバ140は、センサ110、端末130、および/または記憶デバイス150に直接接続されて、格納された情報および/またはデータにアクセスすることができる。いくつかの実施形態では、サーバ140は、クラウドプラットフォーム上に実装され得る。単なる例として、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散クラウド、インタークラウド、マルチクラウドなど、またはそれらの任意の組み合わせを含み得る。いくつかの実施形態では、サーバ140は、本開示の図2に示される1つ以上のコンポーネントを有するコンピューティングデバイス200上に実装され得る。
いくつかの実施形態では、サーバ140は、AI処理デバイス142を含み得る。AI処理デバイス142は、情報および/またはデータを処理して、本開示で説明される1つ以上の機能を実行することができる。例えば、AI処理デバイス142は、ターゲットオブジェクトを含む画像を処理して、画像内のターゲットオブジェクトの境界を決定することができる。いくつかの実施形態では、AI処理デバイス142は、1つ以上の処理デバイス(例えば、シングルコア処理デバイスまたはマルチコアプロセッサ)を含み得る。単なる例として、AI処理デバイス142は、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、特定用途向け命令セットプロセッサ(ASIP)、グラフィックス処理ユニット(GPU)、物理処理ユニット(PPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、コントローラ、マイクロコントローラユニット、縮小命令セットコンピュータ(RISC)、マイクロプロセッサなど、またはそれらの任意の組み合わせを含み得る。
記憶デバイス150は、データおよび/または命令を格納することができる。いくつかの実施形態では、記憶デバイス150は、端末130および/またはサーバ140から取得されたデータを格納することができる。いくつかの実施形態では、記憶デバイス150は、本開示で説明される例示的な方法を実行するためにサーバ140が実行または使用することができるデータおよび/または命令を格納することができる。いくつかの実施形態では、記憶デバイス150は、大容量ストレージ、取り外し可能ストレージ、揮発性読み書きメモリ、読み出し専用メモリ(ROM)など、またはそれらの任意の組み合わせを含み得る。例示的な大容量ストレージは、磁気ディスク、光ディスク、ソリッドステートドライブなどを含み得る。例示的なリムーバブルストレージは、フラッシュドライブ、フロッピー(登録商標)ディスク、光ディスク、メモリカード、zipディスク、磁気テープなどを含み得る。例示的な揮発性読み書きメモリは、ランダムアクセスメモリ(RAM)を含み得る。例示的なRAMは、ダイナミックRAM(DRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、スタティックRAM(SRAM)、サイリスタRAM(T-RAM)、およびゼロキャパシタRAM(Z-RAM)などを含み得る。例示的なROMは、マスクROM(MROM)、プログラム可能ROM(PROM)、消去可能プログラム可能ROM(EPROM)、電気的消去可能プログラム可能ROM(EEPROM)、コンパクトディスクROM(CD-ROM)、およびデジタル多用途ディスクROMなどを含み得る。いくつかの実施形態では、記憶デバイス150は、クラウドプラットフォーム上で実施され得る。単なる例として、クラウドプラットフォームは、プライベートクラウド、パブリッククラウド、ハイブリッドクラウド、コミュニティクラウド、分散クラウド、インタークラウド、マルチクラウドなど、またはそれらの任意の組み合わせを含み得る。
いくつかの実施形態では、記憶デバイス150は、ネットワーク120に接続されて、AI画像処理システム100の1つ以上のコンポーネント(例えば、センサ110、端末130、サーバ140)と通信することができる。AI画像処理システム100内の1つ以上のコンポーネントは、ネットワーク120を介して記憶デバイス150に格納されたデータまたは命令にアクセスすることができる。いくつかの実施形態では、記憶デバイス150は、AI画像処理システム100内の1つ以上のコンポーネント(例えば、センサ110、端末130、サーバ140)と直接接続され、または通信し得る。いくつかの実施形態では、記憶デバイス150は、センサ110の一部であってもよい。
当業者は、AI画像処理システム100の要素(またはコンポーネント)が実行するとき、要素が電気信号および/または電磁信号を介して実行することができることを理解されよう。例えば、端末130が要求をサーバ140に送信するとき、端末130のプロセッサは、要求を符号化する電気信号を生成することができる。次に、端末130のプロセッサは、電気信号を出力ポートに送信することができる。端末130が有線ネットワークを介してサーバ140と通信する場合、出力ポートはケーブルに物理的に接続されてもよく、ケーブルはさらに電気信号をサーバ140の入力ポートに送信してもよい。端末130が無線ネットワークを介してサーバ140と通信する場合、端末130の出力ポートは、電気信号を電磁信号に変換する1つ以上のアンテナであってもよい。端末130および/またはサーバ140などの電子デバイス内で、電子デバイスのプロセッサが命令を処理し、命令を送信し、および/またはアクションを実行すると、命令および/またはアクションは電気信号を介して実施される。例えば、プロセッサが記憶媒体からデータを検索または保存するとき、プロセッサは、記憶媒体の構造化データの読み出し、または書き込みができる記憶媒体の読み出し/書き込みデバイスに電気信号を送信することができる。構造化データは、電子デバイスのバスを介して電気信号の形でプロセッサに送信されてもよい。ここで、電気信号は、1つの電気信号、一連の電気信号、および/以上の個別の電気信号を指すことができる。
図2は、本開示のいくつかの実施形態による、コンピューティングデバイス200の例示的なハードウェアおよびソフトウェアコンポーネントを示す概略図である。いくつかの実施形態では、端末130および/またはサーバ140は、コンピューティングデバイス200上に実装され得る。例えば、サーバ140のAI処理デバイス142は、コンピューティングデバイス200上に実装され、本開示で開示されるAI処理デバイス142の機能を実行するように構成され得る。
コンピューティングデバイス200は、専用コンピュータであってもよく、本開示のためのAI画像処理システム100を実装するために使用され得る。コンピューティングデバイス200は、本明細書で説明されるようなAI画像処理システム100の任意のコンポーネントを実装するために使用され得る。例えば、AI処理デバイス142は、そのハードウェア、ソフトウェアプログラム、ファームウェア、またはそれらの組み合わせによって、コンピューティングデバイス上に実装され得る。そのようなコンピュータは、説明の都合上、1つしか示されていないが、本明細書で説明する画像処理に関連するコンピュータ機能は、処理負荷を分散するためにいくつかの類似のプラットフォーム上に分散して実装され得る。
コンピューティングデバイス200は、例えば、データ通信を実施し得るネットワークに接続されたCOMポート250を含み得る。コンピューティングデバイス200はまた、プログラム命令を実行するための1つ以上のプロセッサ(またはCPU)の形態のプロセッサ220を含み得る。例示的なコンピューティングデバイスは、内部通信バス210、異なるタイプのプログラム記憶ユニットおよびデータ記憶ユニット(例えば、ディスク270、読み出し専用メモリ(ROM)230、ランダムアクセスメモリ(RAM)240)、コンピュータの処理や通信に適用できる様々なデータファイルを含み得る。例示的なコンピューティングデバイスはまた、ROM230、RAM240、および/またはプロセッサ220によって実行される、他のタイプの非一時的記憶媒体に格納されたプログラム命令を含み得る。本開示の方法および/またはプロセスは、プログラム命令として実装され得る。コンピュータデバイス200はまた、コンピューティングデバイス200と他のコンポーネントとの間のデータフローの入力および/または出力をサポートすることができるI/Oデバイス260を含む。コンピューティングデバイス200はまた、ネットワーク通信を介してプログラムおよびデータを受信し得る。
単なる例示のために、コンピューティングデバイス200には、1つのCPUおよび/またはプロセッサのみが記載されている。しかしながら、本開示におけるコンピューティングデバイス200はまた、複数のCPUおよび/またはプロセッサを含み得、したがって、本開示に記載されるように1つのCPUおよび/またはプロセッサによって実行されるオペレーションおよび/または方法ステップも、複数のCPUおよび/またはプロセッサによって共同してまたは別々に実行され得ることに留意されたい。例えば、本開示において、コンピューティングデバイス200のCPUおよび/またはプロセッサがステップAおよびステップBの両方を実行する場合、ステップAおよびステップBはまた、コンピューティングデバイス200の2つの異なるCPUおよび/またはプロセッサによって共同してまたは別々に実行されてもよいことを理解されたい(例えば、第1のプロセッサがステップAを実行し、第2のプロセッサがステップBを実行するか、または第1および第2のプロセッサがステップAおよびBを共同して実行する)。
図3は、本開示のいくつかの実施形態によるモバイルデバイス300の例示的なハードウェアコンポーネントおよび/またはソフトウェアコンポーネントを示す概略図である。いくつかの実施形態では、端末(例えば、端末130)は、モバイルデバイス300上に実装されてもよい。図3に示すように、モバイルデバイス300は、通信プラットフォーム310、ディスプレイ320、グラフィック処理ユニット(GPU)330、中央処理ユニット(CPU)340、I/O350、メモリ360、オペレーティングシステム(OS)370、ストレージ390を含み得る。いくつかの実施形態では、システムバスまたはコントローラ(図示せず)を含むがこれらに限定されない他の任意の適切なコンポーネントも、モバイルデバイス300に含まれ得る。
いくつかの実施形態では、モバイルオペレーティングシステム370(例えば、iOS(商標)、Android(商標)、Windows Phone(商標)など)および1つ以上のアプリケーション380は、CPU340によって実行されるために、ストレージ390からメモリ360にロードされ得る。アプリケーション380は、AI画像処理システム100からの画像処理または他の情報に関する情報を受信およびレンダリングするためのブラウザまたは他の任意の適切なモバイルアプリを含み得る。情報ストリームとのユーザ対話は、I/O350を介して達成され、記憶デバイス150、サーバ140、/またはAI画像処理システム100の他のコンポーネントに提供され得る。
本開示で説明する様々なモジュール、ユニット、およびそれらの機能を実装するために、コンピュータハードウェアプラットフォームを、本明細書で説明する要素の1つ以上のためのハードウェアプラットフォームとして使用することができる。ユーザインタフェース要素を備えたコンピュータは、パーソナルコンピュータ(PC)または他の任意のタイプのワークステーションもしくは端末デバイスを実装するために使用され得る。コンピュータは、適切にプログラムされている場合、システムとしても機能し得る。
図4は、本開示のいくつかの実施形態による例示的なAI処理デバイス142を示すブロック図である。AI処理デバイス142は、取得モジュール401、特徴マップ決定モジュール403、領域候補決定モジュール405、プーリング領域候補決定モジュール407、分類モジュール409、および境界決定モジュール411を含み得る。モジュールは、AI処理デバイス142のすべてまたは一部のハードウェア回路であり得る。モジュールはまた、AI処理デバイス142によって読み出されて実行されるアプリケーションまたは命令セットとして実装されてもよい。さらに、モジュールは、ハードウェア回路とアプリケーション/命令の任意の組み合わせであってもよい。例えば、モジュールは、AI処理デバイス142がアプリケーション/命令セットを実行しているとき、AI処理デバイス142の一部であってもよい。
取得モジュール401は、AI画像処理システム100に関連する情報および/またはデータを取得するように構成され得る。いくつかの実施形態では、取得モジュール401は、ターゲットオブジェクトを含む画像を取得することができる。いくつかの実施形態では、画像は、センサ110によって取り込まれた静止画像またはビデオであり得る。いくつかの実施形態では、ターゲットオブジェクトは、画像内で識別および/または検出されるオブジェクトを指す場合がある。例えば、ターゲットオブジェクトは、画像に対して傾斜したオブジェクト(例えば、安全ベルト、傾斜した文字)であり得る。あるいは、画像内のすべてのオブジェクトを識別および/または検出する必要があり、画像内の各オブジェクトをターゲットオブジェクトと呼ぶ場合がある。いくつかの実施形態では、取得モジュール401は、センサ110、端末130、ストレージ(例えば、記憶デバイス150)などのAI画像処理システム100の1つ以上のコンポーネントから、またはネットワーク120を介して外部ソース(例えば、ImageNet)から、画像を取得することができる。
特徴マップ決定モジュール403は、画像(例えば、取得モジュール401によって取得された画像)を畳み込みニューラルネットワーク(CNN)に入力することによって複数の特徴マップを生成するように構成され得る。CNNは、1つ以上の畳み込み層および1つ以上のプーリング層を含み、全結合層のない訓練されたCNNであってもよい。畳み込み層は、画像の特徴(または特徴マップ)を抽出するように構成され得る。プーリング層は、画像の特徴マップのサイズを縮小するように構成され得る。特徴マップは、画像の特徴情報を含み得る。
領域候補決定モジュール405は、複数の特徴マップに基づいて複数の領域候補を決定するように構成され得る。いくつかの実施形態では、領域候補決定モジュール405は、領域候補ネットワーク(RPN)に従って複数の領域候補を決定し得る。具体的には、領域候補決定モジュール405は、複数の特徴マップ上でスライディングウィンドウをスライドさせることができる。複数の特徴マップ上でのスライディングウィンドウのスライディングにより、複数のスライディングウィンドウ位置が決定され得る。各スライディングウィンドウの位置で、一連の予備領域候補が決定され得る。複数のスライディングウィンドウ位置があるので、複数の予備領域候補が複数のスライディングウィンドウ位置で決定され得る。いくつかの実施形態では、複数の予備領域候補は互いに高度に重複することがあり、領域候補決定モジュール405は、複数の予備領域候補の一部を複数の領域候補として選択することがある。単なる例として、領域候補決定モジュール405は、非最大抑制(NMS)を使用して複数の領域候補を決定することができる。領域候補の決定に関する詳細は、本開示の他の箇所(例えば、プロセス500のオペレーション530およびその説明)で見られる。
プーリング領域候補決定モジュール407は、複数の領域候補および複数の特徴マップに基づいて複数のプーリング領域候補を決定するように構成され得る。いくつかの実施形態では、プーリング領域候補決定モジュール407は、複数の領域候補を複数の特徴マップにマッピングして、複数の候補特徴マップ(関心領域(ROI)とも呼ばれる)を決定することができる。次に、プーリング領域候補決定モジュール407は、複数の候補特徴マップ(またはROI)に対してプーリングを実行することによって、複数のプーリング領域候補を決定することができる。
分類モジュール409は、分類器によって複数のプーリング領域候補を1つ以上のオブジェクトカテゴリまたは背景カテゴリに分類するように構成され得る。いくつかの実施形態では、分類モジュール409は、プーリング領域候補のネガティブサンプルを背景カテゴリに分類することができる。プーリング領域候補が背景カテゴリと決定された場合、プーリング領域候補は省略され、さらなる処理が行われない場合がある。いくつかの実施形態では、分類モジュール409は、ポジティブサンプルに対応するプーリング領域候補を1つ以上のオブジェクトカテゴリの1つに分類することができる。1つ以上のオブジェクトカテゴリは、画像処理システム100のデフォルト設定であり得、および/またはユーザによって調整され得る。1つ以上のオブジェクトカテゴリは、ターゲットオブジェクトのカテゴリを含み得る。分類モジュール409は、複数のプーリング領域候補からターゲットオブジェクトに対応する1つ以上のプーリング領域候補を選択することができる。
境界決定モジュール411は、1つ以上のプーリング領域候補のうちの少なくとも1つに基づいて、画像内のターゲットオブジェクトの境界を決定するように構成され得る。いくつかの実施形態では、境界は、多角形のボックス、例えば四辺形のボックスであってもよい。単なる例として、複数の隅(例えば、4つの隅、5つの隅、8つの隅など)を有するプーリング領域候補の場合、境界決定モジュール411は、対応する隅の位置に従って、各隅について複数のクロッピング戦略を決定することができる。境界決定モジュール411は、複数のクロッピング戦略のうちの1つに従って複数の隅の各々をクロッピングすることによってプーリング領域候補をトリミングすることができる。境界決定モジュール411は、クロッピングされた複数の隅に基づいて、トリミングされたプーリング領域候補に対する境界を識別し、その境界を画像にマッピングして、ターゲットオブジェクトの境界を決定することができる。境界の決定に関する詳細は、本開示の他の箇所(例えば、プロセス500のオペレーション560、プロセス700、およびそれらの説明)に見つけることができる。
いくつかの実施形態では、境界決定モジュール411は、1つ以上のプーリング領域候補に基づいて、ターゲットオブジェクトに対応する1つ以上の境界を決定することができる。境界決定モジュール411は、1つ以上の境界の各々とグラウンドトゥルースとの間のIoUを決定することができる。いくつかの実施形態では、グラウンドトゥルースは、ターゲットオブジェクトのラベル付けされた境界ボックスを示し得る。境界とグラウンドトゥルースとの間のIoUは、境界とグラウンドトゥルースとの重なりの度合いを反映し得る。境界決定モジュール411は、1つ以上の境界に関連する1つ以上の決定されたIoUを比較し、最大のIoUを有する境界を、ターゲットオブジェクトに対応するターゲット境界として決定することができる。
AI処理デバイス142内のモジュールは、有線接続または無線接続を介して相互に接続、または通信することができる。有線接続は、金属ケーブル、光ケーブル、ハイブリッドケーブルなど、またはそれらの任意の組み合わせを含み得る。無線接続は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ブルートゥース(登録商標)、ジグビー、近距離無線通信(NFC)など、またはそれらの任意の組み合わせを含み得る。
上記の説明は単に例示の目的で提供されており、本開示の範囲を限定することを意図していないことに留意されたい。当業者であれば、本開示の教示の下で複数の変更および修正を行うことができる。しかしながら、それらの変形および修正は、本開示の範囲から逸脱するものではない。いくつかの実施形態では、AI処理デバイス142は、1つ以上の追加のモジュールをさらに含み得る。例えば、AI処理デバイス142は、AI処理デバイス142のモジュールによって生成されたデータを記憶するように構成された記憶モジュール(図4には示されていない)をさらに含み得る。
図5は、本開示のいくつかの実施形態による、ターゲットオブジェクトの境界を決定するための例示的なプロセス500を示すフローチャートである。例示のみを目的として、AI処理デバイス142は、プロセス500を実行する主題として説明され得る。しかしながら、当業者は、プロセス500が他のエンティティによって実行されてもよいことを理解されよう。例えば、当業者は、プロセス500の少なくとも一部が、図2に示されるようなコンピューティングデバイス200または図3に示されるようなモバイルデバイス300上でも実装され得ることを理解されよう。いくつかの実施形態では、プロセス500の1つ以上のオペレーションは、図1に示されているように、AI画像処理システム100で実施され得る。いくつかの実施形態では、プロセス500の1つ以上のオペレーションは、命令の形式として記憶デバイス150および/またはストレージ(例えば、ROM230、RAM240など)に格納され、呼び出され、および/またはサーバ140(例えば、サーバ140のAI処理デバイス142、またはサーバ140のAI処理デバイス142のプロセッサ220)によって実行され得る。いくつかの実施形態では、命令は、電子電流または電気信号の形で送信されてもよい。
510において、AI処理デバイス142(例えば、取得モジュール401)は、ターゲットオブジェクトを含む画像を取得することができる。いくつかの実施形態では、画像は、センサ110(例えば、スマートフォンのカメラ、自律車両のカメラ、インテリジェント防犯カメラ、交通カメラ)によって取り込まれた画像であってもよい。取り込まれた画像は、静止画、動画などでもよい。いくつかの実施形態では、画像は、人、動物(例えば、犬、猫)、車両(例えば、バイク、車、バス、トラック)、植物(例えば、花、木)、建物、風景など、またはそれらの任意の組み合わせの複数のオブジェクトを含み得る。いくつかの実施形態では、画像は、安全ベルト、傾斜した文字など、画像に対して傾斜したオブジェクトを含み得る。いくつかの実施形態では、ターゲットオブジェクトは、画像内で識別および/または検出されるオブジェクトを指す場合がある。例えば、ターゲットオブジェクトは、画像に対して傾斜したオブジェクト(例えば、安全ベルト、傾斜した文字)であってもよい。あるいは、画像内のすべてのオブジェクトを識別および/または検出する必要があり、画像内の各オブジェクトをターゲットオブジェクトと呼ぶ場合がある。
いくつかの実施形態では、AI処理デバイス142は、センサ110、端末130、記憶デバイス(例えば、記憶デバイス150)などの、AI画像処理システム100の1つ以上のコンポーネントから画像を取得することができる。代替的または追加的に、AI処理デバイス142は、ネットワーク120を介して外部ソースから画像を取得することができる。例えば、AI処理デバイス142は、ImageNetなどから画像を取得することができる。
520において、AI処理デバイス142(例えば、特徴マップ決定モジュール403)は、画像を畳み込みニューラルネットワーク(CNN)に入力することにより、複数の特徴マップを生成することができる。複数の特徴マップは、画像の特徴情報を含み得る。いくつかの実施形態では、CNNは、Zeiler&Fergusモデル(ZF)、VGG-16、RestNet 50などに基づいて生成されてもよい。いくつかの実施形態では、CNNは、1つ以上の畳み込み層および1つ以上のプーリング層を含み、全結合層のない訓練されたCNNであってもよい。畳み込み層は、画像(例えば、510で取得された画像)の特徴(または特徴マップ)を抽出するように構成され得る。プーリング層は、画像の特徴マップのサイズを縮小するように構成され得る。いくつかの実施形態では、画像はCNNに入力されてもよく、複数の特徴マップが生成されてもよい。単なる例として、CNNは、ZFモデルに基づいて決定され得る。600×1000のサイズの画像をZFモデルに入力することができ、256個の特徴マップをZFモデルから出力することができる。256個の特徴マップの各々のサイズは、40×60であってもよい。
いくつかの実施形態では、CNNは、転移学習に従って生成されてもよい。転移学習は、以前に得られた知識を使用することにより、トレーニング時間を短縮できる可能性がある。具体的には、ベースネットワークは、データセット(例えば、ImageNetデータセット、PASCAL VOC、COCOなど)から得られた複数の第1のトレーニングサンプルに基づいて、事前に訓練された学習済みネットワークであり得る。ベースネットワークは、1つ以上の層(例えば、畳み込み層、プーリング層)および複数の学習済み重みを含み得る。1つ以上の層およびそれに対応する学習済み重みのうちの少なくともいくつかは、ターゲットネットワークに転移され得る。例えば、ベースネットワークは、13の畳み込み層、4つのプーリング層、および3つの全結合層を含むVGG-16であり得る。13の畳み込み層と4つのプーリング層は、ターゲットネットワーク(CNNなど)に転移され得る。いくつかの実施形態では、畳み込み層および/またはプーリング層の学習済み重みは、調整する必要がない場合があり、またはデータセット(例えば、ImageNetデータセット、PASCAL VOC、COCOなど)から得られた複数の第2のトレーニングサンプルに基づいて微調整される場合がある。いくつかの実施形態では、ターゲットネットワークは、転移された層以外の1つ以上の追加の層をさらに含み得る。追加の層の重みは、データセット(ImageNetデータセット、PASCAL VOC、COCOなど)から取得された複数の第3のトレーニングサンプルに従って更新され得る。いくつかの実施形態では、転移学習とは異なり、CNNは、データセット(例えば、ImageNetデータセット、PASCAL VOC、COCOなど)から取得された複数の第4のトレーニングサンプルを使用して予備CNNをトレーニングすることによって直接生成されてもよいことを理解されたい。
530において、AI処理デバイス142(例えば、領域候補決定モジュール405)は、複数の特徴マップに基づいて複数の領域候補を決定することができる。いくつかの実施形態では、AI処理デバイス142は、領域候補ネットワーク(RPN)に従って複数の領域候補を決定することができる。図6に示されるように、RPNは、少なくとも1つの回帰層および少なくとも1つの分類層を含み得る。
いくつかの実施形態では、AI処理デバイス142は、複数の特徴マップ上でスライディングウィンドウをスライドすることができる。スライディングウィンドウは、例えば3×3、5×5などのサイズを有する畳み込みカーネルとも呼ばれる。複数の特徴マップ上でのスライディングウィンドウのスライディングにより、複数のスライディングウィンドウ位置が決定され得る。単なる例として、スライディングウィンドウのサイズは3×3であってもよく、複数の特徴マップのサイズは40×60であってもよい。複数の特徴マップ上でパディングオペレーション(例えば、パディング=1)を実行することができる。複数の特徴マップ上でスライディングウィンドウをスライドさせると、40×60(2400)のスライディングウィンドウの位置がおおよそ決定され得る。
各スライディングウィンドウ位置で、スライディングウィンドウは、複数の特徴マップのサブ領域と一致し得る。いくつかの実施形態では、AI処理デバイス142は、複数の特徴マップのサブ領域を多次元特徴ベクトルにマッピングすることができる。例えば、256個の特徴マップが存在する場合、256次元の特徴ベクトルがサブ領域で生成され得る。AI処理デバイス142は、510で得られた画像のピクセルにサブ領域の中心ピクセルをマッピングすることによってアンカーを生成することができる。いくつかの実施形態では、アンカーは、画像内のアンカーボックスのセット(例えば、k個のアンカーボックスを含む)に対応し得る。アンカーボックスのセットの各々は、長方形のボックスであり得る。アンカーは、アンカーボックスのセットの中心点であり得る。アンカーボックスのセットの各々は、スケールとアスペクト比に関連していてもよい。単なる例として、3つのスケール(例えば、128、256、512など)および3つのアスペクト比(例えば、1:1、1:2、2:1など)が適用される場合、アンカーボックスのセットの数は9であり得る。いくつかの実施形態では、AI処理デバイス142は、多次元特徴ベクトルおよび/またはアンカーボックスのセットを、少なくとも1つの回帰層および少なくとも1つの分類層にそれぞれ供給することができる。いくつかの実施形態では、少なくとも1つの回帰層は、境界ボックス回帰を実施して、アンカーボックスのセットに対応する予備領域候補のセットを決定するように構成され得る。少なくとも1つの回帰層の出力は、予備領域候補のセットの各々の4つの座標値を含み得る。いくつかの実施形態では、予備領域候補の4つの座標値は、予備領域候補の位置(例えば、対応するアンカーボックスのアンカーの座標(x,y))および予備領域候補のサイズ(例えば、予備領域候補の幅wと高さh)を含み得る。少なくとも1つの分類層は、予備領域候補のセットの各々のカテゴリを決定するように構成され得る。カテゴリは、前景または背景であり得る。少なくとも1つの分類層の出力は、予備領域候補のセットの各々の前景であるという第1のスコア、および背景であるという第2のスコアを含み得る。
上述したように、各スライディングウィンドウ位置で、(例えば、9つの)予備領域候補のセットが決定されてもよい。複数のスライディングウィンドウ位置(例えば、おおよそ40×60)があるので、複数(例えば、おおよそ20000)の予備領域候補が、複数のスライディングウィンドウ位置で決定され得る。いくつかの実施形態では、複数の予備領域候補が互いに非常に重複する場合がある。AI処理デバイス142は、複数の予備領域候補の一部を複数の領域候補として選択することができる。いくつかの実施形態では、AI処理デバイス142は、非最大抑制(NMS)を使用して複数の領域候補を選択することができる。具体的には、AI処理デバイス142は、複数の予備領域候補の各々の、前景である第1のスコア、および背景である第2のスコアならびに複数の予備領域候補の各々の4つの座標値に基づいて複数の領域候補を決定することができる。いくつかの実施形態では、AI処理デバイス142は、複数の予備領域候補の各々とグラウンドトゥルースとの間のIntersection-over-Union(IoU)を決定することができる。グラウンドトゥルースは、ターゲットオブジェクトのラベル付けされた境界ボックスであってもよい。AI処理デバイス142は、0.7より大きいIoUを有する予備領域候補をポジティブサンプルとして決定し、0.3未満のIoUを有する予備領域候補をネガティブサンプルとして決定することができる。AI処理デバイス142は、ポジティブサンプルおよびネガティブサンプル以外の予備領域候補を削除することができる。いくつかの実施形態では、AI処理デバイス142は、ポジティブサンプルおよびネガティブサンプルから複数の領域候補を選択することができる。いくつかの実施形態では、AI処理デバイス142は、ポジティブサンプルの各々の、前景であるという第1のスコアに基づいてポジティブサンプルをランク付けし、ランク付けされたポジティブサンプルに基づいて複数のポジティブサンプルを選択することができる。AI処理デバイス142は、ネガティブサンプルの各々の、背景であるという第2のスコアに基づいてネガティブサンプルをランク付けし、ランク付けされたネガティブサンプルに基づいて複数のネガティブサンプルを選択することができる。選択されたポジティブサンプルおよび選択された
ネガティブサンプルは、複数の領域候補を構成することができる。いくつかの実施形態では、AI処理デバイス142は、300の領域候補を選択することができる。選択されたポジティブサンプルの数は、選択されたネガティブサンプルの数と同じであっても異なっていてもよい。いくつかの実施形態では、非最大抑制(NMS)を使用して領域候補を選択する前に、AI処理デバイス142は、まず、画像の境界を越える予備領域候補(境界横断予備領域候補(cross-boundary preliminary region proposal)とも呼ばれる)を削除することができる。
540において、AI処理デバイス142(例えば、プーリング領域候補決定モジュール407)は、複数の領域候補および複数の特徴マップに基づいて、複数のプーリング領域候補を決定することができる。いくつかの実施形態では、AI処理デバイス142は、複数の領域候補を複数の特徴マップにマッピングして、複数の候補特徴マップ(関心領域(ROI)とも呼ばれる)を決定することができる。いくつかの実施形態では、複数の候補特徴マップ(またはROI)は、さらなる処理のために分類器に入力される。分類器は、標準サイズ(例えば、7×7)の候補特徴マップのみを受け入れることができる。したがって、AI処理デバイス142は、複数の候補特徴マップを標準サイズにサイズ変更してもよい。AI処理デバイス142は、複数の候補特徴マップ(またはROI)に対してプーリングを実行することにより、複数のプーリング領域候補を決定することができる。いくつかの実施形態では、プーリングは、最大プーリング、平均プーリングなどを含み得る。いくつかの実施形態では、複数のプーリング領域候補は、標準サイズ(例えば、7×7)に対応し得、さらなる処理のために分類器に入力され得る。例えば、プーリング領域候補は、分類器の全結合層に送信される固定長のベクトルとして決定され得る。
550において、AI処理デバイス142(例えば、分類モジュール409)は、分類器によって、複数のプーリング領域候補を1つ以上のオブジェクトカテゴリまたは背景カテゴリに分類することができる。いくつかの実施形態では、分類器は、サポートベクトルマシン(SVM)分類器、Bayer分類器、決定木分類器、ソフトマックス分類器など、またはそれらの任意の組み合わせを含み得る。
いくつかの実施形態では、1つ以上のプーリング領域候補が、背景カテゴリに分類され得る。例えば、オペレーション530に関連して説明されたように、領域候補は、複数のポジティブサンプルおよび複数のネガティブサンプルを含み得る。同様に、プーリング領域候補は、複数のポジティブサンプルおよび複数のネガティブサンプルに対応する場合がある。いくつかの実施形態では、プーリング領域候補における複数のネガティブサンプルは、背景カテゴリに分類され得る。プーリング領域候補が背景カテゴリと決定された場合、プーリング領域候補は省略され、さらなる処理が行われない場合がある。
いくつかの実施形態では、ポジティブサンプルに対応するプーリング領域候補は、1つ以上のオブジェクトカテゴリのうちの1つに分類され得る。1つ以上のオブジェクトカテゴリは、AI画像処理システム100のデフォルト設定であり得、および/またはユーザによって調整され得る。1つ以上のオブジェクトカテゴリは、ターゲットオブジェクトのカテゴリを含み得る。複数のプーリング領域候補は、ターゲットオブジェクトに対応する1つ以上のプーリング領域候補を含み得る。AI処理デバイス142は、複数のプーリング領域候補からターゲットオブジェクトに対応する1つ以上のプーリング領域候補を選択することができる。
560において、AI処理デバイス142(例えば、境界決定モジュール411)は、1つ以上のプーリング領域候補のうちの少なくとも1つに基づいて、画像内のターゲットオブジェクトのターゲット境界を決定することができる。いくつかの実施形態では、ターゲット境界は、例えば四辺形のボックスなどの多角形のボックスであってもよい。
いくつかの実施形態では、1つ以上のプーリング領域候補の各々は、複数の隅(例えば、4つの隅、5つの隅、8つの隅など)を有することができる。プーリング領域候補の場合、AI処理デバイス142は、対応する隅の位置に従って、複数の隅の各隅について複数のクロッピング戦略を決定することができる。単なる例として、AI処理デバイス142は、複数の隅の各々について5つのクロッピング戦略を決定することができる。いくつかの実施形態では、各隅について、AI処理デバイス142は、プーリング領域候補に基づいて、複数(例えば5つ)のクロッピング戦略のうちの1つを隅の所望のクロッピング戦略として決定することができる。単なる例として、AI処理デバイス142は、プーリング領域候補に基づいて、各隅のクロッピング方向およびクロッピング長さを決定することができる。ある隅のクロッピング方向は、その隅の複数のクロッピング戦略の1つに限定してもよい。いくつかの実施形態では、AI処理デバイス142は、例えば、クロッピング方向およびクロッピング長さに基づいて、所望のクロッピング戦略に従って複数の隅の各々をクロッピングすることにより、プーリング領域候補をトリミングすることができる。いくつかの実施形態では、各隅の複数のクロッピング戦略は、偽値(false)のクロッピング戦略および/またはターゲット位置のクロッピング戦略を含み得る。隅の偽値のクロッピング戦略は、隅がターゲットオブジェクト内のポイントに対応し得ることを示すことができる。隅のターゲット位置のクロッピング戦略は、隅がターゲットオブジェクトの境界ポイントに対応し得ることを示すことができる。隅のクロッピング方向が偽値のクロッピング戦略に対応する場合、AI処理デバイス142は、隅のクロッピングを停止して、プーリング領域候補を放棄することができる。隅のクロッピング方向がターゲット位置のクロッピング戦略に対応する場合、AI処理デバイス142は、隅のクロッピングを停止することができる。各隅のクロッピング方向がターゲット位置のクロッピング戦略に対応する場合、AI処理デバイス142は、クロッピングされた複数の隅に基づいてトリミングされたプーリング領域候補に対する境界を識別し、その境界を画像にマッピングしてターゲットオブジェクトの境界を決定することができる。境界の決定に関する詳細
は、本開示の他の箇所(例えば、図7およびその説明)で見られる。
いくつかの実施形態では、AI処理デバイス142は、1つ以上のプーリング領域候補に基づいて、ターゲットオブジェクトに対応する1つ以上の境界を決定することができる。1つ以上の境界の各々は、プロセス700に従って決定されてもよく、その説明は本明細書では繰り返されない。AI処理デバイス142は、1つ以上の境界の各々とグラウンドトゥルースとの間のIoUを決定することができる。いくつかの実施形態では、グラウンドトゥルースは、ターゲットオブジェクトのラベル付けされた境界ボックスを示し得る。境界とグラウンドトゥルースとの間のIoUは、境界とグラウンドトゥルースとの重なりの度合いを反映し得る。AI処理デバイス142は、1つ以上の境界に関連する1つ以上の決定されたIoUを比較し、最大のIoUを有する境界を、ターゲットオブジェクトに対応するターゲット境界として決定することができる。
本開示では、プーリング領域候補の場合、プーリング領域候補の各隅は、対応する隅に関連する情報を考慮したそのクロッピング戦略の1つに従ってクロッピングされ得る。加えて、プーリング領域候補の特徴を考慮したプーリング領域候補に基づいて、プーリング領域候補の各隅のクロッピング方向および/またはクロッピング長さを決定することができる。したがって、本開示で開示されるプロセスに従って決定されたターゲットオブジェクトの境界は、ターゲットオブジェクト、特に、傾斜したターゲットオブジェクトにより適しており、ターゲットオブジェクトの検出および/または位置特定の精度を向上させることができる。本開示で開示されるように、ターゲットオブジェクトについて、1つ以上の境界が決定され得る。1つ以上の境界の中で最大のIoUを有する境界が、ターゲット境界として決定され得る。すなわち、グラウンドトゥルースとの重なりの度合いが最も大きい境界をターゲット境界として決定することができ、これにより、ターゲットオブジェクトの検出および/または位置特定の精度をさらに向上させることができる。
プロセス500に関する上記の説明は単に例示の目的で提供されており、本開示の範囲を限定することを意図していないことに留意されたい。当業者であれば、本開示の教示の下で複数の変更および修正を行うことができる。しかしながら、それらの変形および修正は、本開示の範囲から逸脱するものではない。いくつかの実施形態では、560において、AI処理デバイス142は、ターゲットオブジェクトに対応する複数の境界を決定する必要がない場合がある。AI処理デバイス142がターゲットオブジェクトの境界を決定すると、AI処理デバイス142は、境界をターゲット境界として決定することができ、オペレーション560は終了することができる。いくつかの実施形態では、プロセス500に従って、画像内の1つ以上のターゲットオブジェクト(例えば、すべてのオブジェクト)の境界が同時に決定され得る。いくつかの実施形態では、プロセス500を繰り返して、複数の異なる画像内のターゲットオブジェクトの境界を決定することができる。
図6は、本開示のいくつかの実施形態による例示的な領域候補ネットワーク(RPN)を示す概略図である。図6に示すように、RPNはスライディングウィンドウを導入する。スライディングウィンドウは、複数の特徴マップ上をスライドするように構成されている。図6に示すように、スライディングウィンドウは、特定のスライディングウィンドウ位置での複数の特徴マップのサブ領域と一致する。スライディングウィンドウのサイズは3×3である。サブ領域は、多次元の特徴ベクトル、例えば中間層に示される256次元(256-d)の特徴ベクトルにマッピングされる。加えて、サブ領域の中心ピクセルOが画像のピクセルにマッピングされ、アンカーO’が生成される。アンカーボックスのセット(k個のアンカーボックスなど)は、アンカーO’に基づいて決定される。アンカーボックスのセットの各々は長方形のボックスであり、アンカーO’はアンカーボックスのセットの中心点である。いくつかの実施形態では、3つのスケールおよび3つのアスペクト比があり得、9つのアンカーボックスが画像上で決定され得る。
図6に示されるように、RPNは、(reg層として示される)回帰層および(cls層として示される)分類層を含む。回帰層は、境界ボックス回帰を実施して、アンカーボックスに対応する予備領域候補を決定するように構成され得る。分類層は、予備領域候補のカテゴリを決定するように構成され得る。図示されるように、多次元特徴ベクトル(すなわち、256-d特徴ベクトル)および/またはアンカーボックスのセット(すなわち、k個のアンカーボックス)は、それぞれ回帰層および分類層に供給される。回帰層の出力は、予備領域候補のセットの各々の4つの座標値(4つの座標とも呼ばれる)を含む。予備領域候補の4つの座標値は、予備領域候補の位置(例えば、対応するアンカーボックスのアンカーの座標(x,y))と予備領域候補のサイズ(例えば、予備領域候補の幅wおよび高さh)を含み得る。分類層の出力は、前景であるという第1のスコアと背景であるという第2のスコアを含む、予備領域候補の各セットの2つのスコアを含む。
上記のように、一連の予備領域候補が特定のスライディングウィンドウ位置で決定される。複数の特徴マップ上でのスライディングウィンドウのスライディングにより、複数の予備領域候補が複数のスライディングウィンドウ位置で決定され得る。いくつかの実施形態では、RPNは、さらなる処理のための領域候補として、複数の予備領域候補の一部を選択することができる。領域候補の選択に関するさらなる説明は、本開示の他の箇所(例えば、プロセス500のオペレーション530およびその関連する説明)で見られる。
図7は、本開示のいくつかの実施形態による、プーリング領域候補に基づいてターゲットオブジェクトの境界を決定するための例示的なプロセス700を示すフローチャートである。例示のみを目的として、AI処理デバイス142は、プロセス700を実行する対象として説明され得る。しかしながら、当業者は、プロセス700が他のエンティティによって実行されてもよいことを理解されよう。例えば、当業者は、プロセス700の少なくとも一部が、図2に示されるようなコンピューティングデバイス200または図3に示されるようなモバイルデバイス300上で実装されてもよいことを理解されよう。いくつかの実施形態では、プロセス700の1つ以上のオペレーションは、図1に示されているように、AI画像処理システム100で実施され得る。いくつかの実施形態では、プロセス700の1つ以上のオペレーションは、命令の形式として記憶デバイス150および/またはストレージ(例えば、ROM230、RAM240など)に格納され、呼び出され、および/またはサーバ140(例えば、サーバ140のAI処理デバイス142、またはサーバ140のAI処理デバイス142のプロセッサ220)によって実行され得る。いくつかの実施形態では、命令は、電子電流または電気信号の形で送信されてもよい。いくつかの実施形態では、プロセス500のオペレーション560の一部は、プロセス700に従って実行されてもよい。
いくつかの実施形態では、プーリング領域候補は、複数の隅を有し得る。710において、AI処理デバイス142(例えば、境界決定モジュール411)は、複数の隅の各々の位置に従って、プーリング領域候補の複数の隅の各々について複数のクロッピング戦略を決定することができる。
いくつかの実施形態では、隅の位置は、他の隅の位置に対する隅の位置を指すことができる。特定の実施形態では、プーリング領域候補は、長方形のボックスであり得、四隅を含み得る。四隅は、左上隅、右上隅、左下隅、および右下隅を含み得る。AI処理デバイス142は、四隅の各々の位置に基づいて、四隅の各々について複数のクロッピング戦略を決定することができる。具体的には、AI処理デバイス142は、左上隅のための複数のクロッピング戦略を決定することができる。左上隅の複数のクロッピング戦略は、右へのクロッピング、下へのクロッピング、右下へのクロッピング、ターゲット位置、偽値など、またはそれらの任意の組み合わせを含み得る。AI処理デバイス142は、右上隅のための複数のクロッピング戦略を決定することができる。右上隅の複数のクロッピング戦略は、左へのクロッピング、下へのクロッピング、左下へのクロッピング、ターゲット位置、偽値など、またはそれらの任意の組み合わせを含み得る。AI処理デバイス142は、左下隅のための複数のクロッピング戦略を決定することができる。左下隅の複数のクロッピング戦略は、右へのクロッピング、上へのクロッピング、右上へのクロッピング、ターゲット位置、または偽値を含み得る。AI処理デバイス142は、右下隅のための複数のクロッピング戦略を決定することができる。右下隅の複数のクロッピング戦略は、左へのクロッピング、上へのクロッピング、左上へのクロッピング、ターゲット位置、偽値など、またはそれらの任意の組み合わせを含み得る。上記から分かるように、各隅の複数のクロッピング戦略は、偽値のクロッピング戦略および/またはターゲット位置のクロッピング戦略を含み得る。隅の偽値のクロッピング戦略は、隅がターゲットオブジェクト内のポイントに対応し得ることを示すことができる。隅のターゲット位置のクロッピング戦略は、隅がターゲットオブジェクトの境界ポイントに対応し得ることを示すことができる。各隅のクロッピング戦略および隅の数は、単に例示の目的で提供されており、本開示の範囲を限定することを意図していないことに留意されたい。
720において、AI処理デバイス142(例えば、境界決定モジュール411)は、プーリング領域候補に基づいて、複数のクロッピング戦略から複数の隅の各々のクロッピング戦略を決定することができる。いくつかの実施形態では、AI処理デバイス142は、プーリング領域候補に基づいて、各隅のクロッピング方向およびクロッピング長さを決定することができる。例えば、AI処理デバイス142は、プーリング領域候補におけるピクセル(例えば、ターゲットオブジェクトを表すピクセル、背景を表すピクセル)の特徴を分析し、分析結果に基づいてクロッピング方向および/またはクロッピング長さを決定することができる。クロッピング方向は、複数のクロッピング戦略の1つに制限され得る。クロッピング長さは、数ピクセルの長さ、例えば、0~10ピクセルを含む長さであり得る。
730において、AI処理デバイス142(例えば、境界決定モジュール411)は、複数の隅のうちの1つが偽値のクロッピング戦略に対応するか否かを決定することができる。いくつかの実施形態では、決定された隅のクロッピング方向が偽値のクロッピング戦略に対応する場合、隅はターゲットオブジェクト内のポイントに対応することができる。つまり、プーリング領域候補には、ターゲットオブジェクト全体が含まれていない。決定された隅のクロッピング方向がターゲット位置のクロッピング戦略に対応している場合、隅はターゲットオブジェクトの境界ポイントに対応することができる。それ以外の場合、決定された隅のクロッピング方向が偽値のクロッピング戦略とターゲット位置のクロッピング戦略以外の他のクロッピング戦略に対応している場合、隅はオブジェクトからの距離を有するポイントに対応することができる。複数の隅の少なくとも1つが偽値のクロッピング戦略に対応するという決定に応じて、AI処理デバイス142は、オペレーション740に進むことができる。複数の隅の各々が偽値のクロッピング戦略に対応しないという決定に応じて、AI処理デバイス142は、オペレーション750に進むことができる。
740において、AI処理デバイス142(例えば、境界決定モジュール411)は、プーリング領域候補を放棄することができる。プーリング領域候補にはターゲットオブジェクト全体が含まれないため、プーリング領域候補に基づいてターゲットオブジェクトの境界を決定することはできない。したがって、AI処理デバイス142は、プーリング領域候補を放棄することができる。
750において、AI処理デバイス142(例えば、境界決定モジュール411)は、複数の隅の各々がターゲット位置のクロッピング戦略に対応するか否かを決定することができる。複数の隅の少なくとも1つがターゲット位置のクロッピング戦略に対応しないという決定に応じて、AI処理デバイス142は、オペレーション760に進むことができる。
760において、AI処理デバイス142(例えば、境界決定モジュール411)は、少なくとも1つの隅の決定されたクロッピング戦略に従って少なくとも1つの隅をクロッピングすることによってプーリング領域候補をトリミングすることができる。すなわち、隅がターゲット位置のクロッピング戦略および偽値のクロッピング戦略に対応しない場合、AI処理デバイス142は、720で決定された隅のクロッピング戦略に基づいて隅をクロッピングすることができる。少なくとも1つの隅がクロッピング戦略に従ってクロッピングされると、トリミングされたプーリング領域候補が決定され得る。
単なる例として、プーリング領域候補の右上隅について、決定されたクロッピング方向が左へのクロッピングのクロッピング戦略に対応する場合、AI処理デバイス142は、右上隅を左に向かってクロッピングして、右上隅の位置を更新することができる。別の例として、プーリング領域候補の左上隅について、決定されたクロッピング方向が右へのクロッピングのクロッピング戦略に対応する場合、AI処理デバイス142は、左上隅を右に向かってクロッピングして、右上隅の位置を更新することができる。さらなる例として、プーリング領域候補の左下隅について、決定されたクロッピング方向が右上へのクロッピングのクロッピング戦略に対応する場合、AI処理デバイス142は、左下隅を右上に向かってクロッピングして、左下隅の位置を更新することができる。
770において、AI処理デバイス142(例えば、境界決定モジュール411)は、長方形のボックスを決定するために、クロッピングされた複数の隅に基づいて境界マッピングを実行することができる。特定の実施形態では、上述のように、プーリング領域候補は、長方形のボックスであり得、四隅を含み得る。隅ごとに異なるクロッピング戦略が適用されるため、トリミングされたプーリング領域候補は、長方形のボックス以外の四辺形のボックスになり得る。いくつかの実施形態では、上記のクロッピング戦略は、(トリミングされた)プーリング領域候補が長方形のボックスである場合にのみ使用できる。したがって、AI処理デバイス142は、トリミングされたプーリング領域候補に対して境界マッピングを実行することができる。具体的には、AI処理デバイス142は、四隅に基づいて2つの対角線を決定し、より長い対角線をターゲット対角線として決定することができる。AI処理デバイス142は、ターゲット対角線に基づいて長方形のボックスを決定することができる。
780において、AI処理デバイス142(例えば、境界決定モジュール411)は、更新されたプーリング領域候補を決定するために、長方形のボックスを標準サイズにサイズ変更する。いくつかの実施形態では、AI処理デバイス142は、更新されたプーリング領域候補を決定するために、プーリングを実行することによって長方形のボックスをサイズ変更することができる。更新されたプーリング領域候補は、標準サイズであり、分類器によって受け入れられてもよい。更新されたプーリング領域候補が決定された後、AI処理デバイス142は、オペレーション720から780に進み、次の反復を開始することができる。オペレーション720から770の説明は、本開示の他の箇所で見られ、その説明は繰り返されない。AI処理デバイス142は、複数の隅の各々がターゲット位置のクロッピング戦略に対応するまで、オペレーション720から780を繰り返すことができる。
730において、複数の隅の各々が偽値のクロッピング戦略に対応しないという決定に応じて、AI処理デバイス142は、オペレーション750に進むことができる。750において、AI処理デバイス142は、複数の隅の各々がターゲット位置のクロッピング戦略に対応するか否かを決定することができる。複数の隅の各々がターゲット位置のクロッピング戦略に対応するという決定に応じて、AI処理デバイス142は、複数の隅のクロッピングを停止することができる。AI処理デバイス142は、オペレーション790に進むことができる。
790において、AI処理デバイス142(例えば、境界決定モジュール411)は、クロッピングされた複数の隅に基づいて、トリミングされたプーリング領域候補に対する境界を識別することができる。特定の実施形態では、(トリミングされた)プーリング領域候補は、四隅を含み得る。AI処理デバイス142は、四隅を接続して、特徴マップ上の境界を決定することができる。
795において、AI処理デバイス142(例えば、境界決定モジュール411)は、ターゲットオブジェクトの境界を決定するために、画像に境界をマッピングすることができる。いくつかの実施形態では、ターゲットオブジェクトの境界は四辺形のボックスであり得る。
本開示では、プーリング領域候補の各隅について、対応する隅の位置に基づいて複数のクロッピング戦略を決定することができる。さらに、各隅のクロッピング方向および/またはクロッピング長さは、プーリング領域候補におけるピクセルの特徴に基づいて決定され得る。つまり、隅をクロッピングするために、隅の位置および/またはプーリング領域候補の特徴が考慮されている。したがって、本開示で開示されるプロセスに従って決定されたターゲットオブジェクトの境界は、ターゲットオブジェクト、特に、傾斜したターゲットオブジェクトにより適しており、ターゲットオブジェクトの検出および/または位置特定の精度を向上させることができる。例えば、図9Cに示されるように、傾斜したターゲットオブジェクト(例えば、傾斜した文字)の場合、本開示は、傾斜したターゲットオブジェクトに適切な境界を提供し、傾斜したターゲットオブジェクトの検出および/または位置特定の精度をさらに改善し得る。
プロセス700に関する上記の説明は単に例示の目的で提供されており、本開示の範囲を限定することを意図していないことに留意されたい。当業者であれば、本開示の教示の下で複数の変更および修正を行うことができる。しかしながら、それらの変形および修正は、本開示の範囲から逸脱するものではない。例えば、オペレーション730および750は同時に実行されてもよい。別の例として、オペレーション750は、オペレーション730の前に実行されてもよい。いくつかの実施形態では、AI処理デバイス142は、プロセス700を繰り返して、ターゲットオブジェクトに対応する1つ以上の境界を決定することができる。
図8は、本開示のいくつかの実施形態による、ターゲットオブジェクトの境界を決定するための例示的なプロセスを示す概略図である。図8に示すように、畳み込みニューラルネットワーク(CNN)に画像が入力される。いくつかの実施形態では、画像は、1つ以上のターゲットオブジェクト(例えば、検出されるオブジェクト)を含み得る。いくつかの実施形態では、CNNは、ZFモデル、VGG-16、RestNet 50などに基づいて生成されてもよい。いくつかの実施形態では、CNNは、1つ以上の畳み込み層、1つ以上のプーリング層を含み、全結合層がなくてもよい。画像をCNNに入力することにより、複数の特徴マップを生成することができる。複数の特徴マップは、画像の特徴情報を含み得る。特徴マップの生成に関する詳細は、本開示の他の箇所(例えば、オペレーション510および520、ならびにそれらの説明)で見られる。
図8に示すように、複数の特徴マップは、領域候補ネットワーク(RPN)に入力され得る。RPNでは、スライディングウィンドウが複数の特徴マップ上をスライドすることができる。複数の特徴マップ上でのスライディングウィンドウのスライディングにより、複数のスライディングウィンドウ位置が決定され得る。各スライディングウィンドウ位置で、多次元特徴ベクトル(例えば、256次元特徴ベクトル)が生成されてもよく、および/または画像内のアンカーが決定されてもよい。アンカーは、アンカーボックスのセットに対応することができ、各々のアンカーボックスは、スケールおよびアスペクト比に関連付けられ得る。図8に示すように、RPNは、少なくとも1つの回帰層と少なくとも1つの分類層を含む。多次元特徴ベクトルおよび/またはアンカーボックスのセットは、少なくとも1つの回帰層および少なくとも1つの分類層に供給される。少なくとも1つの回帰層の出力は、予備領域候補のセットの各々の4つの座標値を含み得る。少なくとも1つの分類層の出力は、予備領域候補のセットの各々の前景であるという第1のスコア、および背景であるという第2のスコアを含み得る。同様に、複数のスライディングウィンドウで、複数の予備領域候補が決定され得る。いくつかの実施形態では、複数の予備領域候補の一部が、複数の領域候補として選択され得る。複数の領域候補は、ポジティブサンプル(例えば、前景)およびネガティブサンプル(例えば、背景)を含み得る。複数の領域候補をさらに処理することができる。領域候補の決定に関する詳細は、本開示の他の箇所(例えば、プロセス500のオペレーション530)で見られる。
図8に示すように、ROIプーリングオペレーションは、複数の特徴マップおよび複数の領域候補に基づいて実行される。具体的には、複数の領域候補を複数の特徴マップにマッピングして、複数の候補特徴マップ(ROIとも呼ばれる)を決定することができる。複数のROIは、複数のROIに対してプーリングを実行することにより、標準サイズ(例えば、7×7)にサイズ変更され得る。次に、複数のプーリング領域候補を決定することができる。複数のプーリング領域候補は、さらに処理するために分類器に入れることができる。
複数のプーリング領域候補は、分類器によって、1つ以上のオブジェクトカテゴリ(例えば、K個のカテゴリ)または背景カテゴリに分類され得る。プーリング領域候補が背景カテゴリとして決定された場合、プーリング領域候補は省略および/または削除され得る。複数のプーリング領域候補は、ターゲットオブジェクトに対応する1つ以上のプーリング領域候補を含み得る。プーリング領域候補の場合、画像内のターゲットオブジェクトの境界は、プーリング領域候補に基づいて決定され得る。ターゲットオブジェクトの境界を決定するために、プーリング領域候補が1回以上トリミングされ得る。いくつかの実施形態では、プーリング領域候補は、複数の隅を含み得る。図8に示すように、プーリング領域候補は、四隅、すなわち、左上(TL)隅、右上(TR)隅、左下(BL)隅、および右下(BR)隅を含む。四隅の各々には5つのクロッピング戦略が含まれている。具体的には、左上隅の5つの戦略は、右へのクロッピング(→)、右下へのクロッピング(右下矢印)、下へのクロッピング(↓)、ターゲット位置(T)、および偽値(F)を含む。右上隅の5つの戦略は、左へのクロッピング(←)、左下へのクロッピング(左下矢印)、下へのクロッピング(↓)、ターゲット位置(T)、および偽値(F)を含む。左下隅の5つの戦略は、右へのクロッピング(→)、右上へのクロッピング(右上矢印)、上へのクロッピング(↑)、ターゲット位置(T)、および偽値(F)を含む。右下隅の5つの戦略は、左へのクロッピング(←)、左上へのクロッピング(左上矢印)、上へのクロッピング(↑)、ターゲット位置(T)、および偽値(F)を含む。四隅の各々のクロッピング戦略は、プーリング領域候補のピクセルの特徴に基づいて決定され得る。四隅のいずれかが偽値のクロッピング戦略に対応するか否かを決定することができる。四隅の少なくとも1つが偽値のクロッピング戦略に対応している場合、ターゲットオブジェクト全体を含まないプーリング領域候補であると決定される場合があり、プーリング領域候補が放棄または拒否され得る。四隅の各々が偽値のクロッピング戦略に対応しない場合、四隅の各々がターゲット位置のクロッピング戦略に対応するか否かを決定することができる。ある隅がターゲット位置のクロッピング戦略に対応していない場合、決定されたクロッピング戦略に基づいてこの隅をクロッピングすることができる。各隅がその隅のクロッピング戦略に従ってクロッピングされると、トリミングされたプーリング領域候補が決定される。長方形のボックスを決定するために、クロッピングされた四隅に基づいて境界マッピングを実行できる。長方形のボックスは標準サイズにサイズ変更され、更新されたプーリング領域候補が決定される。更新されたプーリング領域候補はさらにトリミングされ得、次の反復が実行され得る。四隅の各々がターゲット位置のクロッピング戦略に対応している場合、四隅の各々がクロッピングされない場合がある。(トリミングされた)プーリング領域候補の境界を識別できる。境界を画像にマッピングして、ターゲットオブジェクトの境界を決定できる。ターゲットオブジェクトの境界の決定のさらなる説明は、本開示の他の箇所(例えば、図7およびその説明)で見られる。
図9A~図9Cは、本開示のいくつかの実施形態による画像を示す概略図である。図9A~図9Cに示すように、画像は、ターゲットオブジェクト、すなわち、傾斜した文字「CHANEL」を含み得る。図9Bは、Faster-RCNNアルゴリズムに従って決定される「CHANEL」の境界902(境界ボックスとも呼ばれる)を示している。図9Cは、本開示で説明されるプロセスに従って決定される「CHANEL」の境界904を示している。境界902は、ターゲットオブジェクトよりも多くの背景を含み、ターゲットオブジェクトの位置を正確に決定することができない。境界904は、より少ない背景を含み、これは、ターゲットオブジェクトの正確な位置特定を実装することができる。したがって、本開示で説明するプロセスは、オブジェクト検出の精度を向上させることができる。
基本的な概念をこのように説明してきたが、この詳細な開示を読んだ後、前述の詳細な開示は例としてのみ提示されることを意図しており、限定的ではないことが当業者には明らかであろう。本明細書では明示的に述べられていないが、様々な変更、改良、および修正が行われる可能性があり、当業者を対象とする。これらの変更、改良、および修正は、本開示によって示唆されることが意図されており、本開示の例示的な実施形態の趣旨および範囲内にある。
さらに、本開示の実施形態を説明するために特定の用語が使用されている。例えば、「一実施形態」、「実施形態」、および/または「いくつかの実施形態」という用語は、実施形態に関連して説明される特定の特徴、構造または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の様々な部分における「実施形態」または「一実施形態」または「代替実施形態」への2つ以上の言及は、必ずしもすべてが同じ実施形態を指すとは限らないことを強調し、理解されたい。さらに、特定の特徴、構造、または特性は、本開示の1つ以上の実施形態において適切であるように組み合わせることができる。
さらに、当業者には理解されるように、本開示の態様は、新規かつ有用なプロセス、機械、製造、または物質の組成、またはそれらの新規かつ有用な改良を含む、いくつかの特許可能なクラスまたはコンテキストのいずれかで、本明細書において例示および説明され得る。したがって、本開示の態様は、完全にハードウェア、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書で「ユニット」、「モジュール」、または「システム」と総称され得るソフトウェアおよびハードウェア実装の組み合わせで実装され得る。さらに、本開示の態様は、コンピュータ可読プログラムコードがその上に実現される1つ以上のコンピュータ可読媒体で実現されるコンピュータプログラム製品の形態をとることができる。
コンピュータ可読信号媒体は、例えば、ベースバンド内または搬送波の一部として、コンピュータ可読プログラムコードがその中に実現された伝搬データ信号を含み得る。そのような伝搬信号は、電磁、光学など、またはそれらの任意の適切な組み合わせを含む、様々な形態のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、デバイス、もしくはデバイスによって、またはそれらに関連して使用するためのプログラムを通信、伝播、または移送することができる任意のコンピュータ可読媒体とすることができる。コンピュータ可読信号媒体上で実現されたプログラムコードは、無線、有線、光ファイバケーブル、RFなど、またはそれらの任意の適切な組み合わせを含む、任意の適切な媒体を使用して送信され得る。
本開示の態様のオペレーションを実行するためのコンピュータプログラムコードは、Java(登録商標)、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Pythonなどのオブジェクト指向プログラミング言語、「C」プログラミング言語、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAPなどの従来の手続き型プログラミング言語、Python、Ruby、Groovyなどの動的プログラミング言語、またはその他のプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれてもよい。プログラムコードは、完全にユーザのコンピュータで、一部はユーザのコンピュータで、スタンドアロンソフトウェアパッケージとして、一部はユーザのコンピュータおよび一部はリモートコンピュータで、または完全にリモートコンピュータまたはサーバで実行されてもよい。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、接続は、外部コンピュータに(例えば、インターネット経由でインターネットサービスプロバイダを使用して)、もしくはクラウドコンピューティング環境で作られてもよく、またはサービスとしてのソフトウェア(SaaS)などのサービスとして提供されてもよい。
さらに、処理要素もしくはシーケンスの列挙された順序、または数字、文字、もしくは他の指定の使用は、したがって、特許請求されたプロセスおよび方法を、請求項で指定され得る場合を除いて任意の順序に限定することを意図しない。上記の開示は、開示の様々な有用な実施形態であると現在考えられるものを様々な例を通して説明しているが、そのような詳細は単にその目的のためであり、添付の特許請求の範囲は開示された実施形態に限定されないが、反対に、開示された実施形態の趣旨および範囲内にある修正および同等の配置をカバーすることを意図していることを理解されたい。例えば、上記の様々なコンポーネントの実装はハードウェアデバイスで実現されてもよいが、ソフトウェアのみのソリューション、例えば既存のサーバもしくはモバイルデバイスへのインストールとして実装されてもよい。
同様に、本開示の実施形態の前述の説明では、様々な実施形態の1つ以上の理解を助ける開示を簡素化する目的で、様々な特徴が、単一の実施形態、図、またはその説明にまとめられている。しかしながら、この開示の方法は、特許請求される主題が各請求項で明示的に列挙されるよりも多くの特徴を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、特許請求される主題は、前述の単一の開示された実施形態のすべての特徴より少ない場合がある。