JP5600695B2 - 並列化近傍探索処理方法、及び並列化近傍探索プログラム - Google Patents
並列化近傍探索処理方法、及び並列化近傍探索プログラム Download PDFInfo
- Publication number
- JP5600695B2 JP5600695B2 JP2012026226A JP2012026226A JP5600695B2 JP 5600695 B2 JP5600695 B2 JP 5600695B2 JP 2012026226 A JP2012026226 A JP 2012026226A JP 2012026226 A JP2012026226 A JP 2012026226A JP 5600695 B2 JP5600695 B2 JP 5600695B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- backtrack
- gpu
- vector group
- group data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
複数のGPUデバイスと、ベクトル群データを格納したデータベースと、ホスト装置とを備える並列化近傍探索処理装置が実行する並列化近傍探索処理方法であって、
前記ホスト装置は、
前記データベース中のベクトル群データをkd-treeの木構造を用いて分割し、
分割した領域単位でベクトル群データをまとめ、
並び替えたベクトル群データをGPUデバイスのグローバルメモリにコピーし、
クエリのベクトルデータの入力を受け付けると、分割されたベクトル群データのどの領域を探索するかを決め、
決定した領域での探索をGPUデバイスに依頼し、
前記依頼を受けたGPUデバイスは、
探索する分割領域のベクトル群と距離計算を並列に実行し、
最短距離dとそれに対応するベクトルのID(n)を求め、
前記最短距離dと前記対応するベクトルのID(n)を前記ホスト装置側のメインメモリに転送し、
前記ホスト装置が、前記距離dと前記対応するベクトルID(n)を出力する
ことを特徴とする並列化近傍探索処理方法として構成される。
<装置構成>
図1に、本実施の形態に係る並列化近傍探索処理装置101の構成図を示す。図1に示すように、本実施の形態に係る並列化近傍探索処理装置101は、ホスト装置102、ベクトル群DB(データベース)105、1つ又は複数のGPUデバイス106を備えて構成される。図示のように、ホスト装置102とベクトル群DB105が接続されるとともに、ホスト装置102と各GPUデバイスが接続されている。
以下、本実施の形態に係る並列化近傍探索処理装置101が実行する処理動作を、フローチャートを参照しながら説明する。
S3205においてNoのとき、すなわち|a-q|<d'でない場合、パラメータを、(対象ノード:左子ノード、バックトラック半径:d'、対象ノードでのkd-tree作成時の空間分割面:a、分割面と同次元のクエリベクトルの要素値:q)として、バックトラック処理を再帰的に呼び出す(S3209)。
ホスト装置102は、d'(405)とd''(408)を比較し、d'(405)がd''(408)と同じか大きければ(S3114のYes)、d''(408)とd''(408)に対応するベクトルのID(409)を出力する(S3115)。S3114での比較でNoの場合、すなわちd'(405)がd''(408)より小さければ、d'(405)とd'(405)に対応するベクトルのID(406)を出力(3116)する。
次に、kd-treeを第1の実施の形態と異なる方法で作成する形態を第2の実施の形態として説明する。第2の実施の形態におけるシステム構成は図1に示したとおりであり、第1の実施の形態と同じである。また、全体の処理の流れも図2に示したとおりであり、第1の実施の形態と同じである。
S5211においてNoのとき、すなわち|a-q|<d'でない場合、パラメータを、(対象ノード:左子ノード、バックトラック半径:d'、対象ノードでのkd-tree作成時の空間分割面:a、分割面と同次元のクエリベクトルの要素値:q)として、バックトラック処理を再帰的に呼び出す(S5214)。
本発明の実施の形態によれば、葉ノードに複数のベクトルデータが対応するインデックス処理を行うことで、GPU搭載マシンを用いた高次元ベクトル群の高速な並列化近傍探索処理が可能になる。
(実施例1)
実施例1は、上記の第1の実施の形態に対応する実施例である。実施例1では、SURF(Speeded Up Robust Features)アルゴリズムを用いた物体認識処理において、画像から128次元のベクトル群が抽出された場合の例について説明する。
(0.00771829,0.00876939,-0.00164389,0.00242805,0.00591626,0.0059704,-0.000699053,0.0010269,-0.0402349,0.0478606,-0.00675006,0.008548,0.0079681,0.00937274,0.0254017,0.0303479,0.0105966,0.0781956,0.0237573,0.0313011,-0.0058261,0.00972548,0.00640149,0.00890163,0.00202366,0.005785,0.0008189,0.00261104,0.00168162,0.00313512,0.000645605,0.00187556,0.0156556,0.0198709,0.043964,0.0491846,-0.0457624,0.0519745,0.00104955,0.00352257,-0.0473678,0.0676495,-0.290302,0.372653,-0.105448,0.125615,-0.165742,0.227193,0.00130149,0.33567,0.171501,0.368598,-0.0482353,0.108972,0.0130523,0.0544993,-0.00404431,0.0100914,0.0318822,0.05294,-0.00937941,0.0154139,-0.000685246,0.00858936,0.00154014,0.0031448,0.00700949,0.00804435,-0.00668938,0.00847851,0.000471806,0.00180168,0.0882967,0.18727,0.0836585,0.0885382,-0.00612456,0.128606,0.0955226,0.0993798,-0.122265,0.198727,0.124402,0.35299,-0.0196364,0.0753894,0.0210032,0.155274,-0.00605615,0.0433227,-0.0162856,0.0611591,-0.0026333,0.00693902,1.00823e-005,0.00847174,0.00122396,0.00126437,-4.30777e-005,4.30777e-005,0.000536311,0.000536311,-2.0572e-005,2.79183e-005,0.0566939,0.0566939,-0.00197521,0.00197521,0.0473506,0.0473506,-0.00099733,0.00099733,-0.0350208,0.0410233,-0.00671439,0.0295273,0.00189219,0.003061,0.0154454,0.0282393,0.00100916,0.00239708,-0.00259997,0.00458948,0.00259418,0.00365359,0.000663469,0.00140468)
ベクトル群DB105のベクトルデータ群を分割する処理において、ベクトル群DB105のベクトルデータを読み込み(S2101)、ベクトルデータをGPUデバイスの数2で分割(S2102)し、GPUデバイス1基あたり、5,000,000ベクトルを担当させることとする。各分割ベクトルデータと保持させる各GPUデバイス106を対応づけ(S2103)、葉ノード数を64として、各分割ベクトルデータについて決められた葉ノード(306)数になるまでkd-treeを作成(S2104)し、各分割ベクトルデータを構造化された並びにソートし、1次元配列(309)上に保持し(S2105)、ソートされた各分割ベクトルデータの1次元配列を対応するGPUデバイス106に転送する(S2106)。
35742 0.099402
98163 0.095652
3890 0.087106
172818 0.061359
27990 0.06267
140948 0.085252
183242 0.088398
58996 0.073724
8575 0.084284
127189 0.06245
105814 0.092972
172115 0.082664
GPUデバイス106は、複数の計算結果の中から、最短距離d=0.06245とそれに対応するベクトルのID(n=127189)を選択し(S3105)、距離計算結果で最短距離d=0.06245(404)に対応するベクトルのID(n=127189)(314、406)をメインメモリ103に転送する(S3106)。
72289 0.081518
80535 0.069957
170734 0.072266
166491 0.005922
57625 0.006741
55956 0.059269
30643 0.048778
5838 0.066382
126520 0.016892
206660 0.058364
89650 0.005679
113461 0.033354
GPUデバイス106は、最短距離d''=0.005679とそれに対応するベクトルのID(n'=89650)を選択し(S3112)、距離計算結果で最短距離d''=0.005679(408)と対応するベクトルのID(n'=89650)(409)をメインメモリ103に転送する(S3113)。
次に、実施例2を説明する。実施例2は、上記の第2の実施の形態に対応する実施例である。実施例2では、PCA-SIFT(Principal Component Analysis−Scale Invariant Feature Transform)アルゴリズムを用いた物体認識処理において、画像から36次元のベクトル群が抽出された場合の例について説明する。
(1573,-1611,1546,-1450,-11,-322,-384,-385,-652,-459,0,377,-619,-969,-858,-591,1138,-535,-2471,-2174,2022,-257,-248,-1820,537,1224,-1272,279,512,-1340,1124,1955,95,-623,1181,-2839)
ベクトル群DB105のベクトルデータ群を分割する処理において、ホスト装置102は、ベクトル群DB105のベクトルデータを読み込み(S4101)、葉ノード数を128として、ベクトルデータに対して決められた葉ノード(306)数になるまでkd-treeを作成(S4102)し、ベクトルデータを構造化された並びにソートし、1次元配列(309)上に保持し(S4103)、ソートされた1次元配列をGPUデバイス数4で分割し(S4104)、4つに分割された各1次元配列を異なるGPUデバイス106に対応付け(S4105)、4つに分割された各1次元配列を対応するGPUデバイスに転送する(S4106)。
72289 4619847
80535 219754678
170734 968428
166491 84259310
57625 4613847
55956 641251
30643 21488949
5838 748516
126520 847556
206660 52987462
89650 2541844
113461 36598741
GPUデバイス106は、最短距離d=64125とそれに対応するベクトルのID(n=55956)を選択し(S5105)、距離計算結果で最短距離d=64125(404)に対応するベクトルのID(n=55956)(314、406)をメインメモリ103に転送する(S5106)。
163856 1498483
8700 44149474
11233 5874358
33124 16737933
77875 432507
27794 18812086
96333 2747275
148766 1992416
93235 60519212
128207 10021389
141947 7465054
8575 876302
GPUデバイス106は、最短距離d''=43250とそれに対応するベクトルのID(n'=77875)を選択し(S5205)、距離計算結果で最短距離d''=43250(408)と対応するベクトルのID(n'=77875)(409)をメインメモリ103に転送する(S5206)。
102 ホスト装置
103 メインメモリ
104 CPU
105 ベクトル群DB(データベース)
106 GPUデバイス
107 GPUグローバルメモリ
108 GPU
Claims (6)
- 複数のGPUデバイスと、ベクトル群データを格納したデータベースと、ホスト装置とを備える並列化近傍探索処理装置が実行する並列化近傍探索処理方法であって、
前記ホスト装置は、
前記データベース中のベクトル群データをkd-treeの木構造を用いて分割し、
分割した領域単位でベクトル群データをまとめ、
並び替えたベクトル群データをGPUデバイスのグローバルメモリにコピーし、
クエリのベクトルデータの入力を受け付けると、分割されたベクトル群データのどの領域を探索するかを決め、
決定した領域での探索をGPUデバイスに依頼し、
前記依頼を受けたGPUデバイスは、
探索する分割領域のベクトル群と距離計算を並列に実行し、
最短距離dとそれに対応するベクトルのID(n)を求め、
前記最短距離dと前記対応するベクトルのID(n)を前記ホスト装置側のメインメモリに転送し、
前記ホスト装置が、前記距離dと前記対応するベクトルID(n)を出力する
ことを特徴とする並列化近傍探索処理方法。 - 請求項1に記載の並列化近傍探索処理方法において、
前記ベクトル群データをkd-treeの木構造を用いて分割する処理において、
前記ホスト装置は、
前記データベースのベクトル群データを読み込み、
読み込んだベクトル群データをGPUデバイスの数だけ分割し、
各分割ベクトル群データと保持させる各GPUデバイスを対応づけ、
各分割ベクトル群データに対して決められた葉ノード数になるまでkd-treeを作成し、
各分割ベクトル群データを構造化された並びにソートし、ソートされた各分割ベクトル群データを1次元配列上に保持し、
前記ソートされた各分割ベクトル群データの1次元配列を対応するGPUデバイスに転送する
ことを特徴とする並列化近傍探索処理方法。 - 請求項1に記載の並列化近傍探索処理方法において、
前記ベクトル群データをkd-treeの木構造を用いて分割する処理において、
前記ホスト装置は、
前記データベースのベクトル群データを読み込み、
読み込んだベクトル群データに対して決められた葉ノード数になるまでkd-treeを作成し、
ベクトル群データを構造化された並びにソートし、ソートされたベクトル群データを1次元配列上に保持し、
前記ソートされた1次元配列をGPUデバイス数で分割し、
前記分割された各1次元配列を異なるGPUデバイスに対応付け、
前記分割された各1次元配列を対応するGPUデバイスに転送する
ことを特徴とする並列化近傍探索処理方法。 - 請求項2又は3に記載の並列化近傍探索処理方法において、前記クエリのベクトルデータの入力がされたときに、
前記ホスト装置は、
前記クエリのベクトルデータの入力を受け付け、
kd−treeを探索し、到達した葉ノード中のベクトル群の1次元配列上で先頭のベクトルのIDを対応するGPUデバイスのグローバルメモリに転送し、
前記GPUデバイスは、
前記転送されてきたIDが該当する葉ノードのベクトル群と並列距離計算を行い、複数の計算結果を取得し、
最短距離dとそれに対応するベクトルのID(n)を選択し、
前記最短距離dに対応するベクトルのIDをメインメモリに転送し、
前記ホスト装置は、
前記メインメモリで転送されてきたIDを保持し、
バックトラック半径を決める近似係数εを用いて、バックトラック半径d’を計算し、
前記バックトラック半径d’で、バックトラック対象が全て見つかるバックトラック処理を行い、
バックトラックの対象となった葉ノード群それぞれにおいて、
各葉ノード中のベクトル群の1次元配列上で先頭のベクトルのIDを対応するGPUデバイスのグローバルメモリに転送し、
前記GPUデバイスは、
前記転送されてきたIDが該当する葉ノード群それぞれのベクトル群と並列距離計算を行い、複数の計算結果を取得し、
最短距離d’’とそれに対応するベクトルのID(n’)を選択し、
前記最短距離d’’と前記対応するベクトルのIDをメインメモリに転送し、
前記ホスト装置が、
d’とd’’を比較して、
d’がd’’と同じか大きければ、d’’とd’’に対応するベクトルのIDを出力し、
d’がd’’より小さければ、d’とd’に対応するベクトルのIDを出力する
ことを特徴とする並列化近傍探索処理方法。 - 請求項2又は3に記載の並列化近傍探索処理方法において、前記クエリのベクトルデータの入力がされたときに、
前記ホスト装置は、
前記クエリのベクトルデータの入力を受け付け、
kd−treeを探索し、到達した葉ノード中のベクトル群の1次元配列上で先頭のベクトルのIDを対応するGPUデバイスのグローバルメモリに転送し、
前記GPUデバイスは、
前記転送されてきたIDが該当する葉ノードのベクトル群と並列距離計算を行い、複数の計算結果を取得し、
最短距離dとそれに対応するベクトルのID(n)を選択し、
前記最短距離dに対応するベクトルのIDをメインメモリに転送し、
前記ホスト装置は、
前記メインメモリで転送されてきたIDを保持し、
バックトラック半径を決める近似係数εを用いて、バックトラック半径d’を計算し、
前記バックトラック半径d’で、バックトラック処理を開始し、バックトラック対象の葉ノードに到達する度に、
到達した葉ノード中のベクトル群の1次元配列上で先頭のベクトルのIDを対応するGPUデバイスのグローバルメモリに転送し、
前記GPUデバイスは、
前記転送されてきたIDが該当する葉ノード群それぞれのベクトル群と並列距離計算を行い、複数の計算結果を取得し、
最短距離d’’とそれに対応するベクトルのID(n’)を選択し、
前記最短距離d’’と前記対応するベクトルのIDをメインメモリに転送し、
前記ホスト装置が、
d’とd’’を比較して、
d’がd’’と同じか大きければ、dとd’にd’’を代入し、nにn’を代入し、d’を返し、
バックトラック処理が終了すると、dとdに対応するベクトルのIDを出力する
ことを特徴とする並列化近傍探索処理方法。 - 複数のGPUデバイスと、ベクトル群データを格納したデータベースと、ホスト装置とを備える並列化近傍探索処理装置における前記ホスト装置として使用されるコンピュータに、請求項1ないし5のうちのいずれか1項に記載の並列化近傍探索処理方法における前記ホスト装置が実行する各処理を実行させるための並列化近傍探索プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012026226A JP5600695B2 (ja) | 2012-02-09 | 2012-02-09 | 並列化近傍探索処理方法、及び並列化近傍探索プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012026226A JP5600695B2 (ja) | 2012-02-09 | 2012-02-09 | 並列化近傍探索処理方法、及び並列化近傍探索プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013164661A JP2013164661A (ja) | 2013-08-22 |
JP5600695B2 true JP5600695B2 (ja) | 2014-10-01 |
Family
ID=49175989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012026226A Expired - Fee Related JP5600695B2 (ja) | 2012-02-09 | 2012-02-09 | 並列化近傍探索処理方法、及び並列化近傍探索プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5600695B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101827167B1 (ko) | 2016-11-01 | 2018-02-08 | 고려대학교 세종산학협력단 | Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치 |
-
2012
- 2012-02-09 JP JP2012026226A patent/JP5600695B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101827167B1 (ko) | 2016-11-01 | 2018-02-08 | 고려대학교 세종산학협력단 | Sift 병렬 처리를 이용한 고속 영상 스티칭 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP2013164661A (ja) | 2013-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8724910B1 (en) | Selection of representative images | |
US8645380B2 (en) | Optimized KD-tree for scalable search | |
KR100708067B1 (ko) | 디지털 영상 검색 장치 및 그 방법 | |
JP6905603B2 (ja) | 画像検索方法、装置、機器および読み取り可能な記憶媒体 | |
Shen et al. | Pcw-net: Pyramid combination and warping cost volume for stereo matching | |
CN110023989B (zh) | 一种素描图像的生成方法及装置 | |
FR2543708A1 (fr) | Procede et appareil de recherche d'images, utilisant des annotations en tant qu'informations-guides | |
WO2014109127A1 (ja) | インデックス生成装置及び方法並びに検索装置及び検索方法 | |
US8416989B2 (en) | Image processing apparatus, image capture apparatus, image processing method, and program | |
JP5600695B2 (ja) | 並列化近傍探索処理方法、及び並列化近傍探索プログラム | |
EP3162062A1 (en) | Motion vector selection for video encoding | |
JP6311000B1 (ja) | 生成装置、生成方法、及び生成プログラム | |
JP5367488B2 (ja) | データ分類装置及びプログラム | |
CN108776960B (zh) | 基于传播辅助kd树的地形特征区域合成方法和装置 | |
CN116034401A (zh) | 用于使用自然语言描述检索视频的系统和方法 | |
WO2021007999A1 (zh) | 视频帧处理方法及装置 | |
Balke et al. | Learning soft-attention models for tempo-invariant audio-sheet music retrieval | |
JP2016212879A (ja) | 情報処理方法及び情報処理装置 | |
KR101692634B1 (ko) | 2차원 영상의 3차원 변환 장치 및 방법 | |
CN110019910A (zh) | 图像检索方法及装置 | |
CN106776654B (zh) | 一种数据搜索方法及装置 | |
Dravyakar et al. | Private content based multimedia information retrieval using map-reduce | |
CN111708745B (zh) | 一种跨媒体数据共享表示方法及用户行为分析方法、系统 | |
CN114780780A (zh) | 图像检索方法、装置、电子设备及存储介质 | |
JP6974248B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20131001 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140117 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140528 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140610 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140728 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140812 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140818 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5600695 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |