IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-528426バックプロパゲーションを使用したセンサ補正
<>
  • 特表-バックプロパゲーションを使用したセンサ補正 図1
  • 特表-バックプロパゲーションを使用したセンサ補正 図2
  • 特表-バックプロパゲーションを使用したセンサ補正 図3
  • 特表-バックプロパゲーションを使用したセンサ補正 図4
  • 特表-バックプロパゲーションを使用したセンサ補正 図5
  • 特表-バックプロパゲーションを使用したセンサ補正 図6
  • 特表-バックプロパゲーションを使用したセンサ補正 図7
  • 特表-バックプロパゲーションを使用したセンサ補正 図8
  • 特表-バックプロパゲーションを使用したセンサ補正 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-30
(54)【発明の名称】バックプロパゲーションを使用したセンサ補正
(51)【国際特許分類】
   G06T 7/00 20170101AFI20240723BHJP
   G06N 3/0464 20230101ALI20240723BHJP
   G06N 3/045 20230101ALI20240723BHJP
   G06V 10/82 20220101ALI20240723BHJP
【FI】
G06T7/00 350C
G06N3/0464
G06N3/045
G06V10/82
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023577932
(86)(22)【出願日】2022-06-15
(85)【翻訳文提出日】2023-12-18
(86)【国際出願番号】 EP2022066414
(87)【国際公開番号】W WO2022268620
(87)【国際公開日】2022-12-29
(31)【優先権主張番号】17/358,725
(32)【優先日】2021-06-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】チョ、ミンシク
(72)【発明者】
【氏名】ファン、インソク
(72)【発明者】
【氏名】ユ、チュングク
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA06
5L096DA02
5L096HA11
5L096JA22
5L096KA04
(57)【要約】
実施形態は、第1の訓練済みCNNと第2の訓練済みCNNを生成するために、複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することと、第2の訓練済みCNNにインタフェース層を追加することと、を含む。実施形態は、第1の結果ベクトルおよび第2の結果ベクトルを生成するために、第1の訓練済みCNNを使用して一連の画像の第1の画像および第2の画像を処理する。実施形態は、また、第3の結果ベクトルを生成するために、第2の訓練済みCNNとインタフェース層に入力されたセンサデータとを使用して、第2の画像を処理する。実施形態は、補正値を使用してセンサデータを修正する。実施形態は、誤差値を生成するために、第3の結果ベクトルと第2の結果ベクトルとを比較し、誤差値を使用して修正済み補正値を計算する。実施形態は、修正済み補正値を持つ第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成する。
【特許請求の範囲】
【請求項1】
プロセッサ実装方法であって、
複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することと、
前記第1のCNNが訓練されたと判定されると、第1の訓練済みCNNと第2の訓練済みCNNを生成することであって、前記第1の訓練済みCNNと前記第2の訓練済みCNNは前記第1のCNNに基づく、生成することと、
前記第2の訓練済みCNNにインタフェース層を追加することと、
第1の結果ベクトルを生成するために、前記第1の訓練済みCNNを使用して一連の画像の第1の画像を処理することと、
第2の結果ベクトルを生成するために、前記第1の訓練済みCNNを使用して、前記一連の画像の中で前記第1の画像に続く第2の画像を処理することと、
第3の結果ベクトルを生成するために、前記第2の訓練済みCNNと前記インタフェース層に入力されたセンサデータとを使用して、前記第2の画像を処理することであって、前記第2の訓練済みCNNを使用した前記第2の画像の前記処理は、補正値を使用して前記センサデータを修正することを含む、処理することと、
誤差値を生成するために、前記第3の結果ベクトルと前記第2の結果ベクトルとを比較することと、
前記誤差値を使用して修正済み補正値を計算することと、
前記修正済み補正値を持つ前記第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成することと、
を含む、方法。
【請求項2】
前記修正済み補正値を前記計算することは、前記修正済み補正値を決定するために、バックプロパゲーションアルゴリズムを使用することを含む、請求項1に記載の方法。
【請求項3】
前記バックプロパゲーションアルゴリズムは、結果として生じる前記誤差値の減少に基づいて、前記修正済み補正値を決定することを含む、請求項2に記載の方法。
【請求項4】
前記第1の画像は、カメラの画像センサによって撮影される、請求項1に記載の方法。
【請求項5】
前記カメラ上の動きセンサによって前記センサデータを生成することをさらに含み、前記センサデータは、前記カメラ上の前記画像センサが前記第1の画像を撮影した後、かつ、前記カメラ上の前記画像センサが第2の画像を撮影する前の前記カメラの動きを記述する、請求項4に記載の方法。
【請求項6】
前記動きセンサは、加速度センサ、磁気センサ、ジャイロスコープ、全地球測位システム、および近接センサからなる群から選択される、請求項5に記載の方法。
【請求項7】
前記第1の画像は、物体の描写を含み、前記方法は、前記物体のラベルを生成することをさらに含む、請求項5に記載の方法。
【請求項8】
前記第1の画像および前記ラベルをディスプレイ上に表示することをさらに含む、請求項7に記載の方法。
【請求項9】
前記第1の画像と前記第2の画像との間のピクセルシフトを検出することをさらに含む、請求項7に記載の方法。
【請求項10】
前記カメラの前記動きと前記ピクセルシフトとに基づいて、前記第2の画像が前記第1の画像からの前記物体の前記描写を含むと判定することをさらに含む、請求項9に記載の方法。
【請求項11】
前記第2の画像上の前記ラベルで前記物体にラベル付けすることをさらに含む、請求項10に記載の方法。
【請求項12】
第1の訓練済みCNNから出力された前記第1の結果ベクトルをキャッシュすることと、
前記カメラの前記動きと前記ピクセルシフトとに基づいて、前記第2の画像内の前記物体にラベル付けするために、前記第1の訓練済みCNNから出力された前記キャッシュ済み第1の結果ベクトルを利用することと、
をさらに含む、請求項11に記載の方法。
【請求項13】
第4の結果ベクトルを生成するために、前記センサ補正された訓練済みCNNと、前記インタフェース層に入力された更新済みセンサデータとを使用して、前記一連の画像において前記第2の画像に後続する第3の画像を処理することをさらに含む、請求項4に記載の方法。
【請求項14】
前記カメラ上の動きセンサによって前記更新済みセンサデータを生成することをさらに含み、前記更新済みセンサデータは、前記カメラ上の前記画像センサが前記第2の画像を撮影した後、かつ、前記カメラ上の前記画像センサが前記第3の画像を撮影する前の前記カメラの更新済みの動きを記述する、請求項13に記載の方法。
【請求項15】
前記第4の結果ベクトルに基づいて、前記第2の画像と前記第3の画像との間の更新済みピクセルシフトを検出することをさらに含む、請求項14に記載の方法。
【請求項16】
前記カメラの前記更新済みの動きおよび前記更新済みピクセルシフトに基づいて、前記第3の画像が前記第1の画像および前記第2の画像からの物体の描写を含むと判定することをさらに含む、請求項15に記載の方法。
【請求項17】
1または複数のコンピュータ可読記憶媒体と、前記1または複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令とを含むコンピュータプログラム製品であって、前記プログラム命令は、プロセッサによって実行可能であり、前記プロセッサに、
複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することと、
前記第1のCNNが訓練されたと判定されると、第1の訓練済みCNNと第2の訓練済みCNNを生成することであって、前記第1の訓練済みCNNと前記第2の訓練済みCNNは前記第1のCNNに基づく、生成することと、
前記第2の訓練済みCNNにインタフェース層を追加することと、
第1の結果ベクトルを生成するために、前記第1の訓練済みCNNを使用して一連の画像の第1の画像を処理することと、
第2の結果ベクトルを生成するために、前記第1の訓練済みCNNを使用して、前記一連の画像の中で前記第1の画像に続く第2の画像を処理することと、
第3の結果ベクトルを生成するために、前記第2の訓練済みCNNと前記インタフェース層に入力されたセンサデータとを使用して、前記第2の画像を処理することであって、前記第2の訓練済みCNNを使用した前記第2の画像の前記処理は、補正値を使用して前記センサデータを修正することを含む、処理することと、
誤差値を生成するために、前記第3の結果ベクトルと前記第2の結果ベクトルとを比較することと、
前記誤差値を使用して修正済み補正値を計算することと、
前記修正済み補正値を持つ前記第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成することと、
を含む動作を実行させる、コンピュータプログラム製品。
【請求項18】
前記記憶されたプログラム命令は、データ処理システム内のコンピュータ可読記憶装置に記憶され、前記記憶されたプログラム命令は、リモートデータ処理システムからネットワークを介して転送される、請求項17に記載のコンピュータプログラム製品。
【請求項19】
前記記憶されたプログラム命令は、サーバデータ処理システム内のコンピュータ可読記憶装置に記憶され、前記記憶されたプログラム命令は、リモートデータ処理システムに関連するコンピュータ可読記憶装置で使用するために、ネットワークを介した要求に応答して前記リモートデータ処理システムにダウンロードされ、さらに、
前記要求に関連する前記プログラム命令の使用量を測定するためのプログラム命令と、
前記測定された使用量に基づいて請求書を作成するためのプログラム命令と、
を含む、請求項17に記載のコンピュータプログラム製品
【請求項20】
プロセッサと、1または複数のコンピュータ可読記憶媒体と、前記1または複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令と、を含むコンピュータシステムであって、前記プログラム命令は、前記プロセッサによって実行可能であり、前記プロセッサに、
複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することと、
前記第1のCNNが訓練されたと判定されると、第1の訓練済みCNNと第2の訓練済みCNNを生成することであって、前記第1の訓練済みCNNと前記第2の訓練済みCNNは前記第1のCNNに基づく、生成することと、
前記第2の訓練済みCNNにインタフェース層を追加することと、
第1の結果ベクトルを生成するために、前記第1の訓練済みCNNを使用して一連の画像の第1の画像を処理することと、
第2の結果ベクトルを生成するために、前記第1の訓練済みCNNを使用して、前記一連の画像の中で前記第1の画像に続く第2の画像を処理することと、
第3の結果ベクトルを生成するために、前記第2の訓練済みCNNと前記インタフェース層に入力されたセンサデータとを使用して、前記第2の画像を処理することであって、前記第2の訓練済みCNNを使用した前記第2の画像の前記処理は、補正値を使用して前記センサデータを修正することを含む、処理することと、
誤差値を生成するために、前記第3の結果ベクトルと前記第2の結果ベクトルとを比較することと、
前記誤差値を使用して修正済み補正値を計算することと、
前記修正済み補正値を持つ前記第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成することと、
を含む動作を実行させる、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、機械学習のための方法、システム、およびコンピュータプログラム製品に関する。より詳細には、本発明は、バックプロパゲーションを使用したセンサ補正のための方法、システム、およびコンピュータプログラム製品に関する。
【背景技術】
【0002】
人工知能(AI)技術はここ数年で大きく進化した。最新のAIシステムは、音声をテキストに変換したり、物体や画像を認識したり、異なる言語間を翻訳したりといった認知タスクにおいて、人間レベルのパフォーマンスを達成しつつある。この進化は、多くの産業において新たな応用や改良が期待されている。
【0003】
人工ニューラルネットワーク(Artificial Neural Network:ANN)とは、単にニューラルネットワークとも呼ばれるが、単純で高度に相互接続された多数の処理要素(ノード)から構成されるコンピューティングシステムであり、外部入力に対する動的な状態応答によって情報を処理する。ANNは、哺乳類の大脳皮質のニューロン構造をゆるやかにモデル化した処理装置(アルゴリズムもしくはハードウェアまたはその両方)であるが、スケールははるかに小さい。大規模なANNは数百から数千のプロセッサユニットを持つかもしれないが、哺乳類の脳は数十億のニューロンを持ち、それに応じて全体的な相互作用や創発的行動の規模も大きくなる。
【0004】
深層学習ニューラルネットワーク(本明細書では深層ニューラルネットワーク(DNN)と呼ぶ)は、入力層と出力層の間に複数のユニットの隠れ層を持つ人工ニューラルネットワーク(ANN)である。浅いANNと同様に、DNNは複雑な非線形関係をモデル化する。例えば、畳み込みニューラルネットワーク(CNN)はDNNの一種で、特にデジタル画像の分析に適している。CNNの典型的な用途は、デジタル画像における物体認識である。例えば、CNNはセキュリティアプリケーションにおける顔認識のための画像解析や、欠陥のある物体を特定するための組立ラインのビデオ監視に採用されることがある。
【発明の概要】
【0005】
実施形態は、バックプロパゲーションを使用したセンサ補正を提供する。好ましい実施形態は、複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することを含む。実施形態はまた、第1のCNNが訓練されたと判定されると、第1の訓練済みCNNと第2の訓練済みCNNを生成することを含み、第1の訓練済みCNNと第2の訓練済みCNNは第1のCNNに基づく。実施形態はまた、第2の訓練済みCNNにインタフェース層を追加することを含む。実施形態はまた、第1の結果ベクトルを生成するために、第1の訓練済みCNNを使用して一連の画像の第1の画像を処理することを含む。また、実施形態は、第2の結果ベクトルを生成するために、第1の訓練済みCNNを使用して、一連の画像の中で第1の画像に続く第2の画像を処理することも含む。実施形態はまた、第3の結果ベクトルを生成するために、第2の訓練済みCNNとインタフェース層に入力されたセンサデータとを使用して、第2の画像を処理することを含み、第2の訓練済みCNNを使用した第2の画像の処理は、補正値を使用してセンサデータを修正することを含む。実施形態はまた、誤差値を生成するために、第3の結果ベクトルと第2の結果ベクトルとを比較することを含む。実施形態はまた、誤差値を使用して修正済み補正値を計算することを含む。実施形態はさらに、修正済み補正値を持つ第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成することを含む。この態様の他の実施形態は、それぞれが実施形態の動作を実行するように構成された、1または複数のコンピュータ記憶装置に記録された対応するコンピュータシステム、装置、およびコンピュータプログラムを含む。
【0006】
実施形態は、コンピュータが使用可能なプログラム製品を含む。コンピュータ使用可能なプログラム製品は、コンピュータ可読記憶媒体と、記憶媒体に記憶されたプログラム命令とを含む。
【0007】
実施形態は、コンピュータシステムを含む。コンピュータシステムは、プロセッサと、コンピュータ可読メモリと、コンピュータ可読記憶媒体と、メモリを介したプロセッサによる実行のために記憶媒体に記憶されたプログラム命令とを含む。
【0008】
一態様から見ると、本発明は、以下を含むプロセッサ実装方法を提供する:複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することと、第1のCNNが訓練されたと判定されると、第1の訓練済みCNNと第2の訓練済みCNNを生成することであって、第1の訓練済みCNNと第2の訓練済みCNNは第1のCNNに基づく、生成することと、第2の訓練済みCNNにインタフェース層を追加することと、第1の結果ベクトルを生成するために、第1の訓練済みCNNを使用して一連の画像の第1の画像を処理することと、第2の結果ベクトルを生成するために、第1の訓練済みCNNを使用して、一連の画像の中で第1の画像に続く第2の画像を処理することと、第3の結果ベクトルを生成するために、第2の訓練済みCNNとインタフェース層に入力されたセンサデータとを使用して、第2の画像を処理することであって、第2の訓練済みCNNを使用した第2の画像の処理は、補正値を使用してセンサデータを修正することを含む、処理することと、誤差値を生成するために、第3の結果ベクトルと第2の結果ベクトルとを比較することと、誤差値を使用して修正済み補正値を計算することと、修正済み補正値を持つ第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成すること。
【0009】
別の第2の態様から見ると、本発明は、1または複数のコンピュータ可読記憶媒体と、1または複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令とを含むコンピュータプログラム製品を提供し、プログラム命令は、プロセッサによって実行可能であり、プロセッサに、以下を含む動作を実行させる:複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することと、第1のCNNが訓練されたと判定されると、第1の訓練済みCNNと第2の訓練済みCNNを生成することであって、第1の訓練済みCNNと第2の訓練済みCNNは第1のCNNに基づく、生成することと、第2の訓練済みCNNにインタフェース層を追加することと、第1の結果ベクトルを生成するために、第1の訓練済みCNNを使用して一連の画像の第1の画像を処理することと、第2の結果ベクトルを生成するために、第1の訓練済みCNNを使用して、一連の画像の中で第1の画像に続く第2の画像を処理することと、第3の結果ベクトルを生成するために、第2の訓練済みCNNとインタフェース層に入力されたセンサデータとを使用して、第2の画像を処理することであって、第2の訓練済みCNNを使用した第2の画像の処理は、補正値を使用してセンサデータを修正することを含む、処理することと、誤差値を生成するために、第3の結果ベクトルと第2の結果ベクトルとを比較することと、誤差値を使用して修正済み補正値を計算することと、修正済み補正値を持つ第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成すること。
【0010】
別の態様から見ると、本発明は、プロセッサと、1または複数のコンピュータ可読記憶媒体と、1または複数のコンピュータ可読記憶媒体に集合的に記憶されたプログラム命令と、を含むコンピュータシステムを提供し、プログラム命令は、プロセッサによって実行可能であり、プロセッサに、以下を含む動作を実行させる:複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練することと、第1のCNNが訓練されたと判定されると、第1の訓練済みCNNと第2の訓練済みCNNを生成することであって、第1の訓練済みCNNと第2の訓練済みCNNは第1のCNNに基づく、生成することと、第2の訓練済みCNNにインタフェース層を追加することと、第1の結果ベクトルを生成するために、第1の訓練済みCNNを使用して一連の画像の第1の画像を処理することと、第2の結果ベクトルを生成するために、第1の訓練済みCNNを使用して、一連の画像の中で第1の画像に続く第2の画像を処理することと、第3の結果ベクトルを生成するために、第2の訓練済みCNNとインタフェース層に入力されたセンサデータとを使用して、第2の画像を処理することであって、第2の訓練済みCNNを使用した第2の画像の処理は、補正値を使用してセンサデータを修正することを含む、処理することと、誤差値を生成するために、第3の結果ベクトルと第2の結果ベクトルとを比較することと、誤差値を使用して修正済み補正値を計算することと、修正済み補正値を持つ第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成すること。
【0011】
以下、本発明の好ましい実施の形態を、例示のためにのみ、以下の図面を参照して説明する。
【図面の簡単な説明】
【0012】
図1】例示的なクラウドコンピューティング環境を示す。
図2】クラウドコンピューティング環境が提供する一連の機能抽象化レイヤを示す。
図3】例示的な実施形態によるエッジデバイスによって連続して撮影された画像例のブロック図である。
図4】例示的な実施形態による画像処理システムのブロック図である。
図5】例示的な実施形態によるセンサ補正ロジックのブロック図である。
図6】例示的な実施形態によるサービスインフラストラクチャを含む例示的なクラウドコンピューティング環境のブロック図である。
図7】例示的な実施形態によるシステムアーキテクチャの一例のブロック図である。
図8】例示的実施形態によるシステムアーキテクチャの一例のブロック図である。
図9】例示的な実施形態によるバックプロパゲーションを使用したセンサ補正のための例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【0013】
さまざまなAI技術が、CNNや他のタイプのニューラルネットワークを利用して、さまざまな機械学習タスクを実行している。画像中の物体を認識するために採用されるCNNは、画像分類器、または単に分類器と呼ばれることもある。したがって、本明細書でいう「分類器」とは、データを1または複数の「クラス」に自動的に順序付けまたは分類するニューラルネットワークベースのアルゴリズムのことである。分類器は、入力として画像データを受け取り、入力画像に存在する物体のクラスの指示を出力する。非常に単純な例として、ある分類器が、四角形、円形、三角形などの基本的な形状のセットを認識するように訓練されているとする。このような分類器の出力は、入力画像にこれらの形状のどれが存在するかの指標を提供することができる。実際の出力は、確率値の出力ベクトル、またはリストとなる。つまり、四角形、円形、または三角形を検出するように訓練された分類器の単純な例では、出力は、画像が四角形である確率、画像が円形である確率、および画像が三角形である確率の3つの確率値を含むベクトルとなる可能性がある。理想的には、これら3つの確率値のうち1つは他の2つよりもはるかに大きくなり、例えば(四角形、円形、三角形)であれば(95、3、2)のようになり、出力された確率値から3つの形状のうちどれが画像(この単純化した例では四角形)に含まれるかが明確になる。
【0014】
前述したように、CNN分類器は「訓練」された後、画像中の物体を識別することができる。分類器は画像を処理する際、各々が1または複数の重み値、または単に重みを含む一連のフィルタを使用する。CNN分類器の訓練は、分類器が正確な出力を出せるようになるまで、重みの値を調整することを含むプロセスである。
【0015】
分類器の訓練には様々な手法がある。多くの手法では、各画像の正解を含む画像データを使用することを含む。一般的な手法は、「バックプロパゲーション」を使用する。バックプロパゲーションを使用した分類器の訓練は、多数の訓練画像の各々に対して繰り返される反復プロセスである。このプロセスには、各画像について誤差値を計算することが含まれる。誤差値は、ある画像に対する分類器の出力と、その画像に対する正解との差に基づく。その後、1または複数の重み値が各反復で調整され、誤差値が徐々に減少する。
【0016】
通常、分類器の精度は、分類器の訓練に使用される訓練データの量(すなわち、一意のデジタル画像の数)に関係する。ニューラルネットワークの訓練に使用する訓練データの量が増えると、分類器の精度も高くなる傾向がある。その結果、正確な分類器の訓練には非常に時間と計算コストがかかる。
【0017】
例えば、顔を正しく識別するためにCNN分類器を訓練する場合、何千もの顔の画像(人物、動物、有名な顔など)が訓練データとして分類器ニューラルネットワークに入力される。ニューラルネットワークは重みを使って各画像を処理し、訓練出力と望ましい出力を比較する。目標は、訓練出力が望ましい出力と一致すること、例えば、ニューラルネットワークが各写真を正しく識別すること(顔認識)である。
【0018】
この訓練の結果得られる分類器は、最適化された重みを含むモデルである。このモデルを用いて、新しい画像データ中の物体を分類(すなわち認識)する。結果的に得られたモデルは高い精度を提供するかもしれないが、それでも画像分類を実行するには時間と計算コストのかかるプロセスが必要である。そのため、精度を犠牲にすることなく、時間と計算コストを削減する方法を模索することに関心が集まっている。
【0019】
CNN分類器の時間と計算コストを削減する動機は、そのような分類器を使用するアプリケーションの性能を向上させることに関係している。エッジコンピューティングアーキテクチャでは、かかるアプリケーションは通常エッジデバイス上で動作する。エッジデバイスには、携帯電話、デジタルカメラ、クライアントコンピュータ(ラップトップコンピュータ、デスクトップコンピュータなど)などのデバイスが含まれる。中央集中型のクラウドとは対照的に、少なくとも一部の分類処理をエッジデバイスで実行することで、アプリケーションの性能が向上する可能性がある。例えば、エッジデバイスがすべての画像、データ、計算結果などをリモートの画像処理システムと交換する必要がある場合、エッジデバイスとリモートシステム間の通信ネットワーク(無線であることが多いため、帯域幅がさらに狭い)に大きな負担がかかる。また、リモートシステムを使用して、撮影画像に対するすべての(例えば、撮影画像に物体をラベリングするための)分析計算を実行すると、リモートシステム内のどのノードもしくはデータセンタまたはその両方をエッジデバイスに割り当てるかを決定する際に、スケーリングの問題が生じる。
【0020】
エッジデバイスが、撮影画像のあらゆる分析を実行する独自の計算能力を備えていれば、クラウドや他のリモートシステムの計算リソースは必要ない。しかし、エッジデバイスは、計算能力もしくは記憶容量またはその両方が限られていることが多い。したがって、1または複数の開示された実施形態は、撮影画像に対して(エッジデバイス自身によって、もしくはリモートシステムによって、またはその両方によって)以前に実行された計算を使用することによって、特に、以前に実行された計算が以前に撮影された画像からのものである場合に、この問題を解決する。
【0021】
1または複数の実施形態では、CNNは、ビデオフレームであり、ビデオの一連の連続するビデオフレームである画像を分析し、その後に撮影される他の画像(例えば、ビデオが記録されている間のカメラの移動によって画像が異なる場合)で使用するために、CNNベースの分析結果をキャッシュする。しかし、本明細書にも記載されているように、1または複数の実施形態は、撮影カメラが移動する(したがって、新しい画像を撮影する)ときに再利用するために、画像に関するCNN以外の生成データもキャッシュする。
【0022】
いくつかの実施形態では、画像は、携帯電話、ドローン、衛星、ダッシュカム、または他の様々なデバイスのいずれかに搭載された動くカメラによって撮影される。撮影画像は、後続の撮影画像間の重なりにより、画像内の情報の一部が冗長であるにもかかわらず、カメラの移動により変化する可能性がある。いくつかの実施形態では、かかる撮影画像は、設備(例えば、石油掘削装置)、野生生物、在庫(例えば、店舗、倉庫など)、公共インフラ(例えば、道路、送電線など)、または他の様々な用途を監視するために使用されることがある。
【0023】
いくつかの実施形態では、ビデオの一部として一連の画像を撮影する移動カメラ、または規則的な間隔またはランダムな間隔で撮影された一連の画像は、ある画像から次の画像まで同じように見える物体を撮影する一方で、ある画像から次の画像まで異なるように見える物体を撮影する。例えば、エスカレーターに乗っているときに、ユーザが自分の一連の写真(すなわち「自分撮り」)を撮るために携帯電話を差し出すと、ユーザはある画像から次の画像まで同じように見えるが、背景の物体はある画像から次の画像まで異なって見える画像が撮影されることがある。
【0024】
いくつかの実施形態では、ユーザまたはシステムは、連続する一連の画像のすべてにおいて、変化しているか否かにかかわらず、いくつかの物体にラベルを付けたい場合がある。しかし、全ての画像を全体的に分析すると、一連の画像の変化していない部分の処理が重複することになる。
【0025】
このように、いくつかの実施形態では、第2の画像の全解析を作成するために、一連の画像の第1の画像の全画像解析を実行し、第1の画像の全画像解析結果をキャッシュし、一連の画像から続く連続する第2の画像のどのセクションが変化していないかを判定し(例えば、自撮りするユーザの顔)、画像の他のセクションが変化したと判定し、画像の変化したセクションのみを解析し、変化したセクションの解析結果を、変化していないセクションのキャッシュされた結果と組み合わせることによって、画像の重複処理を低減する。しかし、この処理には、依然としてかなりの計算能力が必要である(例えば、各画像全体について、どのセクションが変化し、どのセクションが変化していないかを判定するため)。この処理に必要な計算能力は、一般的なエッジデバイスが持つ計算能力およびストレージリソースよりも多くの計算能力およびストレージリソースを必要とすることが多いため、依然としてリモートシステムを呼び出す必要があり、それによって処理全体が遅くなる。
【0026】
したがって、画像分類処理に必要な計算労力をさらに削減するために、開示された実施形態は、カメラシフトを決定するためにエッジデバイス上のセンサを採用する。いくつかの実施形態では、このようなセンサの非限定的な例として、加速度センサ、磁気センサ、ジャイロスコープ、全地球測位システム、および近接センサのうちの1または複数が挙げられ、これらのうちの1または複数が、2軸または3軸に沿って、もしくはそれについて、またはその両方の動きまたは慣性を感知することが可能であり得る。この情報によって、エッジデバイスは、カメラのシフトによって引き起こされる画像シフトの量を理解し、一連の連続する画像から後続の画像に対してどのキャッシュされた解析結果を再利用するかを決定する際に、この理解を適用することができる。
【0027】
上述したように、画像は多くの場合、移動するカメラによって同じ物体を連続して撮影する。しかし、カメラの動きにより、一連の画像の異なる画像間で物体が「動く」。かかる動きは、直線的(すなわち、カメラは、撮影される物体に対して同じ通常の向きを維持しながら、左右または上下に動く)、回転的(すなわち、カメラは、同じ位置に留まるが、左右もしくは上下またはその両方にパンする)、またはズーム(すなわち、カメラは、撮影される物体に対して同じ通常の向きを維持するが、撮影される物体に向かってまたは撮影される物体から離れて動く)であってもよい。説明のため、開示された実施形態の1または複数に従って、カメラの直線的な動きについて説明する。
【0028】
このようないくつかの実施形態では、カメラによって第1の画像が第1の時刻t0に撮影され、カメラによって第2の画像が時刻t1(時刻t0の後)に撮影され、時刻t0と時刻t1の間にカメラが横方向に動き、その結果、第2の画像が第1の画像と異なったとする。第2の画像は、第1の画像でCNN分類器によって認識された物体を依然として含むが、画像のフレーム内の物体の位置は第1の画像と比較してずれている。また、第1の画像の一部の領域は第2の画像の一部の領域と同一であるが、第1の画像の一部の領域は第2の画像には存在せず、第2の画像の一部の領域は第1の画像には存在しない。いくつかの実施形態では、カメラ内のセンサは、第1の画像が撮影された時間t0と第2の画像が撮影された時間t1との間のカメラの動きを検出し、したがって、第1の画像の領域と同一である第2の画像の領域を識別するのを支援する。
【0029】
しかし、かかるセンサは精度に限界があり、さらに様々な種類のノイズ、温度の変動、較正エラーや不安定性の影響を受けることが知られている。したがって、撮影画像間のカメラの動きを検出するためにかかるセンサを使用すると、センサの変動による誤差が生じる可能性がある。いくつかの実施形態では、かかる誤差を回避するために、センサは定期的に較正される。しかし、かかるセンサの較正は困難で時間のかかるプロセスであることが知られている。
【0030】
したがって、本明細書に開示される実施形態は、センサを較正する必要なくセンサの変動を補正する、この技術的問題に対する解決策を提供する。いくつかの実施形態によるプロセスは、複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練する。次に、プロセスは、第1のCNNが訓練されたことを判定すると、第1のCNNに基づいて、第1の訓練済みCNNと第2の訓練済みCNNを生成する。次に、このプロセスは、第2の訓練済みCNNにインタフェース層を追加する。
【0031】
いくつかのかかる実施形態では、第1の画像は、第1の結果ベクトルを生成するために、第1の訓練済みCNNを使用して次に処理される。例えば、いくつかの実施形態では、第1の画像は、カメラまたは他のエッジデバイス上の画像センサによって撮影され、CNNによって検出された物体の描写を含む。次に、一連の画像の中で第1の画像に続く第2の画像が処理される。この処理は、第2の結果ベクトルを生成するために、第1の訓練済みCNNを使用する。いくつかの実施形態において、第2の画像はまた、第1の画像における物体の描写を含み、物体は第2の画像において再びCNNによって検出される。いくつかの実施形態では、プロセスは、検出された物体のラベルを生成することと、物体および生成されたラベルを表示することとを含む。いくつかの実施形態において、本プロセスは、第1の訓練済みCNNから出力された第1の結果ベクトルをキャッシュすることと、カメラの動きおよびピクセルシフトに基づいて第2の画像内の物体にラベル付けするために第1の訓練済みCNNから出力されたキャッシュされた第1の結果ベクトルを利用することとを含む。
【0032】
次に、プロセスは、第3の結果ベクトルを生成するために、第2の訓練済みCNNとインタフェース層に入力されたセンサデータとを使用して、第2の画像を処理する。いくつかの実施形態では、プロセスは、カメラまたは他のエッジデバイス上の動きセンサによってセンサデータを生成することを含む。かかる実施形態では、センサデータは、画像センサが第1の画像を撮影した後、かつ、画像センサが第2の画像を撮影する前のカメラまたは他のエッジデバイスの動きを記述する。動きセンサの非限定的な実施形態は、加速度センサ、磁気センサ、ジャイロスコープ、全地球測位システム、および近接センサを含む。いくつかの実施形態では、動きは、第1の画像と第2の画像との間のピクセルシフトを検出するために使用される。
【0033】
次に、第2の訓練済みCNNを使用した第2の画像の処理には、補正値を使用してセンサデータを修正することを含む。次に、プロセスは、誤差値を生成するために、第3の結果ベクトルと第2の結果ベクトルとを比較する。次に、プロセスは、誤差値を使用して修正済み補正値を計算する。いくつかの実施形態において、修正済み補正値を計算することは、修正済み補正値を決定するために、バックプロパゲーションアルゴリズムを使用することを含む。いくつかのかかる実施形態において、バックプロパゲーションアルゴリズムは、結果として生じる誤差値の減少に基づいて、修正済み補正値を決定することを含む。
【0034】
最後に、このプロセスは、修正済み補正値を持つ第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成する。いくつかの実施形態において、画像のシーケンスにおいて第2の画像に後続する第3の画像は、第4の結果ベクトルを生成するために、センサ補正された訓練済みCNNおよびインタフェース層に入力される更新済みセンサデータを使用して処理される。いくつかの実施形態において、プロセスは、カメラ上の動きセンサによって更新済みセンサデータを生成することを含み、更新済みセンサデータは、カメラ上の画像センサが第2の画像を撮影した後、かつ、カメラ上の画像センサが第3の画像を撮影する前のカメラの更新済みの動きを記述する。いくつかの実施形態において、プロセスは、第4の結果ベクトルに基づいて、第2の画像と第3の画像との間の更新済みピクセルシフトを検出することを含む。いくつかの実施形態において、プロセスは、カメラの更新済みの動きおよび更新済みピクセルシフトに基づいて、第3の画像が第1の画像および第2の画像からの物体の描写を含むことを判定することを含む。
【0035】
説明を明瞭にするために、また、それに対する限定を意味することなく、例示的な実施形態は、いくつかの例示的な構成を使用して説明される。本開示から、当業者であれば、記載された目的を達成するために、記載された構成の多くの変更、適合、および修正を思いつくことができ、同じことが、例示的な実施形態の範囲内で企図される。
【0036】
さらに、データ処理環境の簡略化された図が、図および例示的な実施形態において使用される。実際のコンピューティング環境では、例示的な実施形態の範囲を逸脱することなく、本明細書に図示または説明されていない追加の構造または構成要素、または図示とは異なるが本明細書に説明されているのと同様の機能のための構造または構成要素が存在し得る。
【0037】
さらに、例示的な実施形態は、例としてのみ、特定の実際または仮定の構成要素に関して記載されている。様々な例示的な実施形態によって説明されるステップは、例えば、機械学習分類器モデルによってなされる決定に対する説明を提供するために適合させることができる。
【0038】
これらおよび他の類似の人工物の任意の特定の態様は、本発明を限定することを意図していない。例示的な実施形態の範囲内で、これらおよび他の類似の人工物の任意の適切な態様を選択することができる。
【0039】
本開示における実施例は、説明を明確にするためにのみ使用され、例示的な実施形態を限定するものではない。本明細書に列挙された利点は、例示に過ぎず、例示的な実施形態を限定することを意図するものではない。特定の例示的な実施形態によって、追加的または異なる利点が実現され得る。さらに、特定の例示的な実施形態は、上記に列挙された利点のいくつか、すべて、またはいずれも有し得ない。
【0040】
さらに、例示的な実施形態は、任意のタイプのデータ、データソース、またはデータネットワークを介したデータソースへのアクセスに関して実施することができる。どのようなタイプのデータ記憶装置でも、本発明の範囲内で、データ処理システムでローカルに、またはデータネットワークを介して、本発明の実施形態にデータを提供することができる。実施形態がモバイルデバイスを使用して説明される場合、モバイルデバイスと共に使用するのに適した任意のタイプのデータ記憶デバイスが、例示の実施形態の範囲内で、モバイルデバイスでローカルに、またはデータネットワークを介して、かかる実施形態にデータを提供することができる。
【0041】
例示的な実施形態は、具体的なコード、対照的な説明、コンピュータ可読記憶媒体、ハイレベルの特徴、過去のデータ、設計、アーキテクチャ、プロトコル、レイアウト、回路図、およびツールを例としてのみ用いて説明されており、例示的な実施形態を限定するものではない。さらに、例示的な実施形態は、説明の明瞭化のための例としてのみ、特定のソフトウェア、ツール、およびデータ処理環境を使用して説明される場合がある。例示的な実施形態は、他の同等または同様の目的の構造、システム、アプリケーション、またはアーキテクチャと組み合わせて使用することができる。例示的な実施形態は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装することができる。
【0042】
本開示における例は、説明を明確にするためにのみ使用され、例示的な実施形態を限定するものではない。追加のデータ、動作、アクション、タスク、アクティビティ、および操作は、本開示から考えられ、同じものが例示的な実施形態の範囲内で企図される。
【0043】
本明細書に列挙された利点は、例示に過ぎず、例示的な実施形態を限定することを意図するものではない。特定の例示的な実施形態によって、追加的または異なる利点が実現され得る。さらに、特定の例示的な実施形態は、上記に列挙した利点の一部、全部、またはいずれも有し得ない。
【0044】
本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載した教示の実装形態はクラウドコンピューティング環境に限定されない。むしろ、本発明の実施形態は、現在公知のまたは将来開発される他の任意の種類のコンピュータ環境と共に実施することができる。
【0045】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0046】
特性は以下の通りである。
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、パーソナルデジタルアシスタント(PDA))による利用が促進される。
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0047】
サービスモデルは以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含み得る任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0048】
展開モデルは以下の通りである。
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0049】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0050】
図1を参照すると、例示的なクラウドコンピューティング環境50が示されている。図示するように、クラウドコンピューティング環境50は1または複数のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、パーソナルデジタルアシスタント(PDA)もしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1または複数のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図1に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0051】
図2を参照すると、クラウドコンピューティング環境50(図1)によって提供される機能的抽象化レイヤのセットが示されている。なお、図2に示すコンポーネント、レイヤおよび機能は例示に過ぎず、実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0052】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0053】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
【0054】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル83は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0055】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、ならびに、および画像処理96が含まれ、これらは、本明細書で説明する本発明の特徴の1または複数を実行する。
【0056】
図3を参照すると、この図は、例示的な実施形態に従って、エッジデバイスによって連続して撮影された例示的な画像のブロック図を示している。図示の実施形態では、エッジデバイスはカメラ352であるが、代替の実施形態では他の画像撮影装置が使用される。
【0057】
示されるように、第1の画像302が、第1の時刻t0においてカメラ352によって撮影される。第1の画像302は、物体304(例えば、シリアルのBOX)を含む複数の物体、背景等の画像を撮影する。時刻t1(時刻t0の後)において、カメラ352は右に移動しており、その結果、第2の画像306が得られる。図3に示すように、第2の画像306は依然として物体304を含むが、(カメラ352が右に移動したため)撮影された第2の画像306の左側に移動している。第1の画像302からの画像の一部が第2の画像306で失われる(失われた部分308として描かれる)一方で、シフトサイズ310で示される新しい画像がピックアップされている。
【0058】
ここで、CNN分析(または他の画像分析)が実行され、その結果、物体304がシリアルの箱として識別されたと仮定する。さらに、シリアルの箱に対して「BOX」というラベルが作成され、そのラベルがシリアルの箱の画像の上に重ねられていると仮定する。
【0059】
第2の画像306(シリアルの箱の画像を含む)が撮影されると、第2の画像の全てに対して新たなCNN分析を実行することができ、その結果、シリアルの箱(およびそのラベル)の識別を再び行うことができる。あるいは、システムは第1の画像302の各部分の結果をキャッシュすることもできる。すなわち、各物体のピクセル情報、識別情報、ラベルがキャッシュされる。その後、第2の画像306の各サブセクションのピクセル情報が取り込まれる。第2の画像のサブセクションが、第1の画像302からキャッシュされた結果のピクセル情報と一致する場合、その物体は、第2の画像306において、第1の画像302で見つかったのと同じラベルでラベル付けされる。しかし、これには、2つの画像のすべてのセクションを検索して比較するための広範な計算能力が必要である。さらに、2つのフレームの同じ対象位置でサンプリングされたピクセル値は、照明、画像センサのサンプリング問題などに起因してわずかに異なる場合があり、したがって、厳密なピクセル照合をさらに非現実的にする。
【0060】
したがって、いくつかの実施形態では、カメラ352のセンサは、第1の画像302が撮影された時間と第2の画像306が撮影された時間との間のカメラ352の動きを検出し、したがって、第1の画像の領域と同一である第2の画像の領域を識別することを支援する。
【0061】
図4を参照すると、この図は、例示的な実施形態による例示的な画像処理システム400のブロック図である。いくつかの実施形態では、画像処理システム400の少なくともいくつかの要素は、図2のワークロードレイヤ90に配備される。一例として、いくつかの実施形態では、画像処理システム400の少なくともいくつかの要素は、図2の画像処理96を使用して実装される。
【0062】
いくつかの実施形態では、画像処理システム400は、画像センサ401、メモリデバイス403、ラベリングロジック405、ディスプレイロジック407、動きセンサ409、ピクセルシフト検出器411、物体識別子ロジック413、CNNキャッシュ415、CNN417、ノード調整ロジック421、距離センサ423、中央処理装置(CPU)425、およびセンサ補正ロジック427を含む。代替実施形態では、画像処理システム400は、本明細書で説明する機能の一部またはすべてを含むが、1または複数のモジュールに異なるようにグループ化される。いくつかの実施形態では、本明細書で説明する機能は、複数のシステムの間に分散され、これらのシステムは、互いにローカルであっても、互いに遠隔に位置していてもよく、ソフトウェアもしくはハードウェアベースのシステム(例えば特定用途向け集積回路(ASIC)、コンピュータプログラム、またはスマートフォンアプリケーション)またはその両方の組み合わせを含むことができる。
【0063】
いくつかの実施形態では、画像処理システム400の少なくともいくつかの要素は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、または他のエッジデバイスなどのエッジデバイスに配備される。いくつかの実施形態では、画像センサ401は、光を電子信号に変換する光学センサ(例えば、相補型金属酸化膜半導体-CMOS)であり、この信号は、メモリデバイス403(例えば、メモリカード)に送られる。いくつかの実施形態では、画像センサ401は、一連の連続した画像の形態で静止画像または動画を撮影するように動作可能である。
【0064】
いくつかの実施形態では、ラベリングロジック405は、アルゴリズム(例えば、CNNを使用する)からの出力をテキストラベルに変換するハードウェア回路である。例えば、一実施形態では、ラベリングロジックは、(4,5,3,1)のようなCNNからの出力ベクトルを入力として取り、ディスプレイロジック407を使用してデジタル画像に重ねることができる、例えば「BOX」のようなラベルを出力する。
【0065】
いくつかの実施形態では、動きセンサ409は、カメラ452の動きを検出するセンサである。いくつかの実施形態では、動きセンサ409は、加速度センサなどの自己完結型ユニットである。代替実施形態では、動きセンサ409は、歯車や車輪などの外部装置(図示せず)からの入力を使用する。すなわち、カメラ452が軌道に取り付けられ、軌道に沿ったカメラ452の動きが、機械装置内の歯車/車輪が回転する(したがって、カメラを推進する)ことによって引き起こされる場合、そのような歯車/車輪の動きを記述するセンサ読み取り値は、カメラ452の動きを正確に記述する。
【0066】
いくつかの実施形態では、ピクセルシフト検出器411は、特定のピクセルまたはピクセルのセットの動きを撮影するハードウェアデバイスである。例えば、第1の画像で見つかり、後に第2の画像で見つかる可能性のある1または複数のピクセルのグループである。このように、ピクセルシフト検出器411は、第1の画像におけるピクセルのグループの位置と第2の画像におけるピクセルのグループの位置との間のピクセル距離を測定する。
【0067】
いくつかの実施形態では、ノード調整ロジック421は、回帰分析を使用してCNN内の重みもしくはアルゴリズムまたはその両方を調整するロジックである。いくつかのかかる実施形態では、ノード調整ロジックは、予測出力の精度を決定し、予測出力が撮影された物体を正確に記述するまで、例えばバックプロパゲーションを使用して、CNN内のニューロン内の重みもしくはアルゴリズムまたはその両方を調整するように予め構成されたプロセッサを含む。
【0068】
いくつかの実施形態では、距離センサ423は、例えば近接センサを使用して、カメラ452から撮影される1または複数の物体までの距離を検出する。いくつかの実施形態では、距離センサ423は、信号が距離センサ423から放射されるときから、信号が跳ね返されて距離センサ423によって受信されるときまでの電子信号の位相シフトを利用する。いくつかの実施形態では、距離センサ423は、電磁(例えば、赤外光)または音波(例えば、超音波)である信号を使用する。かかる信号は、波長を有し、その位相は、放射される時間から、跳ね返って受信される時間まで異なる。この波長差は位相シフトとして知られており、(タイマーと組み合わせれば)物理的な測定装置(例えばメジャー)を使用せずに距離を正確に測定することができる。いくつかの実施形態では、カメラ452から撮影される物体までの距離は、視差を使用して決定される。すなわち、同じシーン/ターゲットを撮影している間に、ユーザがカメラ452をある距離だけ動かすと、カメラ452は、両方のフレームに現れる同じターゲットまたは視覚的特徴を見ることになる。カメラのずれにより、同じターゲットの画像は各フレーム上でわずかに異なる位置に表示され、これは視差と呼ばれる。これらのフレーム上の位置の違いとカメラのずれは、ターゲットまでの距離を推定するために使用されるため、別の距離測定センサーは必要ない。このように、いくつかの実施形態では、本明細書で説明するステップの1または複数を実行するために、カメラ452による動きの量を測定するための動きセンサのみが必要である。
【0069】
いくつかの実施形態では、ラベリングロジック405、ディスプレイロジック407、物体識別子ロジック413、CNN417、およびノード調整ロジック421の1または複数によって実行される機能は、オンボードCPU425によって実行される。
【0070】
いくつかの実施形態では、物体識別子ロジック413は、写真内の物体を識別するために使用されるロジック(例えば、CNNロジックまたは本明細書で説明するCNNロジックの短縮版)である。一実施形態では、カメラ452がCNNの完全版を実行するのに十分な処理能力を有する場合、そのようにする。しかしながら、カメラ452がCNNの完全版を実行するのに十分な処理能力を有していない場合には、限定版(例えば、1つの畳み込み/プーリング演算のみが実行され、限定数の予測出力のみがサポートされる等)が実行される。いくつかの実施形態では、物体識別子ロジック413は、後続の写真において物体を識別し、ラベルを付け直すために、動きセンサ409およびピクセルシフト検出器411から得られた動き情報を使用する。例えば、ラベルは、ネットワークインタフェース430を介してカメラ452に(好ましくは無線で)接続されているローカルオンボードCNN417またはリモートCNN419によって以前に作成された、CNNキャッシュ415で発見されたと仮定する。
【0071】
しかし、かかるセンサは精度に限界があり、さらに様々な種類のノイズ、温度の変動、較正エラーや不安定性の影響を受けることが知られている。したがって、撮影画像間のカメラの動きを検出するためにかかるセンサを使用すると、センサの変動による誤差が生じる可能性がある。いくつかの実施形態では、かかる誤差を回避するために、センサは定期的に較正される。しかし、かかるセンサの較正は困難で時間のかかるプロセスであることが知られている。
【0072】
したがって、本明細書で開示される実施形態は、1または複数の補正値を生成するセンサ補正ロジック427を含む。補正値は、その後、それぞれのセンサからのセンサ出力を修正するために使用される。
【0073】
図5を参照すると、この図は、例示的な実施形態によるセンサ補正ロジック500のブロック図を示している。特定の実施形態において、センサ補正ロジック500は、図4のセンサ補正ロジック427の一例である。
【0074】
いくつかの実施形態では、センサ補正ロジック500は、第1のCNN502、第2のCNN512、誤差計算モジュール528、およびバックプロパゲーションモジュール530を含む。代替実施形態では、センサ補正ロジック500は、本明細書で説明される機能の一部またはすべてを含むが、1または複数のモジュールに異なるようにグループ化される。いくつかの実施形態では、本明細書で説明される機能は、複数のシステム間で分散され、これは、ソフトウェアもしくはハードウェアベースのシステム(例えば特定用途向け集積回路(ASIC)、コンピュータプログラム、またはスマートフォンアプリケーション)またはその両方の組み合わせを含み得る。
【0075】
いくつかの実施形態では、第1のCNN502は、入力層504、1または複数の隠れ層506、および出力層508を含む。第1のCNN502は入力層504で画像データ510を受け取り、隠れ層506を用いて画像処理を行う。第1のCNN502は出力層508から出力ベクトル524を出力する。
【0076】
いくつかの実施形態では、第2のCNN512は、入力層514、センサインタフェース層516、1または複数の隠れ層518、および出力層520を含む。第2のCNN512は、入力層514で画像データ510を受信し、センサインタフェース層516で動きセンサ(例えば、図4の動きセンサ409から)からセンサデータ522を受信する。第2のCNN512は、次に隠れ層518を用いて画像処理を行い、出力層520から出力ベクトル526を出力する。いくつかの実施形態では、センサインタフェース層516は、1または複数のニューロンに対する重みまたはパラメータとして補正値532を含む。いくつかの実施形態において、インタフェース層516は、複数のセンサからのセンサ入力を受信し、各センサに対するそれぞれの補正値532を含む。
【0077】
したがって、いくつかの実施形態では、第1のCNN502はセンサ入力なしの画像分類器であり、第2のCNN512はセンサ入力ありの画像分類器である。出力ベクトル524と526は、理想的には同じであるべき差を決定するために比較される。いくつかの実施形態では、誤差計算モジュール528は、2つの出力ベクトル524と526の差を誤差値として計算する。いくつかの実施形態において、誤差計算モジュール528は、誤差値を決定するために損失関数を使用する。例えば、いくつかの実施形態において、誤差計算モジュール528は、出力ベクトル524と526の間の差を推定するためにクロスエントロピーを使用する。いくつかの実施形態において、誤差計算モジュール528は、誤差値としてスカラー値を出力する。誤差計算モジュール528は、この誤差値をバックプロパゲーションモジュール530に提供する。いくつかの実施形態では、バックプロパゲーションモジュール530は、誤差値を最小化するようにセンサの補正値532を調整するために最急降下法を使用するバックプロパゲーションアルゴリズムを採用する。
【0078】
その後、補正値532は画像分類のためにCNN512と共に使用され、CNN512を効果的に加速モデルとしてレンダリングする。加速されたCNN512は、センサデータの精度を向上させるために、補正値532を使用して、撮影画像間のカメラの動きを正確に決定するためにセンサ入力を使用する。この精度向上により、撮影画像間のピクセルシフトの距離および方向を決定する際の画像処理システム400の精度が向上する。
【0079】
図6を参照すると、この図は、例示的な実施形態によるサービスインフラストラクチャ602を含む例示的なクラウドコンピューティング環境600のブロック図を示している。図4に関連して説明したように、いくつかの実施形態では、本明細書で説明する画像処理システム400の機能は、互いにローカルであってもよいし、互いに遠隔に位置していてもよい複数のシステムの間で分散される。図6は、画像処理システム400の機能の少なくとも一部が機械学習システム604としてクラウドベースのサービスによって提供される例を示す。
【0080】
図示の実施形態では、エッジデバイス614は、アプリケーションプログラミングインタフェース(API)ゲートウェイ608を介して、1または複数のネットワークを介してサービスインフラストラクチャ602と通信する。いくつかの実施形態では、サービスインフラストラクチャ602は、分散型クラウドベースのアーキテクチャを使用する。いくつかのかかる実施形態では、機械学習システム604は、1または複数のサーバにわたる分散システムとして実行されるクラウドベースのアプリケーションである。様々な実施形態において、サービスインフラストラクチャ602および関連する機械学習システム604は、複数のユーザおよび複数のテナントにサービスを提供する。テナントは、ソフトウェアインスタンスに対する特定の特権を有する共通のアクセスを共有するユーザのグループ(例えば、企業)である。サービスインフラストラクチャ602は、テナント固有のデータが他のテナントから分離されることを保証する。
【0081】
いくつかの実施形態において、エッジデバイス614は、インターネット等の任意の適切なネットワークまたはネットワークの組合せを介してAPIゲートウェイ608と接続し、Wi-Fi、Bluetooth等の任意の適切な通信プロトコルを使用する。サービスインフラストラクチャ602は、クラウドコンピューティングに基づいて構築されてもよい。APIゲートウェイ608は、機械学習システム604のようなクライアントアプリケーションへのアクセスを提供する。APIゲートウェイ608は、クライアントアプリケーションによって発行されたサービスリクエストを受信し、サービスリクエストに基づいてサービスルックアップリクエストを作成する。非限定的な例として、一実施形態では、エッジデバイス614は、画像処理のための機械学習システム604への要求を開始するルーチンを実行する。
【0082】
図示された実施形態では、サービスインフラストラクチャ602はまた、コンピュータ可読プログラム命令(例えば、コンピュータ可読プログラム命令は、機械学習システム604および関連コンポーネントを含むことができるが、これらに限定されない)を記憶する少なくとも1つのコンピュータ可読記憶媒体を含む少なくとも1つのメモリ606を含むか、またはこれと関連付けられ、機械学習システム604および関連コンポーネントによって生成された任意のデータを記憶することができる。図示された実施形態では、サービスインフラストラクチャ602は、メモリ606に記憶されたコンピュータ可読プログラム命令を実行する少なくとも1つのプロセッサ(例えば、図4のCPU425)を含むか、関連付けられる。
【0083】
図示の実施形態では、サービスインフラストラクチャ602は、データソース612へのアクセスを含む。いくつかの実施形態では、データソース612は、機械学習システム604が画像処理に使用することができるデータ、例えば、CNNを訓練するために使用されるデータ、または事前に訓練されたCNNを含むことができるデータを提供する。
【0084】
いくつかの実施形態では、サービスインフラストラクチャ602は、機械学習システム604の1または複数のインスタンスを含む。いくつかのかかる実施形態では、機械学習システム604の複数のインスタンスの各々は、複数のコンピューティングシステム上で独立して実行される。いくつかのかかる実施形態では、機械学習システム604は、機械学習システム604の他のサービスインスタンスと同様に、サービスレジストリ610に登録される。いくつかの実施形態では、サービスレジストリ610は、各サービスインスタンスに関連する性能情報を含む、各サービスインスタンスの状態または健全性に関する情報を維持する。
【0085】
図7および図8を参照すると、これらの図は、例示的な実施形態によるシステムアーキテクチャ700/800のそれぞれの例のブロック図を示している。いくつかの実施形態において、例示的なシステムアーキテクチャ700/800は、図4の画像処理システム400のシステムアーキテクチャの非限定的な例であり、さらに別の実施形態は、代替的なシステムアーキテクチャを含む。いくつかの実施形態では、図4の画像処理システム400の1または複数の要素は、図3のカメラ352などのエッジデバイスに含まれ、もしくはエッジデバイスによってアクセス可能である、またはその両方である。例えば、いくつかの実施形態では、図4の画像処理システム400の1または複数の要素は、図6のAPIゲートウェイ608などのAPIゲートウェイを介してエッジデバイスによってアクセス可能である。
【0086】
例えば、図7を参照すると、いくつかの実施形態では、システムアーキテクチャ700は、機械学習システム706を含むサービスインフラストラクチャ704と通信するエッジデバイス702を含む。図7に示す例では、エッジデバイス702は、画像処理システム400の要素のほとんどまたはすべてを含むエッジデバイスの一例である。ただし、エッジデバイス702は、エッジデバイス702がCNNとして使用する事前に訓練されたモデルを提供するクラウドベースの機械学習システム706を利用する。いくつかのかかる実施形態では、エッジデバイス702は、画像分類のために事前に訓練されたモデルを使用する。代替実施形態では、エッジデバイス702は、事前に訓練されたモデルを転移学習の基礎として使用し、分類のためにモデルを使用する前に、事前に訓練されたモデルをさらに訓練する。
【0087】
別の例として、図8を参照すると、いくつかの実施形態では、システムアーキテクチャ800は、エッジサーバ804と通信するエッジデバイス802を含み、このエッジサーバ804は、機械学習システム808を含むサービスインフラストラクチャ806と通信する。図8に示す例では、エッジデバイス802、エッジサーバ804、およびサービスインフラストラクチャ806はそれぞれ、CNNの画像処理を分散方式で実行するために必要な画像処理システム400の要素を含む。図8に示すように、エッジデバイス802はCNN処理の一部を実行し、中間結果をエッジサーバ804に提供する。エッジサーバ804はCNN処理の異なる部分を実行し、異なる中間結果をサービスインフラストラクチャ806の機械学習システム808に提供する。次に、機械学習システム808はCNN処理の最終部分を実行し、最終結果をエッジサーバ804に返し、エッジサーバ804は最終結果をエッジデバイス802に返す。
【0088】
さらに別の実施形態では、エッジサーバ804またはサービスインフラストラクチャ806のいずれかが省略される。このような実施形態では、CNN処理は、エッジデバイス802と、エッジサーバ804または機械学習システム808のいずれかとの間で共有される。
【0089】
図9を参照すると、この図は、例示的な実施形態によるバックプロパゲーションを使用したセンサ補正のための例示的なプロセス900のフローチャートを示している。特定の実施形態では、画像処理システム400がプロセス900を実行する。
【0090】
一実施形態では、ブロック902において、プロセスは、複数の訓練画像を使用して第1の畳み込みニューラルネットワーク(CNN)を訓練する。次に、ブロック904において、プロセスは、第1のCNNが訓練されたと判定されると、第1のCNNに基づいて、第1の訓練済みCNNと第2の訓練済みCNNを生成する。次に、ブロック906において、プロセスは、第2の訓練済みCNNにインタフェース層を追加する。
【0091】
次に、ブロック908において、プロセスは、第1の結果ベクトルを生成するために、第1の訓練済みCNNを使用して一連の画像の第1の画像を処理する。例えば、いくつかの実施形態において、第1の画像は、カメラまたは他のエッジデバイス上の画像センサによって撮影され、CNNによって検出された物体の描写を含む。次に、ブロック910において、プロセスは、第2の結果ベクトルを生成するために、第1の訓練済みCNNを使用して、一連の画像の中で第1の画像に続く第2の画像を処理する。いくつかの実施形態において、第2の画像はまた、第1の画像における物体の描写を含み、物体は、第2の画像においてCNNによって再び検出される。いくつかの実施形態では、プロセスは、検出された物体のラベルを生成することと、物体および生成されたラベルを表示することとを含む。いくつかの実施形態において、プロセスは、第1の訓練済みCNNから出力された第1の結果ベクトルをキャッシュすることと、カメラの動きとピクセルシフトに基づいて、第2の画像内の物体にラベル付けするために、第1の訓練済みCNNから出力されたキャッシュ済み第1の結果ベクトルを利用することとを含む。
【0092】
次に、ブロック912において、プロセスは、第3の結果ベクトルを生成するために、第2の訓練済みCNNとインタフェース層に入力されたセンサデータとを使用して、第2の画像を処理する。いくつかの実施形態において、プロセスは、カメラまたは他のエッジデバイス上の動きセンサによってセンサデータを生成することを含む。このような実施形態では、センサデータは、画像センサが第1の画像を撮影した後、かつ、画像センサが第2の画像を撮影する前のカメラまたは他のエッジデバイスの動きを記述する。動きセンサの非限定的な実施形態は、加速度センサ、磁気センサ、ジャイロスコープ、全地球測位システム、および近接センサを含む。いくつかの実施形態では、動きは、第1の画像と第2の画像との間のピクセルシフトを検出するために使用される。
【0093】
次に、ブロック914において、第2の訓練済みCNNを使用した第2の画像の処理は、補正値を使用してセンサデータを修正することを含む。次に、ブロック916において、プロセスは、誤差値を生成するために、第3の結果ベクトルと第2の結果ベクトルとを比較する。次に、ブロック918において、プロセスは、誤差値を使用して修正済み補正値を計算する。いくつかの実施形態において、修正済み補正値を計算することは、修正済み補正値を決定するために、バックプロパゲーションアルゴリズムを使用することを含む。いくつかのそのような実施形態において、バックプロパゲーションアルゴリズムは、結果として生じる誤差値の減少に基づいて、修正済み補正値を決定することを含む。
【0094】
次に、ブロック920において、プロセスは、修正済み補正値を持つ第2の訓練済みCNNに基づいて、センサ補正された訓練済みCNNを生成する。いくつかの実施形態において、第4の結果ベクトルを生成するために、一連の画像において第2の画像に後続する第3の画像は、センサ補正された訓練済みCNNと、インタフェース層に入力された更新済みセンサデータとを使用して処理される。いくつかの実施形態において、プロセスは、カメラ上の動きセンサによって更新済みセンサデータを生成することを含み、更新済みセンサデータは、カメラ上の画像センサが第2の画像を撮影した後、かつ、カメラ上の画像センサが第3の画像を撮影する前のカメラの更新済みの動きを記述する。いくつかの実施形態において、プロセスは、第4の結果ベクトルに基づいて、第2の画像と第3の画像との間の更新済みピクセルシフトを検出することを含む。いくつかの実施形態において、プロセスは、カメラの更新済みの動きおよび更新済みピクセルシフトに基づいて、第3の画像が第1の画像および第2の画像からの物体の描写を含むと判定することを含む。
【0095】
以下の定義および略語は、特許請求の範囲および明細書の解釈に使用される。本明細書で使用される場合、「含む(comprises)」、「含む(comprising)」、「含む(includes)」、「含む(including)」、「含む(has)」、「含む(having)」、「含む(contains)」、「含む(containing)」またはそれらの任意の他の変形の用語は、排他的な包含であることを意図している。例えば、要素のリストからなる組成物、混合物、プロセス、方法、物品、または装置は、必ずしもそれらの要素のみに限定されるわけではなく、そのような組成物、混合物、プロセス、方法、物品、または装置に明示的にリストされていない、または固有のものではない他の要素を含むことができる。
【0096】
さらに、「例示的」という用語は、本明細書では「例、実例、または例示として機能すること」を意味するために使用される。本明細書で「例示的」として説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。「少なくとも1つ」および「1または複数」という用語は、1以上、すなわち1、2、3、4などの任意の整数を含むと理解される。「複数」という用語は、2以上、つまり2、3、4、5などの任意の整数を含むと理解される。「接続」という用語には、間接的な「接続」と直接的な「接続」の両方を含めることができる。
【0097】
本明細書における「ある実施形態(one embodiment)」、「一実施形態(an embodiment)」、「例示的な実施形態(an example embodiment)」等への言及は、記載される実施形態が特定の特徴、構造、または特性を含み得ることを示すが、すべての実施形態が特定の特徴、構造、または特性を含む場合もあれば、含まない場合もある。さらに、このような表現は、必ずしも同じ実施形態を指すとは限らない。さらに、特定の特徴、構造、または特性が実施形態に関連して記載されている場合、明示的に記載されているか否かにかかわらず、他の実施形態に関連してかかる特徴、構造、または特性に影響を与えることは当業者の知識の範囲内であることを提出する。
【0098】
「約」、「実質的に」、「概算」という用語、およびそれらの変形は、出願時に利用可能な機器に基づく特定の量の測定に関連する誤差の程度を含むことを意図している。例えば、「約」には、特定の値の±8%、5%、または2%の範囲を含めることができる。
【0099】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。好ましい実施形態の範囲から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。
【0100】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。記載される実施形態の範囲および精神から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。
【0101】
したがって、オンラインコミュニティへの参加および他の関連する特徴、機能、または操作を管理するための、コンピュータ実装方法、システム、または装置、およびコンピュータプログラム製品が、例示的な実施形態において提供される。実施形態またはその一部が、あるタイプのデバイスに関して説明されている場合、コンピュータ実装方法、システムまたは装置、コンピュータプログラム製品、またはその一部は、そのタイプのデバイスの適切かつ同等の顕在化と共に使用するように適合または構成される。
【0102】
実施形態がアプリケーションに実装されるものとして説明される場合、サービスとしてのソフトウェア(SaaS)モデルにおけるアプリケーションの提供は、例示的な実施形態の範囲内で企図される。SaaSモデルでは、実施形態を実装するアプリケーションの機能は、クラウドインフラストラクチャでアプリケーションを実行することによってユーザに提供される。ユーザは、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインタフェース、または他の軽量クライアントアプリケーションを介して、様々なクライアントデバイスを使用してアプリケーションにアクセスすることができる。ユーザは、ネットワーク、サーバ、オペレーティングシステム、またはクラウドインフラストラクチャのストレージを含む、基礎となるクラウドインフラストラクチャを管理または制御しない。場合によっては、ユーザはSaaSアプリケーションの機能を管理または制御しないこともある。他のケースでは、アプリケーションのSaaS実装は、限られたユーザ固有のアプリケーション構成設定の可能な例外を許可する場合がある。
【0103】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0104】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROMまたはフラッシュメモリ、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0105】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0106】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、統合回路のための構成データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0107】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0108】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1または複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するために汎用コンピュータ、専用コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1または複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読記憶媒体が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0109】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1または複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0110】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1または複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0111】
本発明の実施形態はまた、クライアント企業、非営利組織、政府機関、内部組織構造などとのサービス契約の一部として提供することもできる。これらの実施形態の態様は、本明細書に記載の方法の一部または全部を実行するようにコンピュータシステムを構成すること、およびソフトウェア、ハードウェア、およびウェブサービスを展開することを含み得る。また、これらの実施形態の態様は、クライアントの業務を分析すること、分析に応答する推奨事項を作成すること、推奨事項の一部を実施するシステムを構築すること、既存のプロセスおよびインフラストラクチャにシステムを統合すること、システムの使用を計量すること、システムのユーザに費用を配分すること、およびシステムの使用に対して課金することを含むことができる。以上、本発明の各実施形態について、それぞれ個々の利点を述べてきたが、本発明は、それらの特定の組み合わせに限定されるものではない。それどころか、このような実施形態も、その有益な効果を失うことなく、本発明の意図する展開に従って任意の方法および数で組み合わせることができる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】