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

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

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-08-26
(54)【発明の名称】動的な画像解像度評価
(51)【国際特許分類】
   G06T 7/00 20170101AFI20220819BHJP
【FI】
G06T7/00 Q
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021574991
(86)(22)【出願日】2019-06-18
(85)【翻訳文提出日】2022-01-28
(86)【国際出願番号】 US2019037638
(87)【国際公開番号】W WO2020256698
(87)【国際公開日】2020-12-24
(81)【指定国・地域】
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ス、ウェイ
(72)【発明者】
【氏名】リウ、シン
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096FA23
5L096GA17
5L096GA51
5L096HA11
5L096KA04
5L096MA01
(57)【要約】
デジタル画像の画像解像度評価に関するコンピュータ実装方法が、デジタル画像から複数の画像チップを所定のサンプリングパターンに従って抽出する段階を含む。複数の画像チップの各画像チップにはガウス窓が適用され、複数の処理済み画像チップが生成される。複数の処理済み画像チップの処理済み画像チップごとに、離散フーリエ変換(DFT)を用いて2次元(2D)エネルギースペクトルが決定される。2Dエネルギースペクトルを用いて、複数の画像チップの処理済み画像チップごとに、1次元(1D)エネルギースペクトルが決定される。1Dエネルギースペクトルに閾値が適用され、複数の処理済み画像チップの処理済み画像チップごとに画像解像度が取得される。複数の処理済み画像チップに対して決定された画像解像度のうちの最大画像解像度に基づいて、デジタル画像の映像特性が調整される。
【特許請求の範囲】
【請求項1】
デジタル画像の画像解像度評価に関するコンピュータ実装方法であって、
前記デジタル画像から複数の画像チップを所定のサンプリングパターンに従って抽出する段階と、
前記複数の画像チップの各画像チップにガウス窓を適用して、複数の処理済み画像チップを生成する段階と、
前記複数の処理済み画像チップの処理済み画像チップごとに、離散フーリエ変換(DFT)を用いて2次元(2D)エネルギースペクトルを決定する段階と、
決定された前記2Dエネルギースペクトルを用いて、前記複数の処理済み画像チップの処理済み画像チップごとに1次元(1D)エネルギースペクトルを決定する段階と、
決定された前記1Dエネルギースペクトルに閾値を適用することにより、前記複数の処理済み画像チップの処理済み画像チップごとに画像解像度を取得する段階と、
前記複数の処理済み画像チップに対して決定された前記画像解像度のうちの最大画像解像度に基づいて、前記デジタル画像の映像特性を調整する段階と
を備える、コンピュータ実装方法。
【請求項2】
前記コンピュータ実装方法がさらに、
前記所定のサンプリングパターンを、受信した入力に基づいて複数の所定のサンプリングパターンから選択する段階を備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記所定のサンプリングパターンが、
前記デジタル画像の3本の垂直軸と3本の水平軸との交点から前記複数の画像チップとして合計5個の画像チップが選択される5点菱形パターンと、
前記デジタル画像の5本の垂直軸と5本の水平軸との交点から前記複数の画像チップとして合計9個の画像チップが選択される9点菱形パターンと、
前記デジタル画像の3本の垂直軸と3本の水平軸との交点から前記複数の画像チップとして合計9個の画像チップが選択される9点四角形パターンと、
前記デジタル画像の5本の垂直軸と5本の水平軸との交点から前記複数の画像チップとして合計13個の画像チップが選択される13点四角形パターンと
のうちの1つである、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定する前記段階が、決定された前記2Dエネルギースペクトルをそれぞれの処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積する段階を含む、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定する前記段階が、
前記処理済み画像チップの前記2Dエネルギースペクトルを座標系のx軸に沿って垂直方向に折り畳む段階と、
前記x軸に対して対称な画素の2Dエネルギー値を足し合わせて、垂直方向に折り畳んだ2Dエネルギースペクトルを取得する段階と
を含む、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定する前記段階がさらに、
前記処理済み画像チップの垂直方向に折り畳んだ前記2Dエネルギースペクトルを前記座標系のy軸に沿って水平方向に折り畳む段階と、
前記y軸に対して対称な画素の2Dエネルギー値を足し合わせて、水平方向に折り畳んだ2Dエネルギースペクトルを取得する段階と、
水平方向に折り畳んだ前記2Dエネルギースペクトルを前記処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することにより、前記複数の処理済み画像チップのうちの前記処理済み画像チップに対する前記1Dエネルギースペクトルを決定する段階と
を含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記デジタル画像の前記映像特性を調整する段階が、
前記複数の処理済み画像チップに対して決定された前記画像解像度のうちの前記最大画像解像度に基づいて、前記デジタル画像を含むビデオストリームをダウンサンプリングする段階を含む、請求項1から6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記2Dエネルギースペクトルを決定する前記段階と、前記1Dエネルギースペクトルを決定する前記段階と、決定された前記1Dエネルギースペクトルに前記閾値を適用して前記画像解像度を取得する前記段階とが、前記複数の処理済み画像チップの処理済み画像チップごとに並行して行われる、請求項1から7のいずれか一項に記載のコンピュータ実装方法。
【請求項9】
命令を格納するメモリと、
前記メモリと通信する1つまたは複数のプロセッサと
を備えるシステムであって、前記1つまたは複数のプロセッサが前記命令を実行して、
デジタル画像から複数の画像チップを所定のサンプリングパターンに従って抽出し、
前記複数の画像チップの各画像チップにガウス窓を適用して、複数の処理済み画像チップを生成し、
前記複数の処理済み画像チップの処理済み画像チップごとに、離散フーリエ変換(DFT)を用いて2次元(2D)エネルギースペクトルを決定し、
決定された前記2Dエネルギースペクトルを用いて、前記複数の処理済み画像チップの処理済み画像チップごとに1次元(1D)エネルギースペクトルを決定し、
決定された前記1Dエネルギースペクトルに閾値を適用することにより、前記複数の処理済み画像チップの処理済み画像チップごとに画像解像度を取得し、
前記複数の処理済み画像チップに対して決定された前記画像解像度のうちの最大画像解像度に基づいて、前記デジタル画像の映像特性を調整する、システム。
【請求項10】
前記1つまたは複数のプロセッサが前記命令を実行して、
前記所定のサンプリングパターンを、受信した入力に基づいて複数の所定のサンプリングパターンから選択する、請求項9に記載のシステム。
【請求項11】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定することが、決定された前記2Dエネルギースペクトルをそれぞれ処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することを含む、請求項9または10に記載のシステム。
【請求項12】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定するために、前記1つまたは複数のプロセッサが前記命令を実行して、
前記処理済み画像チップの前記2Dエネルギースペクトルを座標系のx軸に沿って垂直方向に折り畳み、
前記x軸に対して対称な画素の2Dエネルギー値を足し合わせて、垂直方向に折り畳んだ2Dエネルギースペクトルを取得する、請求項9から11のいずれか一項に記載のシステム。
【請求項13】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定するために、前記1つまたは複数のプロセッサがさらに前記命令を実行して、
前記処理済み画像チップの垂直方向に折り畳んだ前記2Dエネルギースペクトルを前記座標系のy軸に沿って水平方向に折り畳み、
前記y軸に対して対称な画素の2Dエネルギー値を足し合わせて、水平方向に折り畳んだ2Dエネルギースペクトルを取得し、
水平方向に折り畳んだ前記2Dエネルギースペクトルを前記処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することにより、前記複数の処理済み画像チップのうちの前記処理済み画像チップに対する前記1Dエネルギースペクトルを決定する、請求項12に記載のシステム。
【請求項14】
前記デジタル画像の前記映像特性を調整するために、前記1つまたは複数のプロセッサが前記命令を実行して、
前記複数の処理済み画像チップに対して決定された前記画像解像度のうちの前記最大画像解像度に基づいて、前記デジタル画像を含むビデオストリームをダウンサンプリングする、請求項9から13のいずれか一項に記載のシステム。
【請求項15】
前記1つまたは複数のプロセッサが前記命令を実行して、
前記複数の処理済み画像チップの処理済み画像チップごとに、前記2Dエネルギースペクトル、前記1Dエネルギースペクトル、および前記画像解像度の決定を並行して行う、請求項9から14のいずれか一項に記載のシステム。
【請求項16】
デジタル画像の画像解像度評価に関するコンピュータプログラムであって、プロセッサに、
前記デジタル画像から複数の画像チップを所定のサンプリングパターンに従って抽出する手順と、
前記複数の画像チップの各画像チップにガウス窓を適用して、複数の処理済み画像チップを生成する手順と、
前記複数の処理済み画像チップの処理済み画像チップごとに、離散フーリエ変換(DFT)を用いて2次元(2D)エネルギースペクトルを決定する手順と、
決定された前記2Dエネルギースペクトルを用いて、前記複数の処理済み画像チップの処理済み画像チップごとに1次元(1D)エネルギースペクトルを決定する手順と、
決定された前記1Dエネルギースペクトルに閾値を適用することにより、前記複数の処理済み画像チップの処理済み画像チップごとに画像解像度を取得する手順と、
前記複数の処理済み画像チップに対して決定された前記画像解像度のうちの最大画像解像度に基づいて、前記デジタル画像の映像特性を調整する手順と
を実行させるためのコンピュータプログラム。
【請求項17】
前記プロセッサに、
前記所定のサンプリングパターンを、受信した入力に基づいて複数の所定のサンプリングパターンから選択する手順をさらに実行させる、請求項16に記載のコンピュータプログラム。
【請求項18】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定するために、前記プロセッサに、
決定された前記2Dエネルギースペクトルをそれぞれの処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積する手順をさらに実行させる、請求項16または17に記載のコンピュータプログラム。
【請求項19】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定するために、前記プロセッサに、
前記処理済み画像チップの前記2Dエネルギースペクトルを座標系のx軸に沿って垂直方向に折り畳む手順と、
前記x軸に対して対称な画素の2Dエネルギー値を足し合わせて、垂直方向に折り畳んだ2Dエネルギースペクトルを取得する手順と
をさらに実行させる、請求項16から18のいずれか一項に記載のコンピュータプログラム。
【請求項20】
前記複数の処理済み画像チップの処理済み画像チップごとに前記1Dエネルギースペクトルを決定するために、前記プロセッサに、
前記処理済み画像チップの垂直方向に折り畳んだ前記2Dエネルギースペクトルを前記座標系のy軸に沿って水平方向に折り畳む手順と、
前記y軸に対して対称な画素の2Dエネルギー値を足し合わせて、水平方向に折り畳んだ2Dエネルギースペクトルを取得する手順と、
水平方向に折り畳んだ前記2Dエネルギースペクトルを前記処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することにより、前記複数の処理済み画像チップのうちの前記処理済み画像チップに対する前記1Dエネルギースペクトルを決定する手順と
をさらに実行させる、請求項19に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、リアルタイムのストリーミングビデオからの画像データといった画像データのディープニューラルネットワーク(DNN)処理に先立って行う動的な画像解像度評価に関連している。
【背景技術】
【0002】
ディープニューラルネットワーク(DNN)は、画像認識などの特定の画像処理作業を行うために、独自のデータセットで訓練される。DNNは通常、訓練データの他に、テストデータセットでよく機能する。しかしながら、同じDNNモデルがモバイルデバイス(例えば、スマートフォン)に導入された場合、DNN性能の大幅な精度低下が注目されている。この問題の原因は、テストデータセット(およびDNN訓練データセット)の高品質な見本映像と、モバイルデバイス用途と関連付けられることが多い低品質のストリーミング映像との差異にある。あらゆる要因の中で、デジタル画像を表すことができる最高周波数に関して定義されるビデオフレームの低い実解像度が、DNNの性能を低下させる主な理由である。
【0003】
解像度が低い場合、画像はぼやけて見えるため、DNNの低レベル畳み込みカーネルを活性化することができない。このカーネルは、特徴抽出用の(エッジやコーナーを判定するためなどの)鮮明な画像で訓練されているからである。低レベルカーネルの弱い活性化は次に、より高いレベルの無効な推論、したがって、モバイルデバイスに導入されたDNNの精度を最終的に低下させる連鎖反応を引き起こす。低解像度は通常、旧式のデバイスおよび低性能のカメラで撮影されるストリーミングビデオ、過圧縮(特に、低帯域幅設定において)、およびインターネットユーザがアップサンプリングで意図的に作成した偽の高解像度(HR)映像と関連付けられている。したがって、DNNを用いるために、モバイルデバイスでの画像解像度を評価することは、DNNの性能を向上させるための重要なタスクである。
【発明の概要】
【0004】
ここから、選択したいくつかの概念を紹介するために、様々な例が簡略化した形態で説明され、これらの例はさらに、詳細な説明として後述される。本概要には、特許請求される主題の重要な特徴または不可欠な特徴を特定する意図はなく、また特許請求される主題の範囲を限定するのに用いる意図もない。
【0005】
本開示の第1の態様によれば、デジタル画像の画像解像度評価を目的としたコンピュータ実装方法が提供される。本方法は、デジタル画像から複数の画像チップを所定のサンプリングパターンに従って抽出する段階を含む。複数の画像チップの各画像チップにはガウス窓が適用され、複数の処理済み画像チップが生成される。複数の処理済み画像チップの処理済み画像チップごとに、離散フーリエ変換(DFT)を用いて2次元(2D)エネルギースペクトルが決定される。決定された2Dエネルギースペクトルを用いて、複数の処理済み画像チップの処理済み画像チップごとに、1次元(1D)エネルギースペクトルが決定される。決定された1Dエネルギースペクトルに閾値を適用することにより、複数の処理済み画像チップの処理済み画像チップごとに画像解像度が取得される。複数の処理済み画像チップに対して決定された画像解像度のうちの最大画像解像度に基づいて、デジタル画像の映像特性が調整される。
【0006】
そのような第1の態様による方法の第1の実装形態において、所定のサンプリングパターンは、受信した入力に基づいて、複数の所定のサンプリングパターンから選択される。
【0007】
そのような第1の態様または第1の態様の任意の前述した実装形態による方法の第2の実装形態において、所定のサンプリングパターンは、デジタル画像の3本の垂直軸および3本の水平軸の交点から複数の画像チップとして合計5個の画像チップが選択される5点菱形パターンと、デジタル画像の5本の垂直軸および5本の水平軸の交点から複数の画像チップとして合計9個の画像チップが選択される9点菱形パターンと、デジタル画像の3本の垂直軸および3本の水平軸の交点から複数の画像チップとして合計9個の画像チップが選択される9点四角形パターンと、デジタル画像の5本の垂直軸および5本の水平軸の交点から複数の画像チップとして合計13個の画像チップが選択される13点四角形パターンとのうちの1つである。
【0008】
そのような第1の態様または第1の態様の任意の前述した実装形態による方法の第3の実装形態において、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定する段階は、決定された2Dエネルギースペクトルをそれぞれの処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積する段階を含む。
【0009】
そのような第1の態様または第1の態様の任意の前述した実装形態による方法の第4の実装形態において、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定する段階は、処理済み画像チップの2Dエネルギースペクトルを座標系のx軸に沿って垂直方向に折り畳む段階と、x軸に対して対称な画素の2Dエネルギー値を足し合わせて、垂直方向に折り畳んだ2Dエネルギースペクトルを取得する段階とを含む。
【0010】
そのような第1の態様または第1の態様の任意の前述した実装形態による方法の第5の実装形態において、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定する段階はさらに、処理済み画像チップの垂直方向に折り畳んだ2Dエネルギースペクトルを座標系のy軸に沿って水平方向に折り畳む段階と、y軸に対して対称な画素の2Dエネルギー値を足し合わせて、水平方向に折り畳んだ2Dエネルギースペクトルを取得する段階と、水平方向に折り畳んだ2Dエネルギースペクトルを処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することにより、複数の処理済み画像チップのうちの当該処理済み画像チップに対する1Dエネルギースペクトルを決定する段階とを含む。
【0011】
そのような第1の態様または第1の態様の任意の前述した実装形態による方法の第6の実装形態において、デジタル画像の映像特性を調整する段階は、複数の処理済み画像チップに対して決定された画像解像度のうちの最大画像解像度に基づいて、デジタル画像を含むビデオストリームをダウンサンプリングする段階を含む。
【0012】
そのような第1の態様または第1の態様の任意の前述した実装形態による方法の第7の実装形態において、2Dエネルギースペクトルを決定する段階と、1Dエネルギースペクトルを決定する段階と、決定された1Dエネルギースペクトルに閾値を適用して画像解像度を取得する段階とは、複数の処理済み画像チップの処理済み画像チップごとに並行して行われる。
【0013】
本開示の第2の態様によれば、命令を格納するメモリと、メモリと通信する1つまたは複数のプロセッサとを含むシステムが提供される。1つまたは複数のプロセッサは、命令を実行して、デジタル画像から複数の画像チップを所定のサンプリングパターンに従って抽出する。複数の画像チップの各画像チップにはガウス窓が適用され、複数の処理済み画像チップが生成される。複数の処理済み画像チップの処理済み画像チップごとに、離散フーリエ変換(DFT)を用いて2Dエネルギースペクトルが決定される。決定された2Dエネルギースペクトルを用いて、複数の処理済み画像チップの処理済み画像チップごとに、1Dエネルギースペクトルが決定される。決定された1Dエネルギースペクトルに閾値を適用することにより、複数の処理済み画像チップの処理済み画像チップごとに画像解像度が取得される。複数の処理済み画像チップに対して決定された画像解像度のうちの最大画像解像度に基づいて、デジタル画像の映像特性が調整される。
【0014】
そのような第2の態様によるシステムの第1の実装形態において、1つまたは複数のプロセッサはさらに、受信した入力に基づいて、複数の所定のサンプリングパターンから所定のサンプリングパターンを選択するように構成される。
【0015】
そのような第2の態様または第2の態様の任意の前述した実装形態によるシステムの第2の実装形態において、1つまたは複数のプロセッサはさらに、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定するように構成され、決定された2Dエネルギースペクトルをそれぞれの処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することが含まれる。
【0016】
そのような第2の態様または第2の態様の任意の前述した実装形態によるシステムの第3の実装形態では、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定するために、1つまたは複数のプロセッサはさらに、処理済み画像チップの2Dエネルギースペクトルを座標系のx軸に沿って垂直方向に折り畳み、x軸に対して対称な画素の2Dエネルギー値を足し合わせて、垂直方向に折り畳んだ2Dエネルギースペクトルを取得するように構成される。
【0017】
そのような第2の態様または第2の態様の任意の前述した実装形態によるシステムの第4の実装形態では、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定するために、1つまたは複数のプロセッサはさらに命令を実行して、処理済み画像チップの垂直方向に折り畳んだ2Dエネルギースペクトルを座標系のy軸に沿って水平方向に折り畳み、y軸に対して対称な画素の2Dエネルギー値を足し合わせて、水平方向に折り畳んだ2Dエネルギースペクトルを取得し、水平方向に折り畳んだ2Dエネルギースペクトルを処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することにより、複数の処理済み画像チップのうちの当該処理済み画像チップに対する1Dエネルギースペクトルを決定する。
【0018】
そのような第2の態様または第2の態様の任意の前述した実装形態によるシステムの第5の実装形態では、デジタル画像の映像特性を調整するために、1つまたは複数のプロセッサは命令を実行して、複数の処理済み画像チップに対して決定された画像解像度のうちの最大画像解像度に基づき、デジタル画像を含むビデオストリームをダウンサンプリングする。
【0019】
そのような第2の態様または第2の態様の任意の前述した実装形態によるシステムの第6の実装形態において、1つまたは複数のプロセッサはさらに、複数の処理済み画像チップの処理済み画像チップごとに、2Dエネルギースペクトル、1Dエネルギースペクトル、および画像解像度の決定を並行して行うように構成される。
【0020】
本開示の第3の態様によれば、デジタル画像の画像解像度評価を目的とした命令を格納する非一時的コンピュータ可読媒体が提供される。この命令は、コンピューティングデバイスの1つまたは複数のプロセッサにより実行されると、1つまたは複数のプロセッサに各オペレーションを実行させる。このオペレーションには、デジタル画像から複数の画像チップを所定のサンプリングパターンに従って抽出することが含まれる。複数の画像チップの各画像チップにはガウス窓が適用され、複数の処理済み画像チップが生成される。複数の処理済み画像チップの処理済み画像チップごとに、離散フーリエ変換(DFT)を用いて2Dエネルギースペクトルが決定される。決定された2Dエネルギースペクトルを用いて、複数の処理済み画像チップの処理済み画像チップごとに、1Dエネルギースペクトルが決定される。決定された1Dエネルギースペクトルに閾値を適用することにより、複数の処理済み画像チップの処理済み画像チップごとに画像解像度が取得される。複数の処理済み画像チップに対して決定された画像解像度のうちの最大画像解像度に基づいて、デジタル画像の映像特性が調整される。
【0021】
そのような第3の態様による非一時的コンピュータ可読媒体の第1の実装形態において、オペレーションにはさらに、受信した入力に基づいて、所定のサンプリングパターンを複数の所定のサンプリングパターンから選択する段階が含まれる。
【0022】
そのような第3の態様または第3の態様の任意の前述した実装形態による非一時的コンピュータ可読媒体の第2の実装形態では、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定するために、命令はさらに、それぞれの処理済み画像チップの中にある画素同士の間の複数の方向に沿って、決定された2Dエネルギースペクトルの累積を1つまたは複数のプロセッサに実行させる。
【0023】
そのような第3の態様または第3の態様の任意の前述した実装形態による非一時的コンピュータ可読媒体の第3の実装形態では、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定するために、命令はさらに、処理済み画像チップの2Dエネルギースペクトルを座標系のx軸に沿って垂直方向に折り畳む段階と、x軸に対して対称な画素の2Dエネルギー値を足し合わせて、垂直方向に折り畳んだ2Dエネルギースペクトルを取得する段階とを、1つまたは複数のプロセッサに実行させる。
【0024】
そのような第3の態様または第3の態様の任意の前述した実装形態による非一時的コンピュータ可読媒体の第4の実装形態では、複数の処理済み画像チップの処理済み画像チップごとに1Dエネルギースペクトルを決定するために、命令はさらに、処理済み画像チップの垂直方向に折り畳んだ2Dエネルギースペクトルを座標系のy軸に沿って水平方向に折り畳む段階と、y軸に対して対称な画素の2Dエネルギー値を足し合わせて、水平方向に折り畳んだ2Dエネルギースペクトルを取得する段階と、水平方向に折り畳んだ2Dエネルギースペクトルを処理済み画像チップの中にある画素同士の間の複数の方向に沿って累積することにより、複数の処理済み画像チップのうちの当該処理済み画像チップに対する1Dエネルギースペクトルを決定する段階とを、1つまたは複数のプロセッサに実行させる。
【0025】
前述した例のうちのいずれかを、前述したその他の例のうちのいずれか1つまたは複数と組み合わせて、本開示の範囲内にある新たな実施形態を作成してよい。
【図面の簡単な説明】
【0026】
必ずしも原寸に比例して描いたものではない図面では、同じ番号によって、異なる図の同様な要素を説明することがある。こうした図面は一般に、限定としてではなく例として、本明細書で説明される様々な実施形態を示している。
【0027】
図1】いくつかの例示的な実施形態による、画像解像度に基づくデータまたはニューラルネットワークモデルの調整を伴う深層学習(DL)訓練アーキテクチャ(DLTA)を用いた、DLプログラム訓練を示すブロック図である。
【0028】
図2】いくつかの例示的な実施形態による、DLTAの内部で訓練されたニューラルネットワークモデルを用いた訓練済みDLプログラムの生成を示す図である。
【0029】
図3】いくつかの例示的な実施形態による、複数の画像チップに対する並列処理を用いた画像解像度評価を示す図である。
【0030】
図4】いくつかの例示的な実施形態による、画像解像度評価に関連した、画像チップに対するガウス窓のスパースな適用を示す図である。
【0031】
図5】いくつかの例示的な実施形態による、画像解像度評価に関連した、画像内の画像チップを選択するのに用いることができる様々なサンプリングパターンを示す図である。
【0032】
図6】いくつかの例示的な実施形態による、画像解像度評価に関連した、離散フーリエ変換時の画像複製を示す。
【0033】
図7】いくつかの例示的な実施形態による、画像解像度評価に関連した、1次元(1D)の全方向スペクトル計算を加速させるための「折り紙」手法を示す。
【0034】
図8】いくつかの例示的な実施形態による、画像解像度評価のフローチャートを示す。
【0035】
図9】いくつかの例示的な実施形態による、本明細書で説明される様々なデバイスハードウェアと共に用いられ得る、代表的なソフトウェアアーキテクチャを示すブロック図である。
【0036】
図10】いくつかの例示的な実施形態による、アルゴリズムを実装して各方法を実行するデバイスの回路を示すブロック図である。
【発明を実施するための形態】
【0037】
1つまたは複数の実施形態の例示的な実装例が以下に提供されているが、図1~10に関して説明される、開示されるシステムおよび方法は、任意の数の手法を用いて(それが現在知られている手法であれ、またはまだ存在していない手法であれ)実現され得ることを最初に理解されたい。本開示は、本明細書において示され且つ説明される例示的な設計例および実装例を含む、以下に示される例示的な実装例、図面、手法に限定されることは全くなく、添付した特許請求の範囲の中で、その全範囲の均等物と共に修正されてよい。
【0038】
以下の説明では、本明細書の一部を形成する添付図面への言及がなされる。添付図面には、実施され得る具体的な実施形態が例示として示されている。こうした実施形態は、当業者が発明の主題を実施できるように十分詳細に説明されており、他の実施形態を利用してもよく、本開示の範囲から逸脱せずに構造上の変更、論理的な変更、電気的な変更を行うこともできることを理解されたい。したがって、例示的な実施形態に関する以下の説明は、限定的な意味に取るべきではなく、本開示の範囲は添付した特許請求の範囲によって定められる。
【0039】
画像解像度評価は、ブラインドまたは非参照の画像品質評価に関する重要なテーマの中で、以前から研究されている。デジタル画像の解像度を評価するために、従来の方法では、離散フーリエ変換(DFT)または離散余弦変換(DCT)によって画像の周波数スペクトルを計算し、次いで、スペクトルの分布を調べて、画像解像度の定量的メトリックを求めている。しかしながら、DFTおよびDCTは全体画像に適用される大域的な変換であるため、そのようなアルゴリズムで計算された画像解像度は通常、画像の全ての部分が平均化された粗いメトリックである。これにより、大面積の単純な背景またはぼやけた背景を有する画像などでは、特に不正確になる。
【0040】
精度を向上させるために、一部の既存のアルゴリズムでは、画像解像度評価にウェーブレット変換を用いている。ウェーブレット変換は、マルチスケールの周波数特性を各位置で評価できるのに対して、通常、計算の複雑性が高すぎるため、リアルタイムの画像解析のためにDNNをモバイルデバイスに導入する場合といった、リアルタイムの適用に用いることはできない。他の研究では、人間の認識と一貫したブラーメトリックの解析に注目している。こうした研究テーマは多くのユーザにとって魅力的であるのに対して、DNNアルゴリズムが追加計算コストと関連している状態では、認識の一貫性はわずかな助けを与えるだけである。この点について、既存の解像度評価アルゴリズムでは、高速の解像度評価(例えば、モバイルデバイスにおいてミリ秒単位で行うことができる解像度評価)を行うための手法を提供することや、合理的に正確な解像度評価メトリックをもたらすことはない。
【0041】
本明細書に開示される手法は、既存の解像度評価アルゴリズムと関連した、画像のぼやけによって引き起こされる障害に対処するのに用いることができる。より具体的には、本明細書に開示される手法は、リアルタイムのストリーミングビデオといった映像データの(例えば、コンピューティングデバイス上で実行するDNNアプリケーションによる)DNN処理に先立って、動的な画像解像度評価に用いることができる。本明細書で開示される画像解像度評価手法は、スパースに窓化されたフーリエ変換を用いて、デジタル画像(例えば、ビデオストリームからの画像)の局所的な周波数特性を解析する。いくつかの異なる画像サンプリングパターンが、デジタル画像をサンプリングし、解析のために画像から固定サイズ(例えば、長方形の画像部分)の画像チップを選択するのに用いられ得る。本明細書で用いられる場合、用語「画像チップ」とは、デジタル画像の画像部分(例えば、長方形の画像部分)のことを指す。
【0042】
画像チップはガウス窓と掛け合わされ、ガウス窓は、チップの中心を変わらないように保ち、中心から離れたチップを暗くする。ガウス窓の適用で、チップ境界によって引き起こされる強い高周波信号による外乱が回避される。次に、DFTを個々のチップに適用して、チップごとに2Dエネルギースペクトルを計算する。2Dエネルギースペクトルは、様々な方向に沿った様々な周波数のエネルギー分布を表している。2D空間におけるエネルギーは、2Dエネルギーを同じ極半径で累積して1Dエネルギー分布を取得することにより、1D全周波数空間に投影される。このプロセスは、本明細書で説明した「折り紙」手法を用いて、2Dエネルギースペクトルを垂直方向に、次いで水平方向に折り畳むことにより加速される。次に、画像解像度の1つのメトリックが、1Dエネルギー分布を2つに分けることにより、各サンプリング箇所で(すなわち、画像チップごとに)取得される。画像解像度の最終的なメトリックが、全てのサンプリング箇所(または画像チップ)に対して計算された画像解像度メトリックの最大値として計算され、その範囲は0以上1未満である。DFTは小規模で計算することができ、また様々な領域のスペクトル解析は並行して行うことができるので、開示された手法は(画像解像度をより正確に評価するために)複数の画像チップに対して同時に行われて、画像の一部に見え得る明確な特徴を取り込むことができ、最終的な画像解像度評価が画像サイズに関係なくミリ秒単位で実行され得る。
【0043】
インターネット上では、ぼやけた映像および画像が一般的なので、画像解像度評価の手法を開発することは重要である。そのため、DNNが、リアルタイムのデータストリームを効果的に処理するためにモバイルデバイスに導入され得る。以下は、画像解像度評価用に現在開示されている手法の際立った特徴であり、既存の(先行技術の)手法には存在しない。すなわち、(a)一連の独自のサンプリングパターンのうちの1つを用いて選択された複数の画像チップに適用される並列スパース窓化フーリエ変換に基づいた、迅速な画像解像度評価、(b)画像解像度評価に用いることができる、画像サンプリング用の4つのサンプリングパターン、および(c)1D全エネルギースペクトルを決定するための「折り紙」手法である(2Dエネルギースペクトルは水平方向に且つ垂直方向に折り畳まれ、モバイルデバイスでDNN処理を実施するために、1Dエネルギースペクトルの計算を大幅に短縮し、効率的な画像解像度の決定をもたらす)。
【0044】
図1は、いくつかの例示的な実施形態による、画像解像度に基づくデータまたはニューラルネットワークモデルの調整を伴う深層学習(DL)訓練アーキテクチャ(DLTA)を用いた、DLプログラム110の訓練を示すブロック図(100)である。いくつかの例示的な実施形態では、深層学習プログラムを含む機械学習プログラム(MLP)(まとめて機械学習アルゴリズムまたはツールとも呼ばれる)を利用して、相関データまたは他の人工知能(AI)ベースの機能と関連付けられたオペレーションを行う。
【0045】
図1に示すように、深層学習プログラム訓練108が、訓練データ102(特徴を含んでよい)に基づいて、深層学習訓練アーキテクチャ(DLTA)106の内部で行われてよい。深層学習プログラム訓練108の際に、訓練データ102の特徴がDLプログラムのさらなる訓練のために評価されてよい。DLプログラム訓練108は、新たなデータ114に基づいて評価116を提供するのに用いられ得る1つまたは複数の分類器112を含むことができる訓練済みDLプログラム110をもたらす。
【0046】
深層学習は機械学習の一部であり、明示的にプログラムされることなくコンピュータに学習能力を与える研究分野である。機械学習では、既存のデータ、相関データから学習して、新たなデータに関する予測を行うことができるアルゴリズム(本明細書ではツールとも呼ばれる)の研究および構造を探求する。そのような機械学習ツールは、出力または深層学習プログラム評価116として表現されるデータ駆動型予測または決定を行うために、見本となる訓練データ(例えば、102)からモデルを構築することにより動作する。いくつかの機械学習ツール(例えば、深層学習訓練アーキテクチャ)に関して例示的な実施形態が提示されているが、本明細書に提示されている原理は、他の機械学習ツールに適用されてもよい。
【0047】
いくつかの例示的な実施形態では、様々な機械学習ツールが用いられてよい。例えば、ロジスティック回帰(LR)、単純ベイズ、ランダムフォレスト(RF)、ニューラルネットワーク(NN)、行列分解、およびサポートベクタマシン(SVM)ツールが、(例えば、訓練データ102を関連付けるための)プログラム訓練プロセス108の際に用いられてよい。
【0048】
機械学習における2つの一般的な種類の問題が、分類問題および回帰問題である。分類問題は、カテゴリ化問題とも呼ばれ、各項目をいくつかのカテゴリ値のうちの1つに分類することを目標にしている(例えば、この物体はリンゴなのか、それともオレンジなのか)。回帰アルゴリズムは、いくつかの項目を(例えば、実数の値を提供することにより)定量化することを目標にしている。いくつかの実施形態において、DLTA106は、結果に影響を与える特定済みの特徴同士の相関性を求めるために訓練データ102を利用する機械学習アルゴリズムを用いるように構成されてよい。
【0049】
機械学習アルゴリズムは、新たなデータ114を解析して評価116を生成するために、訓練データ102からの特徴を利用する。これらの特徴は、ある現象が観察され且つMLプログラムを訓練するのに用いられることに関する、個々の重要な特性を含む。ある特徴の概念は、線形回帰などの統計手法に用いられる説明変数の概念に関連している。有益で際立った独立した特徴を選択することは、パターン認識、分類、および回帰におけるMLPの効果的な動作にとって重要である。これらの特徴は、数的特徴、数字列、および数的グラフといった、異なる種類のものであってよい。いくつかの態様では、訓練データが異なる種類のものであってよく、これらの特徴はコンピューティングデバイスが用いるために数値である。
【0050】
いくつかの態様において、DLプログラム訓練108の際に用いられる特徴は、複数のセンサ(例えば、オーディオセンサ、モーションセンサ、イメージセンサ)からのセンサデータと、複数のアクチュエータ(例えば、無線スイッチなどのアクチュエータ)からのアクチュエータイベントデータと、複数の外部ソースからの外部情報ソース、センサ状態データ(例えば、タイムセンサデータが取得される)、アクチュエータイベントデータ、または外部情報ソースデータと関連付けられタイマデータと、ユーザ通信情報と、ユーザデータと、ユーザ行動データなどのうちの1つまたは複数を含んでよい。
【0051】
機械学習アルゴリズムは、訓練データ102を利用して、評価116の結果に影響を与える特定済みの特徴同士の相関性を求める。いくつかの例示的な実施形態において、訓練データ102は、1つまたは複数の特定済みの特徴および1つまたは複数の結果のための既知のデータであるラベル付きデータを含む。訓練データ102(特定済みの特徴を含んでよい)があると、DLプログラムはDLTA106の内部でDLプログラム訓練108を用いて訓練される。訓練の結果が、訓練済みDLプログラム110である。DLプログラム110を用いて評価を行う場合、新たなデータ114が訓練済みDLプログラム110への入力として与えられ、DLプログラム110は評価116を出力として生成する。
【0052】
いくつかの態様では、新たなデータ114(リアルタイムのストリーミングデータを含んでよい)が、画像解像度評価118を行うために、本明細書で開示される手法のうちの1つまたは複数を用いて処理されてよい。画像データまたはニューラルネットワークモデルの調整120は、評価された画像解像度に基づいて行われてよい。例えば、新たなデータ114と関連付けられた画像解像度が閾解像度の値以下であると評価された場合、新たなデータ114の1つまたは複数の映像特性が、DLプログラム110を訓練するのに用いられた映像特性と一致するように調整されてよい。いくつかの態様において、映像特性の調整には、より鮮明な画像を作成するために新たなデータ114をダウンサンプリングすることが含まれてよい。他の態様において、DLTA106により用いられるニューラルネットワークモデルは、新たなデータの評価された解像度と一致する低い解像度の訓練データを用いて再訓練されてよいので、このモデルは評価された解像度の映像データを処理するのに十分適合するようになる。
【0053】
本明細書で用いられる場合、用語「画像解像度」は画像の解像度を示し、これは画像のサンプリング周波数に基づいて決定される。ナイキスト・シャノンのサンプリング定理によれば、個別の信号処理システムの所与のサンプルレートがfsの場合、元の信号がナイキスト周波数B=fs/2の(またはこれより高い)正弦波成分を含まないとすれば、完全な信号再構成が可能であると保証される。したがって、ナイキスト周波数Bは、デジタル画像が表現できるサンプリング周波数の上限である。最高画像サンプリング周波数f(f=B)で2次元(2D)の連続信号からサンプリングされたデジタル画像は、「最大解像度画像」と呼ばれる。f=B/2の最高画像サンプリング周波数で2Dの連続信号からサンプリングされたデジタル画像は、「半解像度画像」と呼ばれる。したがって、デジタル画像の解像度は、r=f/Bと定義することができる。ここで、r∈[0、1)であり、fは画像サンプリング周波数であり、Bはナイキスト周波数である。この文脈では、画像解像度は画像サイズと区別されており、画像サイズは画素の数で表されている。
【0054】
図2は、いくつかの例示的な実施形態による、DLTA106の内部で訓練されたニューラルネットワークモデル204を用いた訓練済みDLプログラム206の生成を示す図(200)である。図2を参照すると、ソースデータ202がニューラルネットワークモデル204(または別の種類の機械学習アルゴリズムもしくは手法)により解析されて、訓練済みDLプログラム206(これは訓練済みDLプログラム110と同じであってよい)が生成されてよい。ソースデータ202は、102などの訓練用のデータセットを含んでよく、この中には、1つまたは複数の特徴によって特定されたデータが含まれている。本明細書で用いられる場合、用語「ニューラルネットワーク」および「ニューラルネットワークモデル」は、どちらを使ってもよい。
【0055】
機械学習手法はモデルを訓練して、モデルに入力されるデータに基づく予測(例えば、ユーザが所与の発話で何を話したか、ある名詞が人、場所、または物なのか、明日の天気はどうなるだろうか)を正確に行うようにする。学習フェーズでは、訓練データセットの入力に対してモデルを発展させて、所与の入力に対する出力を正確に予測するようにモデルを最適化する。一般に、学習フェーズは、教師ありでも、半教師ありでも、教師なしでもよく、これらは、訓練用の入力に対応して「正しい」出力が提供されるレベルが減少していく順に示されている。教師あり学習フェーズでは、全ての出力がモデルに提供され、モデルは入力を出力と対応させる一般ルールまたはアルゴリズムを発展させるように指示される。これに対して、教師なし学習フェーズでは、所望の出力が入力に提供されないので、モデルは訓練データセットの中で関係を見つけ出すように、独自のルールを発展させてよい。半教師あり学習フェーズでは、不完全なラベル付き訓練セットが提供され、訓練データセットには既知の出力もあれば、未知のものもある。
【0056】
モデルはいくつかのエポックの間、訓練データセットに対して実行されてよいが、その間、訓練データセットはモデルに繰り返し入力されて、その結果が精密化される(すなわち、データセット全体がエポックの間に処理される)。反復している間、モデル(例えば、ニューラルネットワークモデルまたは別の種類の機械学習モデル)は、ミニバッチ(またはデータセット全体の一部)に対して実行される。教師あり学習フェーズでは、所与のセットの入力(例えば、ソースデータ202)に対する出力を予測するようにモデルを発展させ、いくつかのエポックにわたってモデルを評価し、所与の入力に対応するものとして指定される出力を、訓練データセット用の最大数の入力に対してより確実に提供する。別の例では、教師なし学習フェーズの場合、データセットをn個のグループにクラスタ化するようにモデルを発展させ、モデルが所与の入力を所与のグループにどの程度一貫して配置しているか、またモデルがn個の所望のクラスタを各エポックにおいてどの程度確実に生成しているかについて、いくつかのエポックにわたってモデルを評価する。
【0057】
エポックが実行されると、モデルは評価され、またモデルの変数(例えば、重み、バイアスなどのパラメータ)の値を調整して、モデルを反復形式で十分に精密化しようとする試みが行われる。本明細書で用いられる場合、用語「重み」は、機械学習モデルで用いられるパラメータを指すのに用いられる。逆方向計算の際に、モデルは勾配を出力することができ、この勾配は、順方向計算と関連する重みを更新するのに用いられてよい。本明細書で用いられる場合、用語「順方向計算」および「逆方向計算」は、ニューラルネットワークモデル(または別の種類のモデル)の訓練に関連して行われる計算のことを指す。順方向計算および逆方向計算の際に現在の反復で行われる計算は、事前の反復の結果に基づいて(例えば、事前の逆方向計算の結果で生成された勾配に基づいて)重みを修正する。ディープニューラルネットワーク向けの分散型同期式訓練環境では、ニューラルネットワークモデルの重み更新(すなわち、勾配同期)を目的とした勾配集約、平均化、およびワーカーマシンの間での分散が、逆方向伝搬(すなわち、逆方向計算時のニューラルネットワークモデルのレイヤ処理)で順次伝わり得る。
【0058】
様々な態様において、評価は、検出漏れに対してバイアスされる、誤検出に対してバイアスされる、またはモデルの全体精度に対して均等にバイアスされる。これらの値は、用いる機械学習手法に応じて、いくつかの方法で調整されてよい。例えば、遺伝的アルゴリズムまたは進化的アルゴリズムでは、所望の出力を予測するのに最も成功したモデルの値は、モデルが次のエポックで用いる値を発展させるのに用いられ、これには、さらなるデータポイントを提供するランダム変動/変異が含まれてよい。当業者であれば、本開示を用いて適用され得るいくつかの他の機械学習アルゴリズム(線形回帰、ランダムフォレスト、決定木学習、ニューラルネットワーク、ディープニューラルネットワークなどを含む)に詳しいであろう。
【0059】
各モデルは、入力に影響を与える1つまたは複数の変数の値を変えて、所望の結果により密接に対応させることによって、いくつかのエポックにわたりルールまたはアルゴリズムを発展させるが、訓練データセットは変更されることがあり且つ大規模であることが好ましいので、十分な精度および正確度が実現できないことがある。したがって、学習フェーズを構成する多くのエポックが所与の数の試行または一定の時間/計算バジェットとして設定されてもよく、所与のモデルの精度が十分高いもしくは十分低い場合、または精度プラトーに達した場合には、これらのエポックがその数/バジェットに達する前に終了してもよい。例えば、訓練フェーズがn個のエポックを実行して、少なくとも95%の精度を有するモデルを生成するように設計され、そのようなモデルがn番目のエポックの前に生成された場合、この学習フェーズは早めに終了して、最終目標の精度閾値を満たす生成されたモデルを用いてよい。同様に、所与のモデルが偶然の閾値を満たすほど十分正確ではない場合、このモデルの学習フェーズは早めに終了してよいが、学習フェーズにある他のモデルは訓練を継続してよい。同様に、複数のエポック全体にわたって所与のモデルが継続して同様の精度を提供するか、またはその結果の範囲で変動する場合、つまり性能プラトーに達した場合、所与のモデルの学習フェーズは、エポックの数/計算バジェットに達する前に終了してよい。
【0060】
学習フェーズが完了すると、モデルは確定する。いくつかの例示的な実施形態では、確定したモデルがテスト基準に対して評価される。第1の例では、入力に対する既知の出力を含むテストデータセットを、確定したモデルに入力して、訓練に使われていないデータを処理したときのモデルの精度を判定する。第2の例では、誤検出率または検出漏れ率を用いて、確定後のモデルを評価してよい。第3の例では、各モデルのデータクラスタ同士の描写を用いて、データのクラスタに対して最も鮮明な境界を生成するモデルを選択してよい。
【0061】
いくつかの例示的な実施形態において、DLプログラム206はニューラルネットワーク204(例えば、深層学習、深層畳み込みニューラルネットワーク、または回帰型ニューラルネットワーク)によって訓練され、このネットワークは、ネットワーク内に配置された一連の「ニューロン」(長短期記憶(LSTM)ノードなど)を備える。ニューロンは、データ処理および人工知能(特に、機械学習)に用いられる、記憶を含むアーキテクチャ要素であり、記憶は、この記憶に保持された値をいつ「想起」するか、またいつ「忘却」するかを所与のニューロンに提供される入力の重みに基づいて決定してよい。ここで用いられるニューロンのそれぞれは、所定の数の入力をネットワーク内の他のニューロンから受け取り、解析されているフレームの内容についてのリレーショナル出力およびサブリレーショナル出力を提供するように構成される。個々のニューロンは、共に鎖状につながれ、且つ/またはニューラルネットワークの様々な構成のツリー構造に構造化されて、発話におけるフレームのそれぞれがどのように互いに関連しているかについて、やり取りおよび関係性学習モデリングを提供してよい。
【0062】
例えば、ニューロンとしての機能を果たすLSTMが、入力ベクトル(例えば、発話からの音素)、メモリセル、および出力ベクトル(例えば、文脈上の表現)を処理するいくつかのゲートを含む。入力ゲートおよび出力ゲートは、メモリセルに流入する情報およびそこから流出する情報をそれぞれ制御する。一方、忘却ゲートは必要に応じて、ニューラルネットワーク内の早期に接続されたセルからの入力に基づいて、メモリセルから情報を削除する。訓練フェーズの間に、様々なゲートの重みおよびバイアスベクトルが調整され、訓練フェーズが完了すると、こうした重みおよびバイアスは通常動作のために確定される。当業者であれば、ニューロンおよびニューラルネットワークが、プログラムで(例えば、ソフトウェア命令で)構築されても、または専用ハードウェアが各ニューロンを接続してニューラルネットワークを形成することにより構築されてもよいことを理解するであろう。
【0063】
ニューラルネットワークは、データを解析して評価を生成するのに特徴を利用する(例えば、話し言葉の単位を認識する)。特徴とは、観察されている現象に関する個々の重要な特性である。特徴の概念は、線形回帰などの統計手法で用いられる説明変数の概念に関連している。さらに、深層特徴とは、ディープニューラルネットワークの隠れ層にあるノードの出力を表す。
【0064】
ニューラルネットワーク(例えば、204)とは、人工ニューラルネットワークまたはニューラルネットワークモデルと呼ばれることがあるが、動物の脳の生物学的神経回路網に関する検討に基づくコンピューティングシステムである。そのようなシステムは、漸進的に性能を向上させて(これは学習と呼ばれる)、タスクを行い、通常、タスク固有のプログラミングを必要としない。例えば、画像認識では、ニューラルネットワークは、ある物体を含む画像を、その物体の名称でタグ付けされている見本画像を解析することにより識別するように教えられてよく、その物体と名称を学習すれば、解析結果を用いてタグなし画像内にある物体を識別することができる。ニューラルネットワークは、ニューロンと呼ばれる一連の接続されたユニットに基づいており、シナプスと呼ばれるニューロン同士の各接続が、接続の強度で変化する活性化強度を有する単一指向性の信号を伝達することができる。受信ニューロンは、通常、組み合わされた入力信号(可能性として多くの送信ニューロンからの信号)が十分な強度であるかどうかに基づいて、信号を活性化し、受信ニューロンに接続された下流のニューロンに信号を伝搬することができる。ここで、強度はパラメータである。
【0065】
ディープニューラルネットワーク(DNN)は、複数の層で構成されている積層型ニューラルネットワークである。各層はノードで構成されている。ノードは、計算が行われる場所であり、人間の脳内にあって十分な刺激を受けると発火するニューロンに大体ならって作られている。ノードは、データからの入力を、その入力を強めるかまたは弱める一連の係数(すなわち、重み)と組み合わせる。これにより、アルゴリズムが学習しようとしているタスクの入力に重要性が割り当てられる。これらの入力重み積が足し合わされ、その合計がノードの活性化機能と呼ばれているところを通過し、信号がネットワークを通ってさらに進行して最終結果に影響を与えたかどうか、またどの程度まで最終結果に影響を与えたかが判定される。DNNは、特徴抽出および特徴変換を目的とした非線形処理ユニットの多くの層からなるカスケードを用いる。連続した各層は、前の層からの出力を入力として用いる。高レベルの特徴が低レベルの特徴から導き出され、階層的表現が形成される。入力層に続く各層は、特徴マップを生成する畳み込み層であってよく、特徴マップは入力の結果を選別しており、次の畳み込み層により用いられる。
【0066】
DNNアーキテクチャの訓練では、変数同士の関係を推定するための一連の統計プロセスとして構造化されている回帰が、コスト関数の最小化を含んでよい。コスト関数は、ニューラルネットワークが訓練用見本を正しい出力に対応させる際にどの程度うまく機能したかを表す数字を返す関数として実装されてよい。訓練では、コスト関数の値が所定の範囲内にない場合、既知の訓練画像に基づいて、逆方向伝搬が用いられる。逆方向伝搬とは、人工ニューラルネットワークを訓練する一般的な方法であり、確率的勾配降下(SGD)法などの最適化方法に用いられる。
【0067】
逆方向伝搬の使用には、伝搬と重みの更新とが含まれてよい。ニューラルネットワークに入力が与えられると、入力は、出力層に達するまで、一層ずつ順方向にニューラルネットワークを伝搬していく。次いで、ニューラルネットワークの出力は、コスト関数を用いて所望の出力と比較され、出力層にあるノードごとに誤差値が計算される。誤差値は、出力から開始して、各ノードが元の出力への寄与を大体表す関連誤差値を有するまで逆方向に伝搬する。逆方向伝搬では、これらの誤差値を用いて、ニューラルネットワークにおける重みに関して、コスト関数の勾配を計算することができる。計算された勾配は、選択された最適化方法に入力されて、重みが更新され、コスト関数を最小化する試みが行われる。
【0068】
訓練アーキテクチャ106が、ニューラルネットワークモデルを用いる深層学習訓練アーキテクチャと呼ばれたとしても(また訓練されるプログラムが、110または206といった訓練済み深層学習プログラムと呼ばれたとしても)、本開示はこの点について限定されることはなく、また他の種類の機械学習訓練アーキテクチャもモデルの訓練に用いられてよい。
【0069】
いくつかの態様において、深層学習プログラム(例えば、110または206)は、映像データ処理(例えば、顔認識を含む物体認識)に関連して用いられてよく、リアルタイムで評価された画像解像度データに基づき、本明細書で開示される手法のうちの1つまたは複数を用いて再訓練されてよい。いくつかの態様では、深層学習プログラムの再訓練または入力映像データの映像特性の調整(ダウンサンプリングなど)が、評価される画像解像度と関連付けられた異なる閾値に基づいて行われてよい。
【0070】
図3は、いくつかの例示的な実施形態による、複数の画像チップに対する並列処理を用いた画像解像度評価300を示す図である。図3を参照すると、画像解像度評価300は、モバイルデバイスで動的に行われ(例えば、一方で本デバイスはリアルタイムの映像データを受信している)、映像データ内にある1つまたは複数の画像の解像度が評価されてよい。画像解像度評価は、処理チェーン314~322(各チェーンでは入力画像チップ(例えば、304~312)にガウス窓が適用され、処理済み画像チップ(例えば、324~332)が取得される)と、2次元(2D)エネルギースペクトル(例えば、334~342)と、1D全エネルギースペクトル(例えば、344~352)とを含んでよい。最終的な解像度評価374が、1D全エネルギースペクトル344~352に基づいて取得される。これについては、以下でより詳細に説明する。
【0071】
例えば、画像302は、画像処理を行うためのDNNを用いるコンピューティングデバイスが受信したデータストリームの一部であってよい。サンプリングパターンが画像302に適用されて、画像チップ304、306、308、および310が取得されてよい。図3に示す具体的な例では、5点菱形サンプリングパターンが適用されているが、他のサンプリングパターン(例えば、図5に示すパターンのうちの1つ)も用いられてよい。画像チップ304~312がカラー画像から取られることがあったとしても、いくつかの態様では、対応する画像チップごとに、処理チェーン314、316、318、320、および322の開始に先立って、画像全体302(または画像チップ)が白黒画像(または画像チップ)に変換されてよい。
【0072】
いくつかの態様において、画像チップ304~312のそれぞれは、所定のサイズの長方形(例えば、四角形)である。処理チェーン314~322のそれぞれにおける最初の処理段階として、画像チップ304~312のそれぞれは、要素ごとにガウス窓(中央が1で、中央から離れると徐々に減る)と掛け合わされ、処理済み画像チップ324、326、328、330、および332がそれぞれ取得される。ガウス窓の適用によって、チップの中央は変わらず保たれ、中央から離れるとチップが暗くなり、チップ境界で生じる強い高周波信号による外乱が回避される。さらに、ガウス窓は画像全体ではなく、限られた数の画像チップにしか適用されないので、そのような適用はガウス窓のスパースな適用と呼ばれることがある。
【0073】
図4は、いくつかの例示的な実施形態による、画像解像度評価に関連した、画像チップに対するガウス窓のスパースな適用を示す図(400)である。図4を参照すると、デジタル画像内の9個の画像チップに対するガウス窓のスパースな適用が示されており、ガウス窓を適用した後に、処理済み画像チップのモグラ塚状の表現402が得られる。
【0074】
図5は、いくつかの例示的な実施形態による、画像解像度評価に関連した、画像内の画像チップを選択するのに用いることができる様々なサンプリングパターン502、504、506、および508を示す図である。
【0075】
カメラの有限開口によって、画像は通常、焦点が合っている領域では鮮明になり、他の箇所では程度の差はあってもぼやける。写真/映像を撮る場合、撮影者は通常、重要な被写体にレンズの焦点を合わせ、その被写体をフレームの中央領域に据える。こうした観察に基づいて、サンプリングパターン502、504、506、および508が、本明細書で開示される画像解像度評価手法に関連して用いられてよい。サンプリングパターン502~508は、最小数のサンプリング(または画像チップ)で、重要な画像被写体を取り込むように設計されている。ストリーミングビデオ解析に基づいて、画像被写体が最も頻繁に現れる位置は、画像中心のあたり、並びに画像の左、右、上、および下の1/3である。これらの領域は、画像パターン504(画像チップ512を伴う)および画像パターン508(画像チップ516を伴う)に示すように、9点菱形パターンおよび13点四角形パターンで十分にカバーされている。
【0076】
極めて低い計算バジェットで取り組む場合、画像パターン502(画像チップ510を伴う)および画像パターン506(画像チップ514を伴う)に示すように、画像サンプリング方式を5点菱形および9点四角形に削減することがある。中央および(画像の高さおよび幅の)1/3の場所にこれらの点を配置する代わりに、周辺のサンプリング箇所が(画像の高さおよび幅の)1/4の場所のあたりに置かれる。1/4方式は、1/3方式と比べて、画像チップを画像全体により均等に配置し、より多くの領域をカバーする。さらに、多くの画像が、1/4の場所あたりにエッジ、コーナーなどの明確な特徴を含む。
【0077】
いくつかの態様において、画像チップ510、512、514、および516の各画像チップは同じ正方形である。いくつかの態様において、画像チップ510、512、514、および516の各画像チップの場所は、図5に示すように、画像の高さ(例えば、h個の画素)および画像の幅(例えば、w個の画素)に基づいて決定されてよい。いくつかの態様では、画像解像度評価に関連してフーリエ変換を用いることができ、且つ入力画像サイズが2、3、および5の積である場合には、そのようなフーリエ変換が特に効率的であるため、チップサイズは実際の適用に従って、例えば、64、81、125、128などに設定されてよい。いくつかの態様において、画像チップのいくつかは、互いに重なり合ってよい。
【0078】
図3を再度参照すると、ガウス窓が適用され、処理済み画像チップ324、326、328、330、332が処理チェーン314、316、318、320、および322の中でそれぞれ生成された後に、デジタルフーリエ変換(DFT)(例えば、高速フーリエ変換(FFT))が処理済み画像チップに適用されて、2Dエネルギースペクトル334、336、338、340、および342がそれぞれ計算される。2Dエネルギースペクトルは、それぞれの処理済み画像チップ内の様々な方向に沿った様々な周波数のエネルギー分布を表している。
【0079】
DFTの適用では、画像が無限次元を有し、図6に示すように垂直方向および水平方向に沿って入力画像チップの複製で構成されていると考える。
【0080】
図6は、いくつかの例示的な実施形態による、画像解像度評価に関連した、離散フーリエ変換時の画像複製600を示す。より具体的には、DFTの適用に先立って、図6に示すように、画像チップ602が水平方向および垂直方向に複数回複製されてよい。
【0081】
複製によって、人工的な垂直エッジおよび水平エッジが画像チップの境界に沿って作成される。人工的なエッジがあると、周波数領域の高周波域で強い偽エネルギーが生じ、多くの場合、偽エネルギーは真の画像エネルギーより非常に強い。
【0082】
いくつかの態様では、画像チップ304~312へのガウス窓の適用は、次のように表すことができる。
【数1】
ここで、画像チップのサイズがk×k画素である場合、
【数2】
【数3】
および
【数4】
である。
【0083】
ガウス窓の適用には、ガウス関数のフーリエ変換が別のガウス関数であるという特性があり、これが周波数領域において低域フィルタとしての役割を果たすので、周波数スペクトルがわずかにぼやけるが、スペクトル解析を妨げることはない。画像チップのそれぞれにガウス窓を適用した後に、画像チップに対して2DのFFTを行い、チップの2Dエネルギースペクトル(例えば、場所(u,v)でのF(u,v))を決定する。この2Dエネルギースペクトルは各画素では実数を有する。2DエネルギースペクトルF(u,v)の対数変換E(u,v)が次のように決定され、高周波信号が明るくなる。
【数5】
【0084】
画像チップ304~312の2Dエネルギースペクトル334~342は、エネルギーを同じ極半径で累積することにより1D周波数空間に投影され、画像チップ304~312の1D全エネルギースペクトル344、346、348、350、および352がそれぞれ取得される。
【0085】
エネルギースペクトルE(u,v)の(u,v)の箇所の値は、周波数
【数6】
における、方向
【数7】
に沿ったエネルギーを表す。画像解像度に関する場合、方向は重要ではない。この点について、2Dエネルギースペクトルは、様々な方向のエネルギーを累積することにより(すなわち、全方向累積により)、次のように1D全エネルギースペクトル(例えば、表現344~352)に変換される。
【数8】
ここで、E(f)は表現344~352で示される1D全エネルギースペクトルである。
【0086】
E(f)を決定するための上記方程式は、リソース集約型の乗算計算および平方根の計算を伴うため、E(f)を決定するプロセスは、「折り紙」手法を用いて(例えば、2Dスペクトルを垂直方向に折り畳み、対応する値を合計することにより)高速に行うことができる。同じ「折り紙」プロセスは、図7に示すように、水平方向に繰り返し行われる。最終的に、E(f)の累積および決定は、2Dエネルギースペクトルの4つの象限のうちの1つだけで効率的に行うことができる。
【0087】
図7は、いくつかの例示的な実施形態による、画像解像度評価に関連した、1D全方向スペクトル計算を加速させるための「折り紙」手法700を示す。図7を参照すると、画像チップに対して計算された2Dエネルギースペクトル702を水平軸(またはx軸)704に沿って垂直方向に折り畳むと、2Dエネルギースペクトル706を得ることができる。折り畳んだ際に、x軸704に対して対称な画素の2Dエネルギー値が足し合わされ、その合計値は2Dエネルギースペクトル706の中に表されている。「折り紙」手法700は続いて、2Dエネルギースペクトル706を垂直軸(またはy軸)708に沿って水平方向に折り畳み、2Dエネルギースペクトル701を得る(これは、2Dエネルギースペクトル702の1/4のサイズである)。y軸708に沿って折り畳んだ際に、y軸708に対して対称な画素の2Dエネルギー値が足し合わされ、その合計値は2Dエネルギースペクトル701の中に表されている。次いで、1D全エネルギースペクトルの計算が、フルサイズの2Dエネルギースペクトル702ではなく、縮小サイズの2Dエネルギースペクトル701に対して行われてよく、その結果として、より速い画像解像度評価が得られる。
【0088】
図3を再度参照すると、1D全エネルギースペクトル344~352のそれぞれは、周波数領域の画像エネルギー(y軸に沿ってデシベル(またはdB)単位で測定される)と画像解像度(x軸に沿って0~1の値で表される)との関係に基づいて定められる。1D全エネルギースペクトルのそれぞれは、画像エネルギーの0dBにおける対応する閾値354、356、358、360、および362を適用することで2つに分けられてよい。より具体的には、閾値354~362のそれぞれは、画像エネルギーの0dBに対応する箇所で全エネルギースペクトルと交差するように適用されてよい。対応する画像チップ304~312の画像解像度の値364、366、368、370、372は、1D全エネルギースペクトル344~352のx軸との各閾値の交点として取得される。最終的な画像解像度374が、画像チップ304~312に対して計算された全ての画像解像度の値364~372のうちの最大値として決定され、最終的な画像解像度374は0以上1未満の範囲内になる。
【0089】
いくつかの態様では、画像チップをサンプリングパターンに基づいて決定した後に、処理チェーン314~322が並行して行われてよい。フーリエ解析は異なる領域でローカルに行われるため、開示された画像解像度手法は正確である。さらに、DFTは小規模で非常に効率的に計算することができ、様々な領域のスペクトル解析(例えば、処理チェーン314~322)が並行して行われるため、本明細書で開示された画像解像度評価手法は、画像サイズに関係なくミリ秒単位で実行することができる。
【0090】
最終的なデータ画像解像度が決定された後に、ニューラルネットワークモデルを再訓練するか、または画像を伴うビデオストリームの1つまたは複数の特性を変更することにより、画像のニューラルネットワーク処理が最適化されてよい。例えば、画像解像度が閾値より低いと判定された場合、ビデオストリームをダウンサンプリングして、より鮮明な画像を作成できるので、高解像度画像で訓練されたニューラルネットワークをそのまま適用することができる。代替案として、ビデオストリーム内の画像に関して取得された最終的な解像度に基づいて、ニューラルネットワークモデルを再訓練してもよい。
【0091】
いくつかの態様では、画像/映像の解像度が本明細書で開示した手法を用いて推定される場合、情報を損失することなくその画像/映像をダウンサンプリングして、記憶領域に保存し、ストリーミングコストを削減することができる。いくつかのウェブサービスでは、アップロードされる画像/映像は品質管理のために最小解像度を有することが必要とされる。この場合、本明細書で開示された手法を用いて、画像/映像の解像度を検出し、意図的にアップサンプリングされた「偽の」高解像度画像/映像(すなわち、高解像度ではなく、高解像度であるという印象をもたらすようにアップサンプリングされている画像/映像)を選別することができる。既存の画像/映像も、開示された手法を用いて検出された実解像度に従って、ライブラリ/データベースに登録することができる。
【0092】
図8は、いくつかの例示的な実施形態による、画像解像度評価のフローチャートを示す。方法800は、オペレーション802、804、806、808、810、および812を含む。限定としてではなく例として、方法800は、コンピューティングデバイス内にある解像度評価モジュール(図10のコンピューティングデバイス1000の中にある解像度評価モジュール1060など)により行われると説明される。
【0093】
オペレーション802では、所定のサンプリングパターンに従って、複数の画像チップがデジタル画像から抽出される。例えば、解像度評価モジュール1060は、所定の5点サンプリングパターンを用いて画像チップ304~312を画像302から抽出することができる。オペレーション804では、複数の画像チップの各画像チップにガウス窓が適用され、複数の処理済み画像チップが生成される。例えば、解像度評価モジュール1060は、画像チップ304~312にガウス窓を適用して、図3に示す処理済み画像チップ324~332を生成することができる。
【0094】
オペレーション806では、複数の処理済み画像チップの処理済み画像チップごとに、2DエネルギースペクトルがDFTを用いて決定される。例えば、処理済み画像チップ324~332の2Dエネルギースペクトル334~342がDFTを用いて決定される。オペレーション808では、決定された2Dエネルギースペクトルを用いて、複数の処理済み画像チップの処理済み画像チップごとに、1Dエネルギースペクトルが決定される。例えば、解像度評価モジュール1060は、画像チップ304~312と関連付けられた2Dエネルギースペクトル334~342に対応する1D全エネルギースペクトル344~352を決定する。オペレーション810では、1Dエネルギースペクトルを閾値と比較して、複数の処理済み画像チップの処理済み画像チップごとに画像解像度を取得する。例えば、解像度評価モジュール1060は、1D全エネルギースペクトルの0dB画像エネルギーにおいて閾値354~362を適用し、対応する画像チップ304~312の画像解像度364~372を決定する。オペレーション812では、複数の処理済み画像チップに対して決定された画像解像度のうちの最大画像解像度に基づいて、デジタル画像の映像特性が調整される。例えば、解像度評価モジュール1060は、決定された画像解像度374(画像解像度364~372から最大解像度として選択される)に基づいて、画像302をダウンサンプリングするかまたはニューラルネットワークモデルを再訓練させることができる。
【0095】
図9は、いくつかの例示的な実施形態による、本明細書で説明される様々なデバイスハードウェアと共に用いられ得る、代表的なソフトウェアアーキテクチャ900を示すブロック図である。図9はソフトウェアアーキテクチャ902の単なる非限定的な例にすぎず、本明細書で説明される機能を促進するために、多くの他のアーキテクチャが実装されてもよいことが理解されるであろう。ソフトウェアアーキテクチャ902は、図10のデバイス1000などのハードウェアで実行されてよく、本デバイスは、とりわけ、プロセッサ1005、メモリ1010、ストレージ1015および1020、並びにI/Oコンポーネント1025および1030を含む。
【0096】
代表的なハードウェア層904が示されており、これは、例えば、図10のデバイス1000を表してよい。代表的なハードウェア層904は、関連する実行可能命令908を有する1つまたは複数の処理装置906を含む。実行可能命令908は、ソフトウェアアーキテクチャ902の実行可能命令を表しており、図1図8の方法およびモジュールなどの実装を含む。ハードウェア層904はメモリおよび/またはストレージモジュール910も含み、ここにも実行可能命令908が含まれる。ハードウェア層904は他のハードウェア912も有してよく、これは、ハードウェア層904の任意の他のハードウェア(デバイス1000の一部として示されている他のハードウェアなど)を表している。
【0097】
図9の例示的なアーキテクチャにおいて、ソフトウェアアーキテクチャ902は多数の層として概念化されてよく、各層は特定の機能を提供する。例えば、ソフトウェアアーキテクチャ902には、オペレーティングシステム914、ライブラリ916、フレームワーク/ミドルウェア918、アプリケーション920、プレゼンテーション層944などの層が含まれてよい。機能上、これらの層の中にあるアプリケーション920などの要素は、ソフトウェアスタックを通じてアプリケーションプログラミングインタフェース(API)コール924を呼び出し、APIコール924に応答して、メッセージ926として示されている応答および返された値などを受信してよい。図9に示す各層は代表的な性格のものであり、全てのソフトウェアアーキテクチャ902が全ての層を有するわけではない。例えば、いくつかのモバイル用または専用オペレーティングシステムがフレームワーク/ミドルウェア918を提供しなくてもよく、一方で他のオペレーティングシステムがそのような層を提供してもよい。他のソフトウェアアーキテクチャが追加の層または異なる層を含んでよい。
【0098】
オペレーティングシステム914は、ハードウェアリソースを管理し、共通のサービスを提供してよい。オペレーティングシステム914には、例えば、カーネル928、サービス930、およびドライバ932が含まれてよい。カーネル928は、ハードウェア層とその他のソフトウェア層との間の抽象化層としての役割を果たしてよい。例えば、カーネル928は、メモリ管理、プロセッサ管理(例えば、スケジューリング)、要素管理、ネットワーク構築、およびセキュリティ設定などを担ってよい。サービス930は、その他のソフトウェア層に他の共通サービスを提供してよい。ドライバ932は、基本的なハードウェアの制御またはインタフェース接続を担ってよい。例えば、ドライバ932には、ハードウェア設定に応じて、ディスプレイドライバ、カメラドライバ、Bluetooth(登録商標)ドライバ、フラッシュメモリドライバ、シリアル通信ドライバ(例えば、ユニバーサルシリアルバス(USB)ドライバ)、Wi-Fi(登録商標)ドライバ、オーディオドライバ、および電源管理ドライバなどが含まれてよい。
【0099】
ライブラリ916は、アプリケーション920などの要素および/または層が利用できる共通のインフラストラクチャを提供してよい。ライブラリ916は通常、他のソフトウェアモジュールが基本的なオペレーティングシステム914の機能(例えば、カーネル928、サービス930、および/またはドライバ932)と直接的にインタフェースをとるよりも簡単にタスクを行うことを可能にする機能を提供する。ライブラリ916は、メモリ割り当て関数、文字列操作関数、および数学的関数などといった関数を提供できるシステムライブラリ934(例えば、標準Cライブラリ)を含んでよい。さらに、ライブラリ916には、メディアライブラリ(例えば、MPEG4、H.264、MP3、AAC、AMR、JPG、PNGなどの様々なメディアフォーマットの表示および操作をサポートするライブラリ)、グラフィックスライブラリ(例えば、2Dおよび3Dのグラフィックコンテンツをディスプレイに描画するのに用いることができるOpenGLフレームワーク)、データベースライブラリ(例えば、様々なリレーショナルデータベース機能を提供できるSQLite)、およびウェブライブラリ(例えば、ウェブ閲覧機能を提供できるWebKit)などといったAPIライブラリ936が含まれてよい。ライブラリ916は、多くの他のAPIをアプリケーション920などのソフトウェア要素/モジュールに提供する幅広い種類の他のライブラリ938も含んでよい。
【0100】
フレームワーク/ミドルウェア918(ミドルウェアとも呼ばれることがある)は、アプリケーション920などのソフトウェア要素/モジュールが利用できる高レベルの共通インフラストラクチャを提供してよい。例えば、フレームワーク/ミドルウェア918は、様々なグラフィカルユーザインタフェース(GUI)機能、高レベルのリソース管理、および高レベルの位置情報サービスなどを提供してよい。フレームワーク/ミドルウェア918は、アプリケーション920などのソフトウェア要素/モジュールが利用できる幅広い範囲の他のAPIを提供してよく、その一部は特定のオペレーティングシステム914またはプラットフォームに固有であってよい。
【0101】
アプリケーション920は、内蔵アプリケーション940、サードパーティアプリケーション942、および解像度評価モジュール960を含む。いくつかの態様において、解像度評価モジュール960は、好適な回路、ロジック、インタフェース、および/またはコードを有し、図3に関連して説明した画像解像度評価機能のうちの1つまたは複数を行うように構成されてよい。例えば、解像度評価モジュール960は、処理チェーン314~322のそれぞれに含まれる機能を並行して行うことができる。解像度評価モジュール960がアプリケーション920の一部として示されているとしても、本開示はこの点について限定されることはなく、解像度評価モジュール960はソフトウェアアーキテクチャ902のオペレーティングシステム914の一部であってよい。
【0102】
代表的な内蔵アプリケーション940の例には、限定されないが、連絡先アプリケーション、ブラウザアプリケーション、ブックリーダアプリケーション、位置情報アプリケーション、メディアアプリケーション、メッセージングアプリケーション、および/またはゲームアプリケーションが含まれてよい。サードパーティアプリケーション942には、内蔵アプリケーション940および幅広い種類の他のアプリケーションのうちのいずれかが含まれてよい。具体例において、サードパーティアプリケーション942(例えば、特定のプラットフォームのベンダ以外のエンティティにより、Android(登録商標)またはiOS(登録商標)のソフトウェア開発キット(SDK)を用いて開発されたアプリケーション)は、iOS(登録商標)、Android(登録商標)、またはWindows(登録商標)Phoneなどのモバイル用オペレーティングシステムといったモバイル用オペレーティングシステムで動作するモバイル用ソフトウェアであってよい。この例において、サードパーティアプリケーション942は、オペレーティングシステム914などのモバイル用オペレーティングシステムにより提供されるAPIコール924を呼び出して、本明細書で説明された機能を促進してよい。
【0103】
アプリケーション920は、内蔵のオペレーティングシステム機能(例えば、カーネル928、サービス930、およびドライバ932)、ライブラリ(例えば、システムライブラリ934、APIライブラリ936、および他のライブラリ938)、およびフレームワーク/ミドルウェア918を利用して、本システムのユーザとやり取りするためのユーザインタフェースを作成してよい。あるいは、またはさらに、いくつかのシステムでは、ユーザとのやり取りがプレゼンテーション層944などのプレゼンテーション層を通じて行われてよい。これらのシステムにおいて、アプリケーション/モジュール「ロジック」は、ユーザとやり取りするアプリケーション/モジュールの態様から分離されてよい。
【0104】
いくつかのソフトウェアアーキテクチャは仮想マシンを利用する。図9の例において、これは仮想マシン948で示されている。仮想マシンがソフトウェア環境を作成し、その環境では、アプリケーション/モジュールがハードウェアマシン(例えば、図10のデバイス1000など)で実行しているかのように実行することができる。仮想マシン948はホストオペレーティングシステム(例えば、オペレーティングシステム914)によりホストされ、通常(いつもではないが)仮想マシンモニタ946があり、これにより、仮想マシン948のオペレーションおよびホストオペレーティングシステム(すなわち、オペレーティングシステム914)とのインタフェースが管理される。ソフトウェアアーキテクチャ902は、仮想マシン948の内部で、オペレーティングシステム950、ライブラリ952、フレームワーク/ミドルウェア954、アプリケーション956、および/またはプレゼンテーション層958などを実行する。仮想マシン948の内部で実行するソフトウェアアーキテクチャのこうした層は、対応する前述の層と同じであってもよく、異なっていてもよい。
【0105】
図10は、いくつかの例示的な実施形態による、アルゴリズムを実装し方法を実行するデバイスの回路を示すブロック図である。全ての要素が様々な実施形態で用いられる必要はない。例えば、クライアント、サーバ、およびクラウドベースのネットワークデバイスがそれぞれ、一連の異なる要素を用いても、サーバの場合には、例えば大容量記憶装置を用いてもよい。
【0106】
コンピュータ1000(コンピューティングデバイス1000、コンピュータシステム1000、またはコンピュータ1000とも呼ばれる)の形態で1つの例示的なコンピューティングデバイスが、プロセッサ1005、メモリストレージ1010、着脱式ストレージ1015、非着脱式ストレージ1020、入力インタフェース1025、出力インタフェース1030、および通信インタフェース1035を含んでよく、全てがバス1040で接続されている。例示的なコンピューティングデバイスがコンピュータ1000として示され且つ説明されるが、コンピューティングデバイスは異なる実施形態では異なる形態であってもよい。
【0107】
メモリストレージ1010は、揮発性メモリ1045および不揮発性メモリ1050を含んでもよく、プログラム1055を格納してもよい。コンピューティングデバイス1000は、揮発性メモリ1045、不揮発性メモリ1050、着脱式ストレージ1015、および非着脱式ストレージ1020などの様々なコンピュータ可読媒体を含んでもよく、これらを含むコンピューティング環境にアクセスできてもよい。コンピュータストレージには、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能型読み出し専用メモリ(EPROM)、電気的消去可能プログラム可能型読み出し専用メモリ(EEPROM)、もしくはフラッシュメモリなどのメモリ装置、コンパクトディスク読み出し専用メモリ(CD-ROM)もしくはデジタル多用途ディスク(DVD)などの光ディスクストレージ、磁気カセット、磁気テープ、もしくは磁気ディスクストレージなどの磁気記憶装置、またはコンピュータ可読命令を格納できる任意の他の媒体が含まれる。
【0108】
コンピュータ可読媒体に格納されたコンピュータ可読命令(例えば、メモリ1010に格納されたプログラム1055)が、コンピューティングデバイス1000のプロセッサ1005によって実行可能である。ハードドライブ、CD-ROM、およびRAMが、記憶装置などの非一時的コンピュータ可読媒体を含む製品のいくつかの例である。用語「コンピュータ可読媒体」および「記憶装置」は、搬送波があまりに一時的であるとみなされる限りは、搬送波を含まない。「コンピュータ可読非一時的媒体」は、全ての種類のコンピュータ可読媒体を含み、その中には、磁気記憶媒体、光記憶媒体、フラッシュ式媒体、および固体記憶媒体が含まれる。ソフトウェアはコンピュータにインストールされてもよく、またコンピュータと共に販売されてもよいことを理解されたい。あるいは、本ソフトウェアを取得してコンピュータに読み込んでもよく、ここには、物理媒体または配信システムを通じて取得することが含まれ、例えば、ソフトウェア作成者が所有するサーバ、またはソフトウェア作成者が所有しなくても使用するサーバからソフトウェアを取得することが含まれる。本ソフトウェアは、例えば、インターネットを介して配信するためにサーバに格納されてよい。本明細書で用いられる場合、用語「コンピュータ可読媒体」および「機械可読媒体」はどちらを使ってもよい。
【0109】
プログラム1055は、本明細書で説明した、解像度評価モジュール1060などのモジュールを用いる消費者選好構造を利用してよい。いくつかの態様において、解像度評価モジュール1060は、好適な回路、ロジック、インタフェース、および/またはコードを有し、図3に関連して説明した画像解像度評価機能のうちの1つまたは複数を行うように構成されてよい。例えば、解像度評価モジュール1060は、処理チェーン314~322のそれぞれに含まれる機能、および図8に関連して説明された機能を並行して行うことができる。
【0110】
本明細書で説明されたモジュールのうちのいずれか1つまたは複数が、ハードウェア(例えば、マシンのプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはこのあらゆる好適な組み合わせ)を用いて実現されてよい。さらに、これらのモジュールのうちのいずれか2つまたはそれより多くが1つのモジュールに組み合わされてよく、本明細書で説明された1つのモジュールの機能が、複数のモジュールの間で細分割されてよい。さらに、様々な例示的な実施形態によれば、本明細書で1つのマシン、データベース、またはデバイスに実装されていると説明されたモジュールが、複数のマシン、データベース、またはデバイスに分散されてもよい。
【0111】
いくつかの態様では、モジュール1060、およびプログラム1055の一部である1つまたは複数の他のモジュールが、1つのモジュールとして統合され、統合されたモジュールの対応する機能を行うことができる。
【0112】
いくつかの実施形態が上に詳細に説明されているが、他の修正例もあり得る。例えば、図に示した論理フローは、望ましい結果を実現するために、示された特定の順序も、または連続した順序も必要としない。他の段階が説明されたフローに提供されてもよく、そこから段階が除去されてもよい。また他の要素が説明されたシステムに追加されても、そこから削除されてもよい。他の実施形態が、以下の特許請求の範囲の中に含まれてよい。
【0113】
本開示の段階のうちのいずれか1つまたは全部を参照して上述された処理およびオペレーションを促進する1つまたは複数のコンピュータ実行可能命令を含むソフトウェアが、本開示と一致する1つまたは複数のコンピューティングデバイスにインストールされ、それと共に販売されてよいことをさらに理解されたい。あるいは、本ソフトウェアを取得して1つまたは複数のコンピューティングデバイスに読み込んでもよく、ここには、物理媒体または配信システムを通じて取得することが含まれ、例えば、ソフトウェア作成者が所有するサーバ、またはソフトウェア作成者が所有しなくても使用するサーバからソフトウェアを取得することが含まれる。本ソフトウェアは、例えば、インターネットを介して配信するためにサーバに格納されてよい。
【0114】
また、本開示はその適用において、本明細書に記載されたまたは図面に示された要素の構造および配置に関する詳細に限定されないことは、当業者が理解するであろう。本明細書における実施形態は、他の実施形態が可能であり、様々な方法で実施するまたは実行することが可能である。また、本明細書で用いられる語句および用語は、説明を目的としたものであり、限定とみなされるべきではないことが理解されるであろう。本明細書では、「including(含む)」、「comprising(含む)」、または「having(有する)」、およびその派生語を使用した場合、その後に列挙される項目およびその均等物、並びに追加項目が包含されることを意味している。本明細書では、別途限定されない限り、用語「connected(接続される)」、「coupled(結合される)」、および「mounted(搭載される)」、並びにその派生語は、大まかに用いられ、直接的および間接的な接続、結合、および搭載を包含する。さらに、用語「connected(接続される)」、「coupled(結合される)」、およびその派生語は、物理的または機械的な接続または結合に限定されることはない。さらに、上に、下に、下部、および上部などの用語は相対的であり、説明を補助するのに使用されるが、限定的ではない。
【0115】
示された実施形態に従って使用される、例示的なデバイス、システム、および方法の各要素は、少なくとも部分的に、デジタル電子回路、アナログ電子回路、もしくはコンピュータハードウェア、ファームウェア、ソフトウェア、またはその組み合わせに実装されてよい。こうした要素は、例えば、情報担体または機械可読記憶装置で有形に具現化されたコンピュータプログラム、プログラムコード、またはコンピュータ命令などのコンピュータプログラム製品として、プログラム可能型プロセッサ、コンピュータ、または複数のコンピュータなどのデータ処理装置による実行のために、またはそのオペレーションを制御するために実装されてよい。
【0116】
コンピュータプログラムは、コンパイラ型言語またはインタプリタ型言語を含む任意の形態のプログラミング言語で記述されてよく、コンピューティング環境で用いるのに好適なスタンドアロン型プログラムまたはモジュール、要素、またはサブルーチンなどのユニットとしてといった任意の形態で導入されてよい。コンピュータプログラムは、1つのコンピュータ上で、または1箇所にある、もしくは複数の箇所に分散され且つ通信ネットワークにより相互に接続された複数のコンピュータ上で、実行されるように導入されてよい。また、本明細書で説明された手法を達成するための関数型プログラム、コード、およびコードセグメントが、本明細書で説明された手法に関連する技術分野において熟練したプログラマにより、特許請求の範囲の中に含まれると容易に解釈され得る。コンピュータプログラム、コード、または命令を実行する1つまたは複数のプログラム可能型プロセッサが関数を実行することにより(例えば、入力データを処理する且つ/または出力を生成することにより)、例示的な実施形態と関連付けられた方法の段階が行われてよい。例えば、方法の段階はまた、方法を行うための装置によって行われてよく、本装置は、専用ロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)として実現されてよい。
【0117】
本明細書に開示された実施形態に関連して説明された様々な例示的な論理ブロック、モジュール、および回路は、本明細書で説明された機能を行うように設計された汎用プロセッサ、デジタル信号プロセッサ(DSP)、ASIC、FPGAなどのプログラム可能型論理デバイス、個別のゲートロジックもしくはトランジスタロジック、個別のハードウェア要素、またはそのあらゆる組み合わせで実現されても、行われてもよい。汎用プロセッサはマイクロプロセッサであってよいが、代替案では、プロセッサは任意の従来のプロセッサ、制御装置、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組み合わせ(例えば、DSPとマイクロプロセッサとの組み合わせ)、複数のマイクロプロセッサ、DSPコアと連結した1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実現されてよい。
【0118】
コンピュータプログラムの実行に好適なプロセッサが、例として、汎用および専用のマイクロプロセッサを両方とも、また任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読み出し専用メモリもしくはランダムアクセスメモリ、またはその両方から、命令およびデータを受信することになる。コンピュータの必要な要素が、命令を実行するプロセッサ、並びに命令およびデータを格納する1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを格納する1つまたは複数の大容量記憶装置(例えば、磁気ディスク、光磁気ディスク、または光ディスク)も含む、または、ここからデータを受信するもしくはここにデータを転送するように動作可能に結合される、またはその両方ということになる。コンピュータプログラム命令およびデータを具現化するのに好適な情報担体は、あらゆる形態の不揮発性メモリを例として含み、例えば、電気的プログラム可能型読み出し専用メモリまたはROM(EPROM)、電気的消去可能プログラム可能型ROM(EEPROM)、フラッシュメモリデバイスといった半導体メモリデバイス、およびデータストレージディスク(例えば、磁気ディスク、内蔵ハードディスク、または着脱式ディスク、光磁気ディスク、並びにCD-ROMディスクおよびDVD-ROMディスク)がある。プロセッサおよびメモリは、専用ロジック回路によって補完されても、そこに組み込まれてもよい。
【0119】
当業者であれば、情報および信号が様々な異なる技術および手法のうちのいずれかを用いて表されてよいことを理解している。例えば、上記説明の全体を通じて言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁粉、光線場もしくは光粒子、またはこのあらゆる組み合わせで表されてよい。
【0120】
本明細書で用いられる場合、「機械可読媒体」(または「コンピュータ可読媒体」)は、命令およびデータを一時的または永続的に格納できるデバイスを意味しており、限定されないが、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、バッファメモリ、フラッシュメモリ、光媒体、磁気媒体、キャッシュメモリ、他の種類のストレージ(例えば、消去可能プログラム可能型読み出し専用メモリ(EEPROM))、および/またはそのあらゆる好適な組み合わせを含んでよい。用語「機械可読媒体」は、プロセッサ命令を格納できる1つの媒体または複数の媒体(例えば、集中型もしくは分散型のデータベース、または関連するキャッシュおよびサーバ)を含むと理解されるべきである。用語「機械可読媒体」は、1つまたは複数のプロセッサ1005が実行する命令を格納できる任意の媒体または複数の媒体の組み合わせを含むとも理解されることとし、この命令は、1つまたは複数のプロセッサ1005により実行されると、本明細書で説明した方法のうちのいずれか1つまたは複数を1つまたは複数のプロセッサ1005に実行させることになる。したがって、「機械可読媒体」は、1つの記憶装置またはデバイス、および複数の記憶装置またはデバイスを含む「クラウドベースの」ストレージシステムまたはストレージネットワークを指す。用語「機械可読媒体」は、本明細書で用いられる場合、信号そのものを排除する。
【0121】
さらに、様々な実施形態において個別のものまたは別々のものとして説明され且つ示された手法、システム、サブシステム、および方法が、本開示の範囲から逸脱することなく、他のシステム、モジュール、手法、または方法と組み合わされても、統合されてもよい。互いに結合されているもしくは直接的に結合されている、または通信するものとして示されまたは説明された他の項目が、電気的であれ、機械的であれ、それ以外であれ、何らかのインタフェース、デバイス、または中間要素を介して間接的に結合されても、通信してもよい。変更、置換、および改変に関する他の例が、当業者によって確認可能であり、こうした例は、本明細書で開示した範囲から逸脱することなく作り出すことが可能である。
【0122】
具体的な特徴およびその実施形態を参照して本開示を説明してきたが、本開示の範囲から逸脱することなく、本開示に対して様々な修正および組み合わせを成し得ることは明らかである。例えば、説明されたシステムに他の要素を追加しても、説明されたシステムから他の要素が削除されてもよい。したがって、本明細書および図面は、添付した特許請求の範囲により定められる本開示の単なる説明とみなされるべきであり、本開示の範囲に含まれるありとあらゆる修正例、変形例、組み合わせ、または均等物を包含するものと考えられる。他の態様が、以下の特許請求の範囲の中に含まれてよい。
図1
図2
図3
図4
図5(a)】
図5(b)】
図5(c)】
図5(d)】
図6
図7
図8
図9
図10
【国際調査報告】