(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-09
(45)【発行日】2022-09-20
(54)【発明の名称】サンプルを取得する方法、装置、機器、記憶媒体、及びプログラム
(51)【国際特許分類】
G06F 16/172 20190101AFI20220912BHJP
G06N 3/08 20060101ALI20220912BHJP
G06N 20/00 20190101ALI20220912BHJP
【FI】
G06F16/172
G06N3/08
G06N20/00
(21)【出願番号】P 2020553587
(86)(22)【出願日】2020-06-28
(86)【国際出願番号】 CN2020098576
(87)【国際公開番号】W WO2021082486
(87)【国際公開日】2021-05-06
【審査請求日】2020-10-05
(31)【優先権主張番号】201911053934.0
(32)【優先日】2019-10-31
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】518209698
【氏名又は名称】シェンチェン センスタイム テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】SHENZHEN SENSETIME TECHNOLOGY CO.,LTD
(74)【代理人】
【識別番号】100147485
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100186716
【氏名又は名称】真能 清志
(72)【発明者】
【氏名】ワン リペン
(72)【発明者】
【氏名】タン ウェイハオ
(72)【発明者】
【氏名】イェ ソンガオ
(72)【発明者】
【氏名】ヤン シェンエン
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】国際公開第2018/047225(WO,A1)
【文献】中国特許出願公開第110347538(CN,A)
【文献】中国特許出願公開第109919108(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10-16/188
G06N 3/08
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
サンプルを取得する方法であって、
1つまたは複数のプロセッサにより、データセット内の複数のデータブロックをシャッフルすることであって、各データブロックに複数のサンプルが含まれることと、
前記1つまたは複数のプロセッサにより、シャッフルされた前記複数のデータブロックを複数の処理バッチに分割することと、
前記1つまたは複数のプロセッサにより、前記複数の処理バッチのうちの第1処理バッチの複数のサンプルをシャッフルして、前記第1処理バッチに対応するサンプル取得順番を得ることと、
前記第1処理バッチについて、前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得することとを含む方法。
【請求項2】
サンプルを取得する前に、前記サンプルの属するデータブロックを分散システムから取得してローカルにキャッシュすることをさらに含む請求項1に記載の方法。
【請求項3】
前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得することは、
前記第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得し、各回で1つのサンプル又は同一のデータブロックに属する複数のサンプルを取得することを含む請求項1又は2に記載の方法。
【請求項4】
前記第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得することは、
前記第1処理バッチに対応するサンプル取得順番に従って、取得すべき複数のサンプルのうち、今回取得すべき1つのサンプルである目標サンプルを特定することと、
ローカルキャッシュから前記目標サンプルを読み取ることとを含む請求項3に記載の方法。
【請求項5】
ローカルキャッシュから前記目標サンプルを読み取った後に、ローカルキャッシュから、前記取得すべき複数のサンプルのうちの、前記目標サンプルと同一のデータブロックに属するサンプルを読み取ることをさらに含む請求項4に記載の方法。
【請求項6】
ローカルキャッシュから前記目標サンプルを読み取ることは、
前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックを検索し、前記目標データブロックから前記目標サンプルを読み取ることを含む請求項4又は5に記載の方法。
【請求項7】
ローカルキャッシュから前記目標サンプルを読み取ることは、
前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックが見つからない場合、前記目標データブロックを分散システムから読み取ってローカルにキャッシュすることと、
ローカルキャッシュ内の前記目標データブロックから前記目標サンプルを読み取ることとを含む請求項4~6のいずれか1項に記載の方法。
【請求項8】
ローカルキャッシュ内のデータブロックの数量が閾値に達すると、ローカルキャッシュをクリアすることをさらに含む請求項2、4~7のいずれか1項に記載の方法。
【請求項9】
ローカルキャッシュをクリアすることは、
ローカルキャッシュ内のデータブロックがアクセスされた時間に基づいて、前記ローカルキャッシュ内の少なくとも1つのデータブロックを削除することであって、前記少なくとも1つのデータブロックが最後にアクセスされた時間は、前記ローカルキャッシュ内の削除されるデータブロック以外のデータブロックが最後にアクセスされた時間よりも古いことを含む請求項8に記載の方法。
【請求項10】
各サンプルの識別子、各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報をローカルに保存することをさらに含む請求項1~9のいずれか1項に記載の方法。
【請求項11】
前記各サンプルの識別子、前記各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報は、マッピング関係として記憶されている請求項10に記載の方法。
【請求項12】
前記データセット内の複数のデータブロックは分散システムに記憶されており、前記サンプルは画像を含む請求項1~11のいずれか1項に記載の方法。
【請求項13】
サンプルを取得する装置であって、
データセット内の複数のデータブロックをシャッフルするための第1シャッフルモジュールであって、各データブロックに複数のサンプルが含まれる第1シャッフルモジュールと、
前記第1シャッフルモジュールによってシャッフルされた前記複数のデータブロックを複数の処理バッチに分割するための分割モジュールと、
前記分割モジュールによって分割された複数の処理バッチのうちの第1処理バッチの複数のサンプルをシャッフルして、前記第1処理バッチに対応するサンプル取得順番を得るための第2シャッフルモジュールと、
前記第1処理バッチについて、前記第2シャッフルモジュールによって得られた前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得するための取得モジュールとを含む装置。
【請求項14】
プロセッサと、
プロセッサにより実行可能なコマンドを記憶するためのメモリと、を含み、
前記プロセッサは、前記メモリに記憶されているコマンドを呼び出して請求項1~12のいずれか1項に記載の方法を実行するように構成される電子機器。
【請求項15】
コンピュータプログラムコマンドが記憶されているコンピュータ読取可能記憶媒体であって、前記コンピュータプログラムコマンドは、プロセッサにより実行されると、請求項1~12のいずれか1項に記載の方法を実現させるコンピュータ読取可能記憶媒体。
【請求項16】
コンピュータ読み取り可能コードを含むコンピュータプログラムであって、前記コンピュータ読み取り可能コードは、機器において実行されると、前記機器のプロセッサに請求項1から12のいずれか1項に記載のサンプルを取得する方法を実現するためのコマンドを実行させるコンピュータプログラム。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
本願は、2019年10月31日に中国国家知識産権局に提出された、出願番号201911053934.0、発明の名称「サンプルを取得する方法及び装置、電子機器、並びに記憶媒体」の中国特許出願の優先権を主張し、その内容の全てが参照によって本願に組み込まれる。
【技術分野】
【0002】
本開示は、コンピュータ技術分野に関し、特に、サンプルを取得する方法、装置、機器、記憶媒体、及びプログラムに関する。
【背景技術】
【0003】
ディープラーニングのモデルトレーニングには、毎回サンプルを同じ順番に使用すると、トレーニングされたモデルがオーバーフィットされたものになってしまう。したがって、毎回のトレーニングの前に、データセット内のサンプルの順番をシャッフルする必要がある。
【発明の概要】
【0004】
本開示は、サンプルを取得する方法、装置、機器、記憶媒体、及びプログラムを提供する。
【0005】
本開示の第1方面によれば、サンプルを取得する方法であって、データセット内の複数のデータブロックをシャッフルすることであって、各データブロックに複数のサンプルが含まれることと、シャッフルされた前記複数のデータブロックを複数の処理バッチに分割することと、前記複数の処理バッチのうちの第1処理バッチの複数のサンプルをシャッフルして、前記第1処理バッチに対応するサンプル取得順番を得ることと、前記第1処理バッチについて、前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得することとを含む方法を提供する。
【0006】
可能な一実現形態では、第1方面において、前記方法は、サンプルを取得する前に、前記サンプルの属するデータブロックを分散システムから取得してローカルにキャッシュすることをさらに含む。
【0007】
このようにして、分散システムからのデータブロックの取得回数を減らすことができ、データアクセスのオーバーヘッドが低減され、データの読み取り効率が向上される。
【0008】
可能な一実現形態では、第1方面において、前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得することは、前記第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得し、各回で1つのサンプル又は同一のデータブロックに属する複数のサンプルを取得することを含む。
【0009】
このようにして、1回に同一のデータブロックから同一のデータブロックに属する複数のサンプルが取得されて、データの取得効率が向上される。
【0010】
可能な一実現形態では、第1方面において、前記第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得することは、前記第1処理バッチに対応するサンプル取得順番に従って、取得すべき複数のサンプルのうち、今回取得すべき1つのサンプルである目標サンプルを特定することと、ローカルキャッシュから前記目標サンプルを読み取ることとを含む。
【0011】
このようにして、分散システムからのデータブロックの取得回数を減らすことができ、データアクセスのオーバーヘッドが低減され、データの読み取り効率が向上される。
【0012】
可能な一実現形態では、第1方面において、前記方法は、ローカルキャッシュから前記目標サンプルを読み取った後に、ローカルキャッシュから、前記取得すべき複数のサンプルのうちの、前記目標サンプルと同一のデータブロックに属するサンプルを読み取ることをさらに含む。
【0013】
このようにして、1回に同一のデータブロックから同一のデータブロックに属する複数のサンプルが取得されて、データの取得効率が向上される。
【0014】
可能な一実現形態では、第1方面において、ローカルキャッシュから前記目標サンプルを読み取ることは、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックを検索し、前記目標データブロックから前記目標サンプルを読み取ることを含む。
【0015】
目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、目標サンプルに対応する目標データブロックを速やかに見つけることができ、データの取得効率が向上される。
【0016】
可能な一実現形態では、第1方面において、ローカルキャッシュから前記目標サンプルを読み取ることは、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックが見つからない場合、前記目標データブロックを分散システムから読み取ってローカルにキャッシュすることと、ローカルキャッシュ内の前記目標データブロックから前記目標サンプルを読み取ることとを含む。
【0017】
前記目標データブロックを分散システムから読み取ってローカルにキャッシュすることによって、分散システムからのデータブロックの取得回数を減らすことができ、データアクセスのオーバーヘッドが低減され、データの読み取り効率が向上される。
【0018】
可能な一実現形態では、第1方面において、前記方法は、ローカルキャッシュ内のデータブロックの数量が閾値に達すると、ローカルキャッシュをクリアすることをさらに含む。
【0019】
このようにして、後に取得されたデータブロックを容易にキャッシュすることができる。
【0020】
可能な一実現形態では、第1方面において、ローカルキャッシュをクリアすることは、ローカルキャッシュ内のデータブロックがアクセスされた時間に基づいて、前記ローカルキャッシュ内の少なくとも1つのデータブロックを削除することであって、前記少なくとも1つのデータブロックが最後にアクセスされた時間は、前記ローカルキャッシュ内の削除されるデータブロック以外のデータブロックが最後にアクセスされた時間よりも古いことを含む。
【0021】
このようにして、データブロックの利用率を向上させることができる。
【0022】
可能な一実現形態では、第1方面において、前記方法は、各サンプルの識別子、各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報をローカルに保存することをさらに含む。
【0023】
このようにして、ローカルに保存されている情報に基づいてキャッシュから目標サンプルを読み取ることができ、分散システムが不要になり、データの読み取り効率が向上される。
【0024】
可能な一実現形態では、第1方面において、前記各サンプルの識別子、前記各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報は、マッピング関係として記憶されている。
【0025】
マッピング関係として記憶することによって、検索速度を向上させることができる。
【0026】
可能な一実現形態では、第1方面において、前記データセット内の複数のデータブロックは分散システムに記憶されており、前記サンプルは画像を含む。
【0027】
本開示の第2方面によれば、サンプルを取得する装置であって、データセット内の複数のデータブロックをシャッフルするための第1シャッフルモジュールであって、各データブロックに複数のサンプルが含まれる第1シャッフルモジュールと、前記第1シャッフルモジュールによってシャッフルされた前記複数のデータブロックを複数の処理バッチに分割するための分割モジュールと、前記分割モジュールによって分割された複数の処理バッチのうちの第1処理バッチの複数のサンプルをシャッフルして、前記第1処理バッチに対応するサンプル取得順番を得るための第2シャッフルモジュールと、前記第1処理バッチについて、前記第2シャッフルモジュールによって得られた前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得するための取得モジュールとを含む装置を提供する。
【0028】
可能な一実現形態では、第2方面において、前記装置は、サンプルが取得される前に、前記サンプルの属するデータブロックを分散システムから取得してローカルにキャッシュするためのキャッシュモジュールをさらに含む。
【0029】
可能な一実現形態では、第2方面において、前記取得モジュールは、さらに、前記第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得し、各回で1つのサンプル又は同一のデータブロックに属する複数のサンプルを取得することに用いられる。
【0030】
可能な一実現形態では、第2方面において、前記取得モジュールは、さらに、前記第1処理バッチに対応するサンプル取得順番に従って、取得すべき複数のサンプルのうち、今回取得すべき1つのサンプルである目標サンプルを特定することと、ローカルキャッシュから前記目標サンプルを読み取ることとに用いられる。
【0031】
可能な一実現形態では、第2方面において、前記装置は、ローカルキャッシュから前記目標サンプルが読み取られた後に、ローカルキャッシュから、前記取得すべき複数のサンプルのうちの、前記目標サンプルと同一のデータブロックに属するサンプルを読み取るための読み取りモジュールをさらに含む。
【0032】
可能な一実現形態では、第2方面において、前記取得モジュールは、さらに、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックを検索し、前記目標データブロックから前記目標サンプルを読み取ることに用いられる。
【0033】
可能な一実現形態では、第2方面において、前記取得モジュールは、さらに、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックが見つからない場合、前記目標データブロックを分散システムから読み取ってローカルにキャッシュすることと、ローカルキャッシュ内の前記目標データブロックから前記目標サンプルを読み取ることとに用いられる。
【0034】
可能な一実現形態では、第2方面において、前記装置は、ローカルキャッシュ内のデータブロックの数量が閾値に達すると、ローカルキャッシュをクリアするためのクリアモジュールをさらに含む。
【0035】
可能な一実現形態では、第2方面において、前記クリアモジュールは、さらに、ローカルキャッシュ内のデータブロックがアクセスされた時間に基づいて、前記ローカルキャッシュ内の少なくとも1つのデータブロックを削除することであって、前記少なくとも1つのデータブロックが最後にアクセスされた時間は、前記ローカルキャッシュ内の削除されるデータブロック以外のデータブロックが最後にアクセスされた時間よりも古いことに用いられる。
【0036】
可能な一実現形態では、第2方面において、前記装置は、各サンプルの識別子、各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報をローカルに保存するための保存モジュールをさらに含む。
【0037】
可能な一実現形態では、第2方面において、前記各サンプルの識別子、前記各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報は、マッピング関係として記憶されている。
【0038】
可能な一実現形態では、第2方面において、前記データセット内の複数のデータブロックは分散システムに記憶されており、前記サンプルは画像を含む。
【0039】
本開示の第3方面によれば、プロセッサと、プロセッサにより実行可能なコマンドを記憶するためのメモリと、を含み、前記プロセッサは、前記メモリに記憶されているコマンドを呼び出して上述方法を実行するように構成される電子機器を提供する。
【0040】
本開示の第4方面によれば、コンピュータプログラムコマンドが記憶されているコンピュータ読取可能記憶媒体であって、前記コンピュータプログラムコマンドは、プロセッサにより実行されると、上述方法を実現させるコンピュータ読取可能記憶媒体を提供する。
【0041】
本開示の第5方面によれば、コンピュータ読み取り可能コードを含むコンピュータプログラムであって、前記コンピュータ読み取り可能コードは、機器において実行されると、前記機器のプロセッサに上述方法を実現するためのコマンドを実行させるコンピュータプログラムを提供する。
【0042】
本開示の実施例において、まず、データセット内のデータブロックをシャッフルし、シャッフルされたデータブロックを複数の処理バッチに分割し、次に、1つの処理バッチの全てのサンプルをシャッフルして、当該処理バッチに対応するサンプル取得順番を得、さらに、当該処理バッチのサンプルを取得する。データブロック及び同一の処理バッチのサンプルをシャッフルすることによって、1つの処理バッチのサンプルはランダムになる。また、データブロック単位で処理バッチの分割を行うことによって、1つの処理バッチのサンプルを限られた数のデータブロックに属させ、1つの処理バッチにおいて近接するサンプルが1つのデータブロックに出現する確率が高くなり、サンプル取得中のデータブロックのヒット確率が向上され、サンプルの取得効率が向上される。ただし、近接するサンプルとは、サンプル取得順番が隣接する2つのサンプル、または、順番の間隔が小さい2つのサンプルであってもよい。
【0043】
以上の一般説明および以下の詳細説明は、本開示を限定するのではなく、単なる例示的および解釈的なものであることを理解されたい。以下、図面を参照しながら例示的な実施例について詳細に説明することにより、本開示の他の特徴及び方面は明瞭になる。
【図面の簡単な説明】
【0044】
明細書の一部として組み込まれた図面は、本開示に合致する実施例を示し、更に明細書と共に本開示の技術的手段を説明するために用いられる。
【0045】
【
図1】
図1は本開示の実施例によるサンプルを取得する方法のフローチャートを示す。
【
図2】
図2は本開示の実施例によるサンプルを取得する方法の1つの例示的なフローチャートを示す。
【
図3】
図3は本開示の実施例による目標サンプルを取得するフローの模式図を示す。
【
図4】
図4は本開示の実施例によるローカルキャッシュをクリアするプロセスの模式図を示す。
【
図5】
図5は本開示の実施例によるサンプルを取得する装置のブロック図を示す。
【
図6】
図6は本開示の実施例による電子機器800のブロック図を示す。
【
図7】
図7は本開示の実施例による電子機器1900のブロック図を示す。
【発明を実施するための形態】
【0046】
以下に図面を参照しながら本開示の様々な例示的実施例、特徴および方面を詳細に説明する。図面において、同じ符号が同じまたは類似する機能の要素を表す。図面において実施例の様々な方面を示したが、特に断らない限り、比例に従って図面を作る必要がない。
【0047】
ここの用語「例示的」とは、「例、実施例として用いられることまたは説明的なもの」を意味する。ここで「例示的」に説明されるいかなる実施例も他の実施例より好ましい又は優れるものであると理解すべきではない。
【0048】
本明細書において、用語の「及び/又は」は、関連対象の関連関係を記述するためのものに過ぎず、3つの関係が存在可能であることを示し、例えば、A及び/又はBは、Aのみが存在し、AとBが同時に存在し、Bのみが存在するという3つの場合を示すことができる。また、本明細書において、用語の「少なくとも1つ」は複数のうちのいずれか1つ又は複数のうちの少なくとも2つの任意の組合を示し、例えば、A、B及びCのうちの少なくとも1つを含むということは、A、B及びCから構成される集合から選択されたいずれか1つ又は複数の要素を含むことを示すことができる。
【0049】
また、本開示をより効果的に説明するために、以下の具体的な実施形態において様々な具体的な詳細を示す。当業者であれば、何らかの具体的な詳細がなくても、本開示が同様に実施できると理解すべきである。いくつかの実施例では、本開示の趣旨を強調するために、当業者に既知の方法、手段、要素および回路について、詳細な説明を行わない。
【0050】
ディープラーニングにおいて、一般には、多数のサンプルを用いてニューラルネットワークのトレーニングを行う必要がある。データセット内のサンプルは、データブロック単位でストレージシステムへのアクセスが行われ、即ち、ストレージシステムからサンプルを取得する場合、まずストレージシステムからサンプルの属するデータブロックを取得し、次に当該データブロックからサンプルを取得する。
【0051】
複数のサンプルが同時に要求される場合、複数のサンプルの読み取りについて、ブロックごとに行うことができる。例えば、1000個のサンプルの取得を一括要求すると仮定する。当該1000個のサンプルのうち10個のサンプルが1つのデータブロックに属する場合、毎回データブロックを取得するように読み取りを10回行い、10回に分けて当該10個のサンプルを読み取るのではなく、当該データブロックを取得した後、当該データブロックから10個のサンプルを一括読み取ることができる。
【0052】
関連技術では、データセット内の全てのサンプルをシャッフルし、シャッフル後の順番に従って、サンプルを複数の処理バッチに分割する。次に、各処理バッチ毎に、処理バッチにおけるサンプルの順番に従ってサンプルを取得する。このようにして得られた各処理バッチのいずれもサンプルがランダムとなるため、モデルのオーバーフィットの問題が解消される。しかしながら、1つの処理バッチのサンプルは任意のデータブロックに属し得る。したがって、任意の処理バッチのサンプルの取得中に、近接して取得されるサンプルは同一のデータブロックに属する確率が比較的小さいで、取得された1つのデータブロックから、サンプルが1つのみ、又は特別な場合にいくつか取得される。これは、リソースが無駄になり、サンプルの取得速度が低下し、サンプルの取得効率が低いことを招く。
【0053】
図1は、本開示の実施例によるサンプルを取得する方法のフローチャートを示す。
図1に示すように、当該方法は、以下のステップを含んでもよい。
【0054】
ステップS11、データセット内の複数のデータブロックをシャッフルする。ただし、各データブロックに複数のサンプルが含まれる。
【0055】
ステップS12、シャッフルされた前記複数のデータブロックを複数の処理バッチに分割する。
【0056】
ステップS13、前記複数の処理バッチのうちの第1処理バッチの複数のサンプルをそれぞれシャッフルして、前記第1処理バッチに対応するサンプル取得順番を得る。
【0057】
ステップS14、前記第1処理バッチについて、前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得する。
【0058】
ここで、第1処理バッチは、複数の処理バッチのうちの一部の処理バッチ又は各処理バッチである。本開示において、第1処理バッチは複数の処理バッチのうちの各処理バッチである場合を例として説明するが、これに限定されない。本開示による技術的手段を一部の処理バッチに適用する場合も、本開示を参照することができ、詳細は再度説明しない。
【0059】
本開示の実施例において、データブロック及び同一の処理バッチのサンプルをシャッフルすることによって、1つの処理バッチのサンプルはランダムになる。また、データブロック単位で処理バッチの分割を行うことによって、1つの処理バッチのサンプルを限られた数のデータブロックに属させ、1つの処理バッチにおいて近接するサンプルが1つのデータブロックに出現する確率が高くなり、サンプル取得中のデータブロックのヒット確率が向上され、サンプルの取得効率が向上される。
【0060】
可能な一実現形態では、サンプルを取得する方法は、ユーザ側装置(User Equipment、UE)、携帯機器、ユーザ端末、端末、セルラーホン、コードレス電話、、パーソナル・デジタル・アシスタント(Personal Digital Assistant、PDA)、手持ちの機器、計算装置、車載装置、ウエアラブル装置等の端末装置、または、サーバなどの電子機器により実行されてもよく、プロセッサによりメモリに記憶されているコンピュータ読取可能なコマンドを呼び出すことで実現されてもよく、または、サーバによって実行されてもよい。
【0061】
ステップS11において、データセット(Data Set)は、ニューラルネットワークのトレーニングに使用される全てのサンプルの集合、又はニューラルネットワークのトレーニング結果の検証に使用される全てのサンプルの集合等を表すことができる。データセットに含まれるサンプルは異なるデータブロック(Block)にあり、つまり、データセットは複数のデータブロックを含み、各データブロックは複数のサンプルを含む。可能な一実現形態では、データセット内の複数のデータブロックは分散システムに記憶されてもよい。データセット内のサンプルは、ファイルブロック単位で分散システムへのアクセスが行われてもよい。このようにして、同一の期間内に複数のデータブロックを取得し、即ち並行してデータブロックを取得することができ、サンプルの取得速度の向上に寄与する。可能な一実現形態では、サンプルは画像(例えば、顔画像、人体画像など)等であってもよい。サンプルが画像である場合を例とする場合、本開示の実施例では、画像のフォーマット(jpg、png等)、タイプ(例えば、グレースケール画像、RGB(Red-Green-Blue、赤緑青)画像等)、解像度等に関して限定しない。そのうち、解像度はモデルのトレーニング要求又は検証精度等の要因によって決定されてもよい。
【0062】
データセット内の複数のデータブロックをシャッフルするとは、データブロックを最小単位としてシャッフル(shuffle)処理を行うことである。シャッフルされるのは、データブロックの記憶される順番ではなく、データブロックの論理的順番である。データセット内の複数のデータブロックをシャッフルして、シャッフルされたデータブロックの順番を得ることができる。データセット内の複数のデータブロックをシャッフルする時に、各データブロックに含まれるサンプルの順番について、そのまま維持してもよいし、シャッフルしてもよく、本開示でこれを限定しない。
【0063】
図2は、本開示の実施例によるサンプルを取得する方法の1つの例示的なフローチャートを示す。
図2に示すように、データセットに1000個のデータブロック(データブロック1、データブロック2、データブロック3、…、および、データブロック1000)が含まれる場合を例とし、各データブロックは複数のサンプルを含む。ここで、データブロック1000を例とすると、データブロック1000はn個のサンプル(サンプル1、サンプル2、…、およびサンプルn、nは正の整数である)を含む。
図2に示すデータセット内の1000個のデータブロックをシャッフルして、シャッフルされたデータセット内のデータブロックの論理的順番を得ることができる。
図2に示すように、データセット内の各データブロックの論理的順番は、データブロック754、データブロック631、データブロック3、…、データブロック861、データブロック9、データブロック517の順である。
【0064】
ステップS12において、シャッフルされた複数のデータブロックを複数の処理バッチ(batch)に分割することができる。分割が完了した後、各処理バッチは少なくとも1つのデータブロックを含む。
【0065】
本開示の実施例において、1つの処理バッチのサンプルは、ニューラルネットワークのトレーニング又はニューラルネットワークの検証等に使用されることができる。ニューラルネットワークのトレーニングに適用される場合を例とすると、各処理バッチはニューラルネットワークの1回のトレーニングに使用されるサンプルを含んでもよく、即ち各処理バッチを1つのトレーニングセットとしてもよい。これに応じて、各処理バッチ内のデータブロックの数量を、ニューラルネットワークの1回のトレーニングに使用されるサンプルの数量及び/又は各データブロックに含まれるサンプルの数量に基づいて決定することができる。
【0066】
例えば、各データブロックに含まれるサンプルの数量が同じである場合に、各処理バッチ内のデータブロックの数量は、ニューラルネットワークの1回のトレーニングに使用されるサンプルの数量と各データブロックに含まれるサンプルの数量との比値としてもよい。一例として、必要に応じて各処理バッチ内のデータブロックの数量を設定してもよいし、まず必要に応じてニューラルネットワークに使用される1つのトレーニングバッチのサンプルの数量を設定し、次にニューラルネットワークの1回のトレーニングに使用されるサンプルの数量及び各データブロックに含まれるサンプルの数量に基づいて、各処理バッチ内のデータブロックの数量を決定してもよい。本開示はこれに関して限定しない。
【0067】
実際の記憶プロセスでは、異なるデータブロックに含まれるサンプルの数量は、同じでもよいし異なってもよいことに注意されたい。したがって、各処理バッチに含まれるデータブロックの数量の決定には、少なくとも一部の処理バッチに対応するデータブロックの数量を、同一であるか又は異なるように設定してもよい。本開示の実施例において、処理バッチの分割方法、データブロックに格納可能なサンプルの数量等に関して限定しない。
【0068】
一実現形態において、各処理バッチに含まれるデータブロックの数量が同じであり、且つ、各データブロックに含まれるサンプルの数量が同じである場合を例とすると、処理バッチの数量は、データセット内のデータブロックの総数量と各処理バッチ内のデータブロックの数量(batch size)に基づいて決定するようにしてもよい。例えば、処理バッチの数量は、データセット内のデータブロックの総数量と各処理バッチ内のデータブロックの数量との比値としてもよい。
図2を参照すると、データセット内のデータブロックの総数量は1000であり、各処理バッチに含まれるデータブロックの数量は100である場合、処理バッチの数量は1000/100=10となる。これは、各処理バッチは100個のデータブロックを含み、シャッフルされた1000個のデータブロックは10個の処理バッチに分割され得ることを意味する。
図2に処理バッチ10(即ち10番目の処理バッチ)に含まれる全てのデータブロックの一例が示される。ここで、処理バッチ10は、データブロック156、データブロック278、データブロック3、…、データブロック861、データブロック9、データブロック517を含む。
【0069】
ステップS13において、前記複数の処理バッチのうちの第1処理バッチの複数のサンプルをシャッフルして、前記第1処理バッチに対応するサンプル取得順番を得ることができ、即ち第1処理バッチに対し、サンプルを最小単位としてシャッフル(shuffle)処理を行うことができる。
【0070】
図2を参照すると、処理バッチ10が第1処理バッチである場合を例とすると、処理バッチ10に含まれる全てのデータブロック(データブロック156、データブロック278、データブロック3、…、データブロック861、データブロック9、データブロック517)の全てのサンプルをシャッフルして、処理バッチ10に対応するサンプル取得順番を得る。
【0071】
ステップS11とステップS12によって、読み取られるデータブロックがランダムであることが保証された場合、同一の処理バッチ(例えば、第1処理バッチ)によって指示される取得すべきサンプルが限られた数のデータブロック内に限定される。また、ステップS13によって、1つの処理バッチ(例えば、第1処理バッチ)のサンプルの取得順番がランダムになる。つまり、ステップS11~ステップS13によって、1つの処理バッチ(例えば、第1処理バッチ)のサンプルの取得順番がランダムになり、また、1つの処理バッチ(例えば、第1処理バッチ)のサンプルを限られた数のデータブロックに属させて、1つの処理バッチ(例えば、第1処理バッチ)において近接するサンプルが1つのデータブロックに出現する確率が向上される。
【0072】
ステップS14において、第1処理バッチについて、第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得する。例えば、
図2に示すように、処理バッチ10について(即ち処理バッチ10のサンプルを使用してニューラルネットワークをトレーニングする場合)、処理バッチ10に対応するサンプル取得順番に基づいて、処理バッチ10のサンプルを取得してもよい。
【0073】
可能な一実現形態では、前記方法は、サンプルを取得する前に、前記サンプルの属するデータブロックを分散システムから取得してローカルにキャッシュすることをさらに含む。
【0074】
本開示の実施例において、例えば高速なキャッシュ(cache)のようなデータを記憶するためのキャッシュエリア、即ちローカルキャッシュをローカルに設定し、このローカルキャッシュに分散システムから取得されたデータブロックを記憶するようにしてもよい。
【0075】
1つのデータブロックのサンプルが同一の処理バッチに属するため、任意の処理バッチについて、同一のデータブロックから当該処理バッチの複数のサンプルを取得できる。したがって、分散システムから取得されたデータブロックをローカルにキャッシュした後、ローカルキャッシュから複数のサンプルを取得でき、分散システムからの同一のデータブロックの取得回数を減らすことができ、データアクセスのオーバーヘッドが低減され、データの読み取り効率が向上される。
【0076】
可能な一実現形態では、第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得することは、前記第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得し、各回で1つのサンプル又は同一のデータブロックに属する複数のサンプルを取得することを含むようにしてもよい。
【0077】
本開示の実施例において、任意の処理バッチについて、同一のデータブロックから当該処理バッチの複数のサンプルを取得できること、即ち、同一のデータブロックから第1処理バッチの複数のサンプルを取得できることが考えられて、サンプル取得順番に従って、同一のデータブロックから第1処理バッチに属する複数のサンプルを一括取得することができ、第1処理バッチのサンプルの取得効率が向上される。
【0078】
可能な一実現形態では、第1処理バッチの規模が大きいこと、即ち当該処理バッチについて取得すべきサンプルの数量が多いことが考えられると、第1処理バッチに対応するサンプル取得順番に従って、取得すべきサンプルをグループ化し、グループ単位でグループごとのサンプルの取得を実現し、即ち、サンプルを1回または複数回に分けて取得し、各回で1グループのサンプルを取得し(1グループのサンプルは1つ又は複数のサンプルを含んでもよい)、1回で複数のサンプルを取得する場合に、1回で取得される複数のサンプルを同一のデータブロックに属させるようにしてもよい。
【0079】
例えば、第1処理バッチは1000個のサンプルを含み、当該1000個のサンプルをサンプル取得順番に従って10のグループに分けてもよい。第1グループはサンプル取得順番の1番目から100番目の取得すべきサンプルであり、第2グループはサンプル取得順番の101番目から200番目の取得すべきサンプルであり、…、第10グループはサンプル取得順番の901番目から1000番目の取得すべきサンプルである。
【0080】
1つの処理バッチのサンプルが限られた数のデータブロックに属するため、各グループの取得すべきサンプル(処理バッチにおいて近接するサンプル)が同一のデータブロックに属する確率が高い。1つのデータブロックが取得された後、当該データブロックから同一のグループの複数のサンプルが読み取られる確率が高い。データブロックを1回に読み取ることで、取得すべきサンプルが複数得られ、データ読み取り効率が向上される。また、1つの処理バッチのサンプルのグループ化処理により、複数のグループのサンプルの読み取りが並行して実現されるため、データの読み取り効率が一層向上される。
【0081】
可能な一実現形態では、第1処理バッチの規模が小さく、即ち第1処理バッチのサンプルの数量が少ない場合に、グループ化を行わず、直接にサンプルを1回または複数回に分けて取得し、各回で1つ又は複数のサンプルを取得し、1回で複数のサンプルを取得する場合に、取得される複数のサンプルを同一のデータブロックに属させるようにしてもよい。
【0082】
例えば、第1処理バッチが100個のサンプルを含む場合、グループ化処理を行わなくてもよい。当該100個のサンプルが2つのデータブロックに属する場合に、同一のデータブロックを繰り返し取得し、当該データブロックの複数回取得中に必要なサンプルをそれぞれ読み取ることなく、1つのデータブロックを取得した後、当該データブロックから50個のサンプルを一括取得することができる。このようにして、データブロックの取得回数を効果的に減らすことができ、データの読み取り効率が向上される。
【0083】
処理バッチの規模の大きさの判断方法は、処理バッチにかかるサンプルの数量の他に、処理バッチにかかるサンプルに含まれる情報量を考えることができることに注意されたい。例えば、処理プロセスが複雑で、情報量が多いサンプルは、処理バッチにかかるサンプルの数量が少なくても、処理バッチの規模が大きいと判断されてもよい。本開示の実施例において、処理バッチの規模の大きさの判断方法は限定されず、上記の例を含んでもよいが、それに限定されない。
【0084】
サンプルの数量によって処理バッチの規模の大きさを判断する方法を例とすると、処理バッチのサンプルの数量を所定の閾値と比較し、サンプルの数量が所定の閾値よりも大きい場合に処理バッチの規模が大きいと決定し、サンプルの数量が所定の閾値以下である場合に処理バッチの規模が小さいと決定するようにしてもよい。ここで、所定の閾値は、あらかじめ設定されてもよく、具体的には、機器のデータ処理能力、リソースの使用状況等の要因に基づいて、例えば100に設定されてもよい。本開示の実施例は所定の閾値に関して限定しない。
【0085】
本開示の実施例において、同一のデータブロックに属するサンプルの取得を一括行うのではなく、各回で1つのサンプルしか取得しなくてもよいことに注意されたい。データブロックがローカルにキャッシュされているため、後に当該データブロックからサンプルを取得する場合、分散システムから再度データブロックを取得せず、ローカルキャッシュからサンプルを直接取得すればよい。したがって、各回で1つのサンプルしか取得されない場合も、データの読み取り効率が向上される。
【0086】
可能な一実現形態では、第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得することは、第1処理バッチに対応するサンプル取得順番に従って、取得すべき複数のサンプルのうち、今回取得すべき1つのサンプルである目標サンプルを特定することと、ローカルキャッシュから前記目標サンプルを読み取ることとを含むようにしてもよい。
【0087】
目標サンプルは、第1処理バッチに対応するサンプル取得順番に従って特定された、取得すべき1つのサンプルを表すことができる。本開示の実施例において、取得すべき1つの目標サンプルが特定された後、ローカルキャッシュから目標サンプルを読み取ってもよい。第1処理バッチ内の異なるサンプルが1つのデータブロックに出現する確率が高いため、目標サンプルを取得する時、ローカルキャッシュにおいて当該目標サンプルに対応するデータブロックが見つかる確率が高く、サンプルの取得効率が向上される。
【0088】
可能な一実現形態では、前記方法は、ローカルキャッシュから前記目標サンプルを読み取った後に、ローカルキャッシュから、前記取得すべき複数のサンプルのうちの、前記目標サンプルと同一のデータブロックに属するサンプルを読み取ることをさらに含む。このようにして、データの読み取り効率が向上される。
【0089】
1つの目標サンプルが取得されたことは、ローカルキャッシュに当該目標サンプルの属するデータブロックが存在することを意味する。当該データブロックに属する全ての取得すべきサンプルを一括取得することにより、アクセスリソースが一層節約され、サンプルの取得効率が向上される。
【0090】
例えば、取得すべき目標サンプルは順に、データブロック156のサンプル1、データブロック861のサンプル10、データブロック9のサンプルn、データブロック156のサンプル50、データブロック278のサンプル2、データブロック156のサンプル10であると仮定する。本開示の実施例において、データブロック156のサンプル1(この場合、データブロック156のサンプル1は目標サンプルとなる)が取得された後、目標サンプルに対応するデータブロック156から、サンプル50とサンプル10を取得してもよい。このようにして、後にデータブロック156からデータを取得する必要がなく、データブロック156の取得の必要がなくなり、アクセスリソースへが節約され、サンプルの取得効率が向上される。
【0091】
1つのデータブロックから複数のサンプルが一括取得される場合に、当該複数のサンプルの処理バッチでの論理的順番が当該処理バッチに対応するサンプル取得順番と一致することに注意されたい。このようにして、処理バッチにおいてサンプルがランダムとなるように保持される。
【0092】
目標サンプルを取得するプロセスで、まずローカルキャッシュにおいて当該目標サンプルに対応するデータブロックが存在するかどうかを検索するようにしてもよい。ローカルキャッシュに当該目標サンプルに対応するデータブロックが存在する場合、ローカルキャッシュ内の当該目標サンプルに対応するデータブロックから目標サンプルを直接取得する。ローカルキャッシュに当該目標サンプルに対応するデータブロックが存在しない場合、当該目標サンプルに対応するデータブロックを分散システムから取得し、ローカルキャッシュに記憶する。次に、ローカルキャッシュ内の当該目標サンプルに対応するデータブロックから当該目標サンプルを取得する。実際のサンプル取得のプロセスで、分散システムから取得された、目標サンプルに対応するデータブロックから目標サンプルを読み取り、それと同時に又はその後に、取得されたデータブロックをローカルキャッシュに記憶してもよいことに注意されたい。即ち、本開示の実施例において、データブロックの記憶とデータブロックからの目標サンプルの読み取りの順序に関して限定しない。
【0093】
一例として、ローカルキャッシュから前記目標サンプルを読み取ることは、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックを検索し、前記目標データブロックから前記目標サンプルを読み取ることを含む。
【0094】
一例として、ローカルキャッシュから前記目標サンプルを読み取ることは、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックが見つからない場合、前記目標データブロックを分散システムから読み取ってローカルにキャッシュすることと、ローカルキャッシュ内の前記目標データブロックから前記目標サンプルを読み取ることとを含む。
【0095】
本開示の実施例において、各サンプルの識別子、各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報をローカルに保存しておくようにしてもよい。このようにして、目標サンプルを読み取るプロセスで、ローカルに保存されている情報に基づいて目標サンプルに対応する目標データブロック及び目標サンプルの目標データブロックでの格納位置を特定できる。これによって、ローカルに保存されている情報に基づいてキャッシュから目標サンプルを読み取ることができ、目標サンプルの読み取りを実現するために分散システムに記憶されている情報を取得する必要がなくなり、データ読み取り効率が向上される。
【0096】
可能な一実現形態では、前記各サンプルの識別子、前記各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報は、マッピング関係として記憶されている。
【0097】
一例として、サンプルの識別子とデータブロックの識別子とのマッピング関係、および、サンプルの識別子とサンプルのデータブロックでの位置の情報とのマッピング関係をそれぞれローカルに保存する。
【0098】
サンプルの識別子とデータブロックの識別子とのマッピング関係に基づいて、目標サンプルのサンプル識別子に対応するデータブロックの識別子を特定し、特定されたデータブロックの識別子に基づいてローカルキャッシュにおいて目標サンプルに対応するデータブロックを検索できる。
【0099】
サンプルの識別子とサンプルのデータブロックでの位置の情報とのマッピング関係に基づいて、目標サンプルのサンプル識別子に対応する位置の情報を特定し、特定された位置の情報に基づいて目標サンプルに対応するデータブロックから目標サンプルを取得できる。
【0100】
サンプルの識別子は、サンプルを標識するためのものであり、サンプルが異なれば、サンプルの識別子が異なる。本開示の実施例において、サンプルの識別子は、サンプルの名称又はサンプルの番号等であってもよい。データブロックの識別子は、データブロックを標識するためのものであり、データブロックが異なれば、データブロックの識別子が異なる。本開示の実施例において、データブロックの識別子は、データブロックの名称又はデータブロックの番号等であってもよい。本開示の実施例において、サンプルの識別子及びデータブロックの識別子の生成方法等に関して限定しない。
【0101】
各サンプルの識別子、各データブロックの識別子、及び各サンプルのデータブロックでの位置の情報は、上記の例として挙げたマッピング関係及び情報の具体的な形式に限定されず、他の形式で記憶されてもよいことに注意されたい。
【0102】
もう一例として、サンプルの識別子、データブロックの識別子、及びサンプルのデータブロックでの位置の情報を、1つのメタ情報のストレージデータ構造(Meta Info Storage)に記憶するようにしてもよい。当該ストレージデータ構造をキー・バリュー(key-value)の形式に設定し、サンプルの識別子をキー(key)として記憶し、データブロックの識別子及びサンプルのデータブロックでの位置の情報をバリュー(value)として記憶するようにしてもよい。メタ情報のストレージデータ構造に基づいて、サンプルの識別子とデータブロックの識別子との対応関係、及び、サンプルの識別子とサンプルのデータブロックでの位置の情報との対応関係を特定できる。
【0103】
図3は、本開示の実施例による目標サンプルを取得するフローの模式図を示す。
図3に示すように、各サンプルの識別子、各データブロックの識別子、及び各サンプルのデータブロックでの位置の情報がマッピング関係として記憶されている場合を例とすると、目標サンプルを取得するプロセスで、メタ情報のストレージデータ構造におけるサンプルの識別子とデータブロックの識別子とのマッピング関係に基づいて、目標サンプルのトレーニング識別子に対応するデータブロックの識別子を特定し、次に特定されたデータブロックの識別子に基づいて目標サンプルに対応するデータブロックを取得するようにしてもよい。次に、メタ情報のストレージデータ構造に基づいてサンプルの識別子とサンプルのデータブロックでの位置の情報とのマッピング関係を特定し、さらに目標サンプルの、目標サンプルに対応するデータブロックでの位置の情報を特定し、次に特定された位置の情報に基づいて目標サンプルに対応するデータブロックから目標サンプルを取得するようにしてもよい。
【0104】
得すべき目標サンプルが特定された後、ローカルにアクセスするだけで目標サンプルを取得でき、サンプルの取得効率が一層向上される。
【0105】
ステップS11の前に、サンプルの識別子とデータブロックの識別子とのマッピング関係、及び、サンプルの識別子とサンプルのデータブロックでの位置の情報とのマッピング関係を分散システムから取得し、ローカルに保存してもよいことに注意されたい。
【0106】
ローカルキャッシュに記憶可能なデータブロックの数量、即ちローカルキャッシュのサイズは、必要に応じて設定されることができる。ローカルキャッシュに格納可能なデータブロックの数量が限られることが考えると、ローカルキャッシュの使用状況に基づいて、分散ストレージシステムから新たに取得されたデータブロックを記憶するためにローカルキャッシュをクリアするかどうかを決定するようにしてもよい。
【0107】
ローカルキャッシュに記憶されているデータブロックの数量が閾値(例えば、ローカルキャッシュのサイズ(catche size)の80%又は100%など)に達すると、ローカルキャッシュをクリアするようにしてもよい。一例として、ローカルキャッシュ内のデータブロックの数量が閾値に達することが検出された場合に、ローカルキャッシュをすぐにクリアしてもよい。このようにして、次回に取得すべきデータブロックを記憶するための十分なスペースが確保される。もう一例として、ローカルキャッシュ内のデータブロックの数量が閾値に達し、且つ、新たなデータブロックが取得されたことが検出された(例えば、必要なデータブロックはローカルキャッシュに存在しない場合に、分散システムから当該データブロックが取得された)場合に、ローカルキャッシュをクリアしてもよい。このようにして、ローカルキャッシュが満たされたとしても、次回にサンプルを取得する時にローカルキャッシュ内のこれらのデータブロックからサンプルを取得する必要がある場合に、ローカルキャッシュから削除されたばかりのデータブロックを分散ストレージシステムから再度取得することが避けられ、データブロックの取得にかかるリソースが効果的に節約されるとともに、当該データブロックからのサンプル取得に要する時間が短縮され、データの読み取り効率が向上される。
【0108】
可能な一実現形態では、ローカルキャッシュをクリアすることは、ローカルキャッシュ内のデータブロックがアクセスされた時間に基づいて、前記ローカルキャッシュ内の少なくとも1つのデータブロックを削除することであって、前記少なくとも1つのデータブロックが最後にアクセスされた時間は、前記ローカルキャッシュ内の削除されるデータブロック以外のデータブロックが最後にアクセスされた時間よりも古いことを含む。
【0109】
本開示の実施例において、ローカルキャッシュ内の各データブロックへのアクセス状況を記録するようにしてもよい。その目的は、後にローカルキャッシュをクリアする時、長時間にアクセスされていないデータブロックを優先してクリアし、最近アクセスされたデータブロックを保持することにある。このようにして、クリアされたばかりのデータブロックを再度分散ストレージシステムから取得する確率がある程度低減され、分散ストレージシステムへのアクセス回数が低減され、サンプルの取得効率が一層向上される。
【0110】
なお、実際にローカルキャッシュをクリアするプロセスで、1回で1つ又は複数のデータブロックを削除してもよい。具体的には、データブロックへのアクセス状況、又はキャッシュすべきデータブロックの状況等の要因に基づいて決定することができる。本開示の実施例において、各回でローカルキャッシュをクリアして削除されるデータブロックの数量、削除方式等に関して限定しない。上記の例を含んでもよいが、それに限定されない。
【0111】
図4は、本開示の実施例によるローカルキャッシュをクリアするプロセスの模式図を示す。ローカルキャッシュに格納可能なデータブロックの数量は5であり、即ち閾値が5であると仮定する。つまり、ローカルキャッシュに記憶されているデータブロックの数量が5になると、ローカルキャッシュをクリアすると仮定する。
図4に示すように、ローカルキャッシュにデータブロック1、データブロック2、データブロック3、データブロック4が記憶されており、且つ、データブロック4が最後にアクセスされた時間はデータブロック3が最後にアクセスされた時間よりも早く、データブロック3が最後にアクセスされた時間はデータブロック2が最後にアクセスされた時間よりも早く、データブロック2が最後にアクセスされた時間はデータブロック1が最後にアクセスされた時間よりも古い。つまり、ローカルキャッシュに現時点で記憶されているデータブロックは、最後にアクセスされた時間から現時点までの時間間隔の小さい順に、データブロック1、データブロック2、データブロック3、データブロック4となる。
【0112】
図4に示すように、データブロック3から目標サンプルを取得する必要がある場合、ローカルキャッシュにデータブロック3が存在するため、ローカルキャッシュ内のデータブロック3にアクセスすることによって目標サンプルを取得することができる。このときに、データブロック3が最後にアクセスされた時間から現時点までの時間間隔は、他のデータブロック(データブロック1、データブロック2、データブロック4)が最後にアクセスされた時間から現時点までの時間間隔よりも小さい。ローカルキャッシュに現時点で記憶されているデータブロックは、最後にアクセスされた時間から現時点までの時間間隔の小さい順に、データブロック3、データブロック1、データブロック2、データブロック4となる。
【0113】
次に、データブロック5から目標サンプルを取得する必要がある場合、ローカルキャッシュにデータブロック5が記憶されていないため、分散システムからデータブロック5を取得する必要がある。現時点でローカルキャッシュに記憶されているデータブロックの数量が4であり、ローカルキャッシュの閾値である5に達していないので、分散システムから取得されたデータブロック5をローカルキャッシュに直接記憶し、次に、ローカルキャッシュ内のデータブロック5にアクセスすることによって目標サンプルを取得することができる。このときに、データブロック5が最後にアクセスされた時間から現時点までの時間間隔は、他のデータブロック(データブロック3、データブロック1、データブロック2、データブロック4)が最後にアクセスされた時間から現時点までの時間間隔よりも小さい。ローカルキャッシュに現時点で記憶されているデータブロックは、最後にアクセスされた時間から現時点までの時間間隔の小さい順に、データブロック5、データブロック3、データブロック1、データブロック2、データブロック4となる。
【0114】
続いて、データブロック6から目標サンプルを取得する必要がある場合、ローカルキャッシュにデータブロック6が記憶されていないため、分散システムからデータブロック6を取得する必要がある。現時点でローカルキャッシュに記憶されているデータブロックの数量が5であり、すでにローカルキャッシュの閾値である5に達するので、まずキャッシュをクリアする必要がある。例えば、ローカルキャッシュにおいて、最後にアクセスされた時間が他のデータブロック(データブロック3、データブロック1、データブロック2)よりも古いデータブロック4を削除してもよい。クリアが完了してから、分散システムから取得されたデータブロック6をローカルキャッシュに記憶する。このときに、データブロック6が最後にアクセスされた時間から現時点までの時間間隔は、他のデータブロック(データブロック5、データブロック3、データブロック1、データブロック2)が最後にアクセスされた時間から現時点までの時間間隔よりも小さい。ローカルキャッシュに現時点で記憶されているデータブロックは、最後にアクセスされた時間から現時点までの時間間隔の小さい順に、データブロック6、データブロック5、データブロック3、データブロック1、データブロック2となる。
【0115】
本開示で言及された上記各方法の実施例は、原理や論理を違反しない限り、相互に組み合わせて実施例を形成することができることが理解され、紙幅に限りがあるため、詳細は本開示では再度説明しない。当業者であれば、具体的な実施形態の上記方法において、各ステップの具体的な実行順序はその機能および可能な内在的論理によって決定されるべきであることが理解される。
【0116】
また、本開示はサンプルを取得する装置、電子機器、コンピュータ読取可能記憶媒体、プログラムを更に提供し、いずれも本開示で提供されるサンプルを取得する方法のいずれか1つを実現するために用いられることができ、対応する技術的解決手段及び説明は、方法の部分の対応する記載を参照すればよく、詳細は再度説明しない。
【0117】
図5は、本開示の実施例によるサンプルを取得する装置のブロック図を示す。
図5に示すように、装置50は、データセット内の複数のデータブロックをシャッフルするための第1シャッフルモジュールであって、各データブロックに複数のサンプルが含まれる第1シャッフルモジュール51と、第1シャッフルモジュール51によってシャッフルされた前記複数のデータブロックを複数の処理バッチに分割するための分割モジュール52と、前記分割モジュール52によって分割された複数の処理バッチのうちの第1処理バッチの複数のサンプルをシャッフルして、前記第1処理バッチに対応するサンプル取得順番を得るための第2シャッフルモジュール53と、前記第1処理バッチについて、前記第2シャッフルモジュール53によって得られた前記第1処理バッチに対応するサンプル取得順番に従ってサンプルを取得するための取得モジュール54とを含む。
【0118】
本開示の実施例において、データブロック及び同一の処理バッチのサンプルをシャッフルすることによって、1つの処理バッチのサンプルはランダムになる。また、データブロック単位で処理バッチの分割を行うことによって、1つの処理バッチのサンプルを限られた数のデータブロックに属させ、1つの処理バッチにおいて近接するサンプルが1つのデータブロックに出現する確率が高くなり、サンプル取得中のデータブロックのヒット確率が向上され、サンプルの取得効率が向上される。
【0119】
可能な一実現形態では、前記装置は、サンプルが取得される前に、前記サンプルの属するデータブロックを分散システムから取得してローカルにキャッシュするためのキャッシュモジュールをさらに含む。
【0120】
可能な一実現形態では、前記取得モジュール54は、さらに、前記第1処理バッチに対応するサンプル取得順番に従って、サンプルを1回または複数回に分けて取得し、各回で1つのサンプル又は同一のデータブロックに属する複数のサンプルを取得することに用いられる。
【0121】
可能な一実現形態では、前記取得モジュール54は、さらに、前記第1処理バッチに対応するサンプル取得順番に従って、取得すべき複数のサンプルのうち、今回取得すべき1つのサンプルである目標サンプルを特定することと、ローカルキャッシュから前記目標サンプルを読み取ることとに用いられる。
【0122】
可能な一実現形態では、前記装置50は、ローカルキャッシュから前記目標サンプルが読み取られた後に、ローカルキャッシュから、前記取得すべき複数のサンプルのうちの、前記目標サンプルと同一のデータブロックに属するサンプルを読み取るための読み取りモジュールをさらに含む。
【0123】
可能な一実現形態では、前記取得モジュール54は、さらに、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックを検索し、前記目標データブロックから前記目標サンプルを読み取ることに用いられる。
【0124】
可能な一実現形態では、前記取得モジュール54は、さらに、前記目標サンプルの識別子と前記目標サンプルの属するデータブロックの識別子とのマッピング関係に基づいて、ローカルキャッシュにおいて前記目標サンプルに対応する目標データブロックが見つからない場合、前記目標データブロックを分散システムから読み取ってローカルにキャッシュすることと、ローカルキャッシュ内の前記目標データブロックから前記目標サンプルを読み取ることとに用いられる。
【0125】
可能な一実現形態では、前記装置54は、ローカルキャッシュ内のデータブロックの数量が閾値に達すると、ローカルキャッシュをクリアするためのクリアモジュールをさらに含む。
【0126】
可能な一実現形態では、前記クリアモジュールは、さらに、ローカルキャッシュ内のデータブロックがアクセスされた時間に基づいて、前記ローカルキャッシュ内の少なくとも1つのデータブロックを削除することであって、前記少なくとも1つのデータブロックが最後にアクセスされた時間は、前記ローカルキャッシュ内の削除されるデータブロック以外のデータブロックが最後にアクセスされた時間よりも古いことに用いられる。
【0127】
可能な一実現形態では、前記装置50は、各サンプルの識別子、各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報をローカルに保存するための保存モジュールをさらに含む。
【0128】
可能な一実現形態では、前記各サンプルの識別子、前記各データブロックの識別子、及び前記各サンプルのデータブロックでの位置の情報は、マッピング関係として記憶されている。
【0129】
可能な一実現形態では、前記データセット内の複数のデータブロックは分散システムに記憶されており、前記サンプルは画像を含む。
【0130】
いくつかの実施例では、本開示の実施例で提供された装置が有する機能又はモジュールは、上記方法の実施例に記載の方法を実行するために用いられ、その具体的な実現は上記方法の実施例の説明を参照すればよく、説明を簡潔にするために、詳細は再度説明しない。
【0131】
本開示の実施例は、コンピュータプログラムコマンドが記憶されているコンピュータ読取可能記憶媒体であって、前記コンピュータプログラムコマンドは、プロセッサにより実行されると、上記方法を実現させるコンピュータ読取可能記憶媒体を更に提案する。コンピュータ読取可能記憶媒体は非揮発性のコンピュータ読取可能記憶媒体であってもよい。
【0132】
本開示の実施例は、プロセッサと、プロセッサにより実行可能なコマンドを記憶するためのメモリと、を含み、前記プロセッサは、前記メモリに記憶されているコマンドを呼び出して上記方法を実行するように構成される電子機器を更に提案する。
【0133】
本開示の実施例は、コンピュータ読み取り可能コードを含むコンピュータプログラム製品であって、コンピュータ読み取り可能コードは、機器において実行されると、機器のプロセッサに上記の実施例のいずれか1つで提供されたサンプルを取得する方法を実現するためのコマンドを実行させるコンピュータプログラム製品を更に提案する。
【0134】
本開示の実施例は、コンピュータ読み取り可能コマンドが記憶されているコンピュータプログラム製品であって、コマンドは実行されると、コンピュータに上記の実施例のいずれか1つで提供されたサンプルを取得する方法の動作を実行させる他のコンピュータプログラム製品を更に提案する。
【0135】
電子機器は、端末、サーバ又は他の形態の装置として提供されてもよい。
【0136】
図6は、本開示の実施例による電子機器800のブロック図を示す。例えば、電子装置800は、携帯電話、コンピュータ、デジタル放送端末、メッセージ送受信装置、ゲームコンソール、タブレット装置、医療機器、フィットネス器具、パーソナル・デジタル・アシスタントなどの端末であってもよい。
【0137】
図6を参照すると、電子機器800は、処理コンポーネント802、メモリ804、電源コンポーネント806、マルチメディアコンポーネント808、オーディオコンポーネント810、入力/出力(I/O)インターフェイス812、センサコンポーネント814、および通信コンポーネント816のうちの一つ以上を含でもよい。
【0138】
処理コンポーネント802は通常、電子機器800の全体的な動作、例えば表示、電話呼出し、データ通信、カメラ動作および記録動作に関連する動作を制御する。処理コンポーネント802は、命令を実行して上記方法の全てまたは一部のステップを実行するために、一つ以上のプロセッサ820を含んでもよい。また、処理コンポーネント802は、他のコンポーネントとのインタラクションのための一つ以上のモジュールを含んでもよい。例えば、処理コンポーネント802は、マルチメディアコンポーネント808とのインタラクションのために、マルチメディアモジュールを含んでもよい。
【0139】
メモリ804は電子機器800での動作をサポートするための様々なタイプのデータを記憶するように構成される。これらのデータは、例として、電子機器800において操作するあらゆるアプリケーションプログラムまたは方法の命令、連絡先データ、電話帳データ、メッセージ、ピクチャー、ビデオなどを含む。例えば、本開示の実施例において、メモリ804は分散ストレージシステムから取得されたデータブロック、マッピング関係等のコンテンツをキャッシュするために用いられてもよい。メモリ804は、例えば静的ランダムアクセスメモリ(Static Random-Access Memory、SRAM)、電気的消去可能プログラマブル読み取り専用メモリ(Electrically-Erasable Programmable Read-Only Memory、EEPROM)、消去可能なプログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM)、プログラマブル読み取り専用メモリ(Programmable read-only memory、PROM)、読み取り専用メモリ(Read-Only Memory、ROM)、磁気メモリ、フラッシュメモリ、磁気ディスクまたは光ディスクなどの様々なタイプの揮発性または非揮発性記憶装置またはそれらの組み合わせによって実現できる。
【0140】
電源コンポーネント806は電子機器800の各コンポーネントに電力を供給する。電源コンポーネント806は電源管理システム、一つ以上の電源、および電子機器800のための電力生成、管理および配分に関連する他のコンポーネントを含んでもよい。
【0141】
マルチメディアコンポーネント808は前記電子機器800とユーザとの間で出力インターフェイスを提供するスクリーンを含む。いくつかの実施例では、スクリーンは液晶ディスプレイ(Liquid Crystal Display、LCD)およびタッチパネル(Touch Panel、TP)を含んでもよい。スクリーンがタッチパネルを含む場合、ユーザからの入力信号を受信するタッチスクリーンとして実現してもよい。タッチパネルは、タッチ、スライドおよびタッチパネルでのジェスチャを検知するために、一つ以上のタッチセンサを含む。前記タッチセンサはタッチまたはスライド動きの境界を検知するのみならず、前記タッチまたはスライド操作に関連する持続時間および圧力を検出するようにしてもよい。いくつかの実施例では、マルチメディアコンポーネント808は一つの前面カメラおよび/または後面カメラを含む。電子機器800が動作モード、例えば写真モードまたは撮影モードになる場合、前面カメラおよび/または後面カメラは外部のマルチメディアデータを受信するようにしてもよい。各前面カメラおよび後面カメラは、固定された光学レンズ系、または焦点距離および光学ズーム能力を有するものであってもよい。
【0142】
オーディオコンポーネント810はオーディオ信号を出力および/または入力するように構成される。例えば、オーディオコンポーネント810は、一つのマイク(Microphone、MIC)を含み、マイク(MIC)は、電子機器800が動作モード、例えば呼び出しモード、記録モードおよび音声認識モードになる場合、外部のオーディオ信号を受信するように構成される。受信されたオーディオ信号はさらにメモリ804に記憶されるか、または通信コンポーネント816によって送信されてもよい。いくつかの実施例では、オーディオコンポーネント810はさらに、オーディオ信号を出力するためのスピーカーを含む。
【0143】
I/Oインターフェイス812は処理コンポーネント802と周辺インターフェイスモジュールとの間でインターフェイスを提供し、上記周辺インターフェイスモジュールはキーボード、クリックホイール、ボタンなどであってもよい。これらのボタンはホームボタン、音量ボタン、スタートボタンおよびロックボタンを含んでもよいが、これらに限定されない。
【0144】
センサコンポーネント814は電子機器800の各面での状態評価のために一つ以上のセンサを含む。例えば、センサコンポーネント814は電子機器800のオン/オフ状態、例えば電子機器800の表示装置およびキーパッドのようなコンポーネントの相対的位置決めを検出でき、センサコンポーネント814はさらに、電子機器800または電子機器800のあるコンポーネントの位置の変化、ユーザと電子機器800との接触の有無、電子機器800の方位または加減速および電子機器800の温度変化を検出できる。センサコンポーネント814は、いかなる物理的接触もない場合に近傍の物体の存在を検出するように構成された近接センサを含んでもよい。センサコンポーネント814はさらに、相補性金属酸化膜半導体(Complementary Metal Oxide Semiconductor、CMOS)又は電荷結合素子(Charge-coupled Device、CCD)イメージセンサのような、イメージングアプリケーションにおいて使用するための光センサを含んでもよい。いくつかの実施例では、該センサコンポーネント814はさらに、加速度センサ、ジャイロスコープセンサ、磁気センサ、圧力センサまたは温度センサを含んでもよい。
【0145】
通信コンポーネント816は電子機器800と他の機器との有線または無線通信を実現するように構成される。電子機器800は通信規格に基づく無線ネットワーク、例えばワイヤレスネットワーク(WiFi)、第二世代移動通信技術(2G)、第三世代移動通信技術(3G)、またはそれらの組み合わせにアクセスできる。一例示的な実施例では、通信コンポーネント816は放送チャネルによって外部の放送管理システムからの放送信号または放送関連情報を受信する。一例示的な実施例では、前記通信コンポーネント816はさらに、近距離通信を促進させるために、近距離無線通信(Near Field Communication、NFC)モジュールを含む。例えば、NFCモジュールは無線周波数識別(Radio Frequency Identification、RFID)技術、赤外線データ協会(Infrared Data Association、IrDA)技術、超広帯域(Ultra Wide Band、UWB)技術、ブルートゥース(登録商標)(BT)技術および他の技術によって実現できる。
【0146】
例示的な実施例では、電子機器800は一つ以上の特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、デジタル信号プロセッサ(Digital Signal Processing、DSP)、デジタル信号処理デバイス(Digital Signal Processing Device、DSPD)、プログラマブルロジックデバイス(programmable logic device、PLD)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサまたは他の電子要素によって実現され、上記方法を実行するために用いることができる。
【0147】
例示的な実施例では、さらに、非揮発性コンピュータ読み取り可能記憶媒体、例えばコンピュータプログラム命令を含むメモリ804が提供され、上記コンピュータプログラム命令は、電子機器800のプロセッサ820によって実行されると、上記方法を実行させることができる。
【0148】
図7は、本開示の実施例による電子機器1900のブロック図を示す。例えば、電子機器1900はサーバとして提供されてもよい。
図7を参照すると、電子機器1900は、一つ以上のプロセッサを含む処理コンポーネント1922、および、処理コンポーネント1922によって実行可能な命令、例えばアプリケーションプログラムを記憶するための、メモリ1932を代表とするメモリ資源を含む。メモリ1932に記憶されるアプリケーションプログラムは、それぞれが1つの命令群に対応する一つ以上のモジュールを含んでもよい。また、処理コンポーネント1922は命令を実行することによって上記方法を実行するように構成される。
【0149】
電子機器1900はさらに、電子機器1900の電源管理を実行するように構成された電源コンポーネント1926、電子機器1900をネットワークに接続するように構成された有線または無線ネットワークインターフェイス1950、および入出力(I/O)インターフェイス1958を含んでもよい。電子機器1900はメモリ1932に記憶されているオペレーティングシステム、例えばマイクロソフト社のウィンドウズサーバオペレーティングシステム(Windows ServerTM)、アップル社のグラフィカルユーザインタフェースベースのオペレーティングシステム(Mac OS XTM)、マルチユーザ・マルチタスク型のコンピュータオペレーティングシステム(UnixTM)、フリーソフトウェアとオープンソースのUnix系のオペレーティングシステム(LinuxTM)、オープンソースのUnix系のオペレーティングシステム(FreeBSDTM)または類似するものに基づいて動作できる。
【0150】
例示的な実施例では、さらに、非揮発性コンピュータ読み取り可能記憶媒体、例えばコンピュータプログラム命令を含むメモリ1932が提供され、上記コンピュータプログラム命令は、電子機器1900の処理コンポーネント1922によって実行されると、上記方法を実行させることができる。
【0151】
本開示はシステム、方法および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本開示の各方面を実現させるためのコンピュータ読み取り可能プログラム命令を有しているコンピュータ読み取り可能記憶媒体を含んでもよい。
【0152】
コンピュータ読み取り可能記憶媒体は、命令実行装置に使用される命令を保存および記憶可能な有形装置であってもよい。コンピュータ読み取り可能記憶媒体は例えば、電気記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置または上記の任意の適当な組み合わせであってもよい。コンピュータ読み取り可能記憶媒体のさらに具体的な例(非網羅的リスト)としては、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(Static Random-Access Memory、SRAM)、携帯型コンパクトディスク読み取り専用メモリ(Compact Disc Read-Only Memory、CD-ROM)、デジタル多用途ディスク(Digital Video Disc、DVD)、メモリスティック、フロッピーディスク、例えば命令が記憶されているせん孔カードまたはスロット内突起構造のような機械的符号化装置、および上記の任意の適当な組み合わせを含む。ここで使用されるコンピュータ読み取り可能記憶媒体は、瞬時信号自体、例えば無線電波または他の自由に伝播される電磁波、導波路または他の伝送媒体を経由して伝播される電磁波(例えば、光ファイバーケーブルを通過するパルス光)、または電線を経由して伝送される電気信号と解釈されるものではない。
【0153】
ここで記述したコンピュータ読み取り可能プログラム命令は、コンピュータ読み取り可能記憶媒体から各計算/処理機器にダウンロードされてもよいし、またはネットワーク、例えばインターネット、ローカルエリアネットワーク、広域ネットワークおよび/または無線ネットワークを介して外部のコンピュータまたは外部記憶装置にダウンロードされてもよい。ネットワークは銅伝送ケーブル、光ファイバー伝送、無線伝送、ルーター、ファイアウォール、交換機、ゲートウェイコンピュータおよび/またはエッジサーバを含んでもよい。各計算/処理機器内のネットワークアダプタカードまたはネットワークインターフェイスはネットワークからコンピュータ読み取り可能プログラム命令を受信し、該コンピュータ読み取り可能プログラム命令を転送し、各計算/処理機器内のコンピュータ読み取り可能記憶媒体に記憶させる。
【0154】
本開示の動作を実行するためのコンピュータプログラム命令はアセンブラ命令、命令セットアーキテクチャ(Instruction Set Architecture、ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」言語または類似するプログラミング言語などの一般的な手続き型プログラミング言語を含む一つ以上のプログラミング言語の任意の組み合わせで書かれたソースコードまたは目標コードであってもよい。コンピュータ読み取り可能プログラム命令は、完全にユーザのコンピュータにおいて実行されてもよく、部分的にユーザのコンピュータにおいて実行されてもよく、スタンドアロンソフトウェアパッケージとして実行されてもよく、部分的にユーザのコンピュータにおいてかつ部分的にリモートコンピュータにおいて実行されてもよく、または完全にリモートコンピュータもしくはサーバにおいて実行されてもよい。リモートコンピュータに関与する場合、リモートコンピュータは、ローカルエリアネットワーク(Local Area Network、LAN)または広域ネットワーク(Wide Area Network、WAN)を含む任意の種類のネットワークを経由してユーザのコンピュータに接続されてもよく、または、(例えばインターネットサービスプロバイダを利用してインターネットを経由して)外部コンピュータに接続されてもよい。いくつかの実施例では、コンピュータ読み取り可能プログラム命令の状態情報を利用して、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)またはプログラマブル論理アレイ(Programmable logic arrays、PLA)などの電子回路をパーソナライズし、該電子回路によりコンピュータ読み取り可能プログラム命令を実行することにより、本開示の各方面を実現できるようにしてもよい。
【0155】
ここで本開示の実施例による方法、装置(システム)およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照しながら本開示の各方面を説明したが、フローチャートおよび/またはブロック図の各ブロック、およびフローチャートおよび/またはブロック図の各ブロックの組み合わせは、いずれもコンピュータ読み取り可能プログラム命令によって実現できることを理解すべきである。
【0156】
これらのコンピュータ読み取り可能プログラム命令は、汎用コンピュータ、専用コンピュータまたは他のプログラマブルデータ処理装置のプロセッサへ提供されて、これらの命令がコンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行されるときフローチャートおよび/またはブロック図の一つ以上のブロックにおいて指定された機能/動作を実現ように、装置を製造してもよい。これらのコンピュータ読み取り可能プログラム命令は、コンピュータ読み取り可能記憶媒体に記憶し、コンピュータ、プログラマブルデータ処理装置および/または他の機器を特定の方式で動作させるようにしてもよい。命令を記憶しているコンピュータ読み取り可能記憶媒体に、フローチャートおよび/またはブロック図の一つ以上のブロックにおいて指定された機能/動作の各方面を実現するための命令を有する製品を含む。
【0157】
コンピュータ読み取り可能プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または他の機器にロードし、コンピュータ、他のプログラマブルデータ処理装置または他の機器に一連の動作ステップを実行させることにより、コンピュータにより実施なプロセスを生成するようにしてもよい。このようにして、コンピュータ、他のプログラマブルデータ処理装置、または他の機器において実行される命令により、フローチャートおよび/またはブロック図の一つ以上のブロックにおいて指定された機能/動作を実現する。
【0158】
図面のうちのフローチャートおよびブロック図は、本開示の複数の実施例によるシステム、方法およびコンピュータプログラム製品の実現可能なシステムアーキテクチャ、機能および動作を示す。この点では、フローチャートまたはブロック図における各ブロックは一つのモジュール、プログラムセグメントまたは命令の一部分を代表することができ、前記モジュール、プログラムセグメントまたは命令の一部分は指定された論理機能を実現するための一つ以上の実行可能命令を含む。いくつかの代替としての実現形態では、ブロックに表記される機能は、図面に付した順序と異なって実現してもよい。例えば、二つの連続的なブロックは実質的に並列に実行してもよく、また、係る機能によって、逆な順序で実行してもよい。なお、ブロック図および/またはフローチャートにおける各ブロック、およびブロック図および/またはフローチャートにおけるブロックの組み合わせは、指定される機能または動作を実行するハードウェアに基づく専用システムによって実現してもよいし、または専用ハードウェアとコンピュータ命令との組み合わせによって実現してもよいことにも注意すべきである。
【0159】
当該コンピュータプログラム製品は、ハードウェア、ソフトウェア又はその組み合わせによって具体的に実現される。一選択可能な実施例において、前記コンピュータプログラム製品はコンピュータ記憶媒体として具現化される。他の選択可能な実施例において、コンピュータプログラム製品は、例えば、ソフトウェア開発キット(Software Development Kit、SDK)等のようなソフトウェア製品として具現化される。
【0160】
以上、本開示の各実施例を記述したが、上記説明は例示的なものに過ぎず、網羅的なものではなく、かつ披露された各実施例に限定されるものでもない。当業者にとって、説明された各実施例の範囲および精神から逸脱することなく、様々な修正および変更が自明である。本明細書に選ばれた用語は、各実施例の原理、実際の適用または市場における技術への技術的改善を好適に解釈するか、または他の当業者に本明細書に披露された各実施例を理解させるためのものである。