SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
K-means Hashing:
an Affinity-Preserving Quantization Method
for Learning Binary Compact Codes
Yusuke Uchida (@yu4u)
KDDI R&D Laboratories, Inc.
背景
• 画像特徴
– SIFT: 128次元, GIST: 960 (384) 次元, FV/VLAD: ~数万次元
– 1M~1B枚レベルの画像検索とかしたいお…
– でも画像の特徴ベクトルそのものを利用すると
メモリに乗らないし類似検索もおそいお…
– だからコンパクトなバイナリコードに変換するお!(テンプレ)
(面白いけど応用を気にしている人があんまいない印象)
• バイナリ化のメリット
– コンパクト+高速検索 (e.g., SSE 4.2 POPCNT)
(参考)ビットを数える
http://www.slideshare.net/takesako/x86x64-sse42-popcnt
• 単純にユークリッド距離を近似することが目的の手法と
supervisedでクラス分類を意識し距離学習も行う手法がある
Hashing
"Similarity search in high dimensions via hashing," VLDB'99. (LSH)
"Spectral Hashing," NIPS'08. (SH)
"Learning to Hash with Binary Reconstructive Embeddings," NIPS'09. (BRE)
"Locality Sensitive Binary Codes from Shift-Invariant Kernels," NIPS'09. (SIKH)
"Kernelized Locality-Sensitive Hashing for Scalable Image Search," ICCV'09. (KLSH)
"Sequential Projection Learning for Hashing with Compact Codes," ICML'10. (USPLH)
"Self-Taught Hashing for Fast Similarity Search," SIGIR'10.
"CARD: Compact And Real-time Descriptors," ICCV'11.
"Complementary Hashing for Approximate Nearest Neighbor Search," ICCV'11.
"Coherency Sensitive Hashing," ICCV'11.
"Hashing with Graphs," ICML'11. (AGH)
"Minimal Loss Hashing for Compact Binary Codes," ICML'11.
"Random Maximum Margin Hashing," CVPR'11.
"Iterative Quantization: A Procrustean Approach to Learning Binary Codes," CVPR'11. (ITQ)
"LDAHash: Improved Matching with Smaller Descriptors," PAMI'12. (LDAH)
"Isotropic Hashing," NIPS'12.
"Supervised Hashing with Kernels," CVPR'12.
"Spherical Hashing," CVPR'12.
"Multidimensional Spectral Hashing," ECCV'12.
"Double-Bit Quantization for Hashing," AAAI'13.
"Variable Bit Quantisation for LSH," ACL'13.
"Hash Bit Selection: a Unified Solution for Selection Problems in Hashing," CVPR'13.
"Compressed Hashing," CVPR'13.
"Inductive Hashing on Manifolds," CVPR'13.
"Learning Binary Codes for High-Dimensional Data Using Bilinear Projections," CVPR'13.
"K-means Hashing: an Affinity-Preserving Quantization Method for Learning Binary Compact Codes," CVPR'13.
↓好きなキーワードを入れてね!
Hashingの基本
"Semi-Supervised Hashing for Large Scale Search," TPAMI'12.
sgn(Wx - t) により b-bit バイナリコードを求める手法が多い
d次元入力ベクトル
射影行列 (b x d) 定数項
↑この射影行列をいかに求めるかに帰着
基本戦略は変換後のバイナリコード間のハミング距離に
元の特徴ベクトル間の距離を反映させる
※SHのようにlaplacian eigenmaps等で
射影した空間でHashingするものも多い
e.g., AGH http://www.slideshare.net/beam2d/rinko2011-web
k-means hashingの位置づけ (1)
00 01 10 11
00 0 0.6 0.8 0.8
01 0.6 0 0.9 0.7
10 0.8 0.9 0 0.8
11 0.8 0.7 0.8 0
• 入力ベクトルを代表ベクトルのIDに符号化
• 代表ベクトル間の距離をLookup tableに保持
• Lookup tableの参照のみで2つの符号間の
距離を算出可能
Lookup table
k-means hashingの位置づけ (2)
• ベクトル量子化と同様に入力ベクトルを代表ベクトルに割り当て
• 各代表ベクトルにバイナリコードが割り当てられており、
そのバイナリコードに符号化する
• クエリベクトルも同様にバイナリ化、ハミング距離で類似探索
• ベクトル量子化は量子化誤差の観点で優秀&POPCNT高速探索
符号化効率 距離計算速度
余談:量子化あれこれ
• ベクトル量子化
• 階層量子化
• 残差量子化
• 直積量子化
• スカラ量子化(ハッシング)
符号化効率
Lookup table等で現実的に距離計算ができる
k-means hashingのコンセプト
オリジナルベクトル
x, y 間の距離
xを量子化した
ベクトル
xが量子化された
代表ベクトルのID
ベクトル量子化
k-means hashing
スケーリング定数 i, j番目の代表ベクトルに割り当てられた
バイナリコード間のハミング距離
代表ベクトルID→バイナリコードへの割り当て
(=permutation )を求める問題へ帰着
ナイーブなアプローチ
全ての代表ベクトルの組み合わせについて
代表ベクトル間の距離と割り当てられたバイナリコードを
基にした距離の二乗誤差を最小化とする
を求める
1) k-meansにより2b個の代表ベクトルを作成
2) 最適な代表ベクトルへのバイナリコードの割り当てを求める
• 計算量 O((2b)!) → b=4 の総当りで1日
• 代表ベクトル間の距離が任意の範囲をとる
(ハミング距離で近似することをケアしていない)
→ 総当りの最適化でも後述の手法より低性能
Affinity matrix d(・,・) と dh(・,・) の
フロベニウスノルム最小化
Affinity preserving k-means (1)
ハミング距離で近似することを考慮したk-means
通常のk-meansのコスト関数
Affinityに関する項を追加
Affinity preserving k-meansのコスト関数
(λ = 0 で通常のk-means)
ni: 代表ベクトル ci に割り当てられた
訓練ベクトルの数
Affinity preserving k-means (2)
1) Assignment step: {ci} を固定し、i(x) を最適化
k-meansと同様に最近傍の代表ベクトルに割り当て
2) Update step: i(x) を固定し、{ci} を最適化
Affinity項は {ci} が相互に関係しているので順に最適化
{ci}, i(x), s の初期化はPCA-Hashingを用いる
制約なし最適化、準ニュートン法で解く(matlabでfminunc!)
50~200
繰り返し
GIST, b=8
で20分
現実的には b≦8、それ以上のコードは直積量子化を利用
参考:Iterative quantization (ITQ)
http://www.cs.illinois.edu/homes/slazebni/slides/similarity_preserving_binary_codes.pptx
バイナリハッシングを量子化と捉える
量子化誤差が最小となる回転を求める → 直交プロクラステス問題
ITQではスケーリング係数sは最適化に影響しない
PCAH ITQ
コードブック:
(再掲)
実験
• オリジナルの特徴ベクトルのK近傍を正解とする
• バイナリコードのハミング距離で近傍探索を行い
上位X件に正解が何割カバーされているか
=再現率 (recall) で評価
• データセット:SIFT1M, GIST1M
– 他によく使われるのは
• CIFARデータセット http://www.cs.toronto.edu/~kriz/cifar.html
• MNISTデータセット http://yann.lecun.com/exdb/mnist/
– 近傍探索後、ラベルを正解としてMAPで評価することも
SIFT1M dataset
KMH: k-means hashing
ITQ: iterative quantization
MLH: minimal loss hashing
SH: spectral hashing
PCAH: PCA hashing
LSH: locality sensitive hashing
KMH
PCAH
MLH
KMH
LSH
• 32bitでPCAHが良い(SHも)
• 128bitではITQとLSHが良い
(LSHやSKLSHは直交条件がないので
ビットを増やすほど精度向上)
ITQ
SH
GIST1M dataset
KMH: k-means hashing
ITQ: iterative quantization
MLH: minimal loss hashing
SH: spectral hashing
PCAH: PCA hashing
LSH: locality sensitive hashing
• KMH, MLH, ITQが良い
• PCAHが32bitでも悪い
(固有値(分散)が大きく違うため?)
KMH
MLH
ITQ
PCAH
余談
“Optimized Product Quantization for Approximate Nearest Neighbor Search,” CVPR’13.
ITQ
PCA後にランダム回転
• PCA+ランダム回転でも結構良い
参考:直積空間の分割の最適化
“Optimized Product Quantization for Approximate Nearest Neighbor Search,” CVPR’13.
“Cartesian k-means,” CVPR’13.
どちらもアプローチはほぼ同じ(どちらもITQにinspireされている?)
特徴ベクトルを射影する回転行列と直積量子化コードブックを最適化
1) Rを固定して直積量子化のコードブックを最適化
2) 直積量子化コードブックを固定してRを最適化
http://www.robots.ox.ac.uk/~vgg/rg/slides/ge__cvpr2013__optimizedpq.pdf
参考:Asymmetric Hamming Distance
• バイナリコード間の距離の代わりに
クエリのオリジナルの特徴ベクトル(量子化前)と
DB内のバイナリコードの距離を計算
• 直積量子化でも利用されている(こちらのほうが自然)
"Asymmetric Hamming Embedding," ICMR'11.
"Asymmetric Distances for Binary Embeddings," CVPR'11.
"Product Quantization for Nearest Neighbor Search," TPAMI'11.
まとめ
• k-means hashing: ベクトル量子化の
符号化効率とバイナリ特徴の高速な類似探索
• PCA+ランダム回転のハッシュでも結構良い

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
 
Crfと素性テンプレート
Crfと素性テンプレートCrfと素性テンプレート
Crfと素性テンプレート
 
Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門Halide による画像処理プログラミング入門
Halide による画像処理プログラミング入門
 
[DL輪読会]Non-Autoregressive Machine Translation with Latent Alignments
[DL輪読会]Non-Autoregressive Machine Translation with Latent Alignments[DL輪読会]Non-Autoregressive Machine Translation with Latent Alignments
[DL輪読会]Non-Autoregressive Machine Translation with Latent Alignments
 
Graphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data ScienceGraphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data Science
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
lsh
lshlsh
lsh
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
 
【DL輪読会】Generative models for molecular discovery: Recent advances and challenges
【DL輪読会】Generative models for molecular discovery: Recent advances and challenges【DL輪読会】Generative models for molecular discovery: Recent advances and challenges
【DL輪読会】Generative models for molecular discovery: Recent advances and challenges
 
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料 「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
正準相関分析
正準相関分析正準相関分析
正準相関分析
 
SHAP値の考え方を理解する(木構造編)
SHAP値の考え方を理解する(木構造編)SHAP値の考え方を理解する(木構造編)
SHAP値の考え方を理解する(木構造編)
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
Mean Teacher
Mean TeacherMean Teacher
Mean Teacher
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ
 
距離とクラスタリング
距離とクラスタリング距離とクラスタリング
距離とクラスタリング
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 

Semelhante a K-means hashing (CVPR'13) とハッシング周り

CV勉強会@関東 3巻3章4節 画像表現
CV勉強会@関東 3巻3章4節 画像表現CV勉強会@関東 3巻3章4節 画像表現
CV勉強会@関東 3巻3章4節 画像表現
Yusuke Uchida
 
第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)
第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)
第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)
kanejaki
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
Tomoharu ASAMI
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
Takahito Tejima
 
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれマークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
Naoki Matsuda
 
20110904cvsaisentan(shirasy) 3 4_3
20110904cvsaisentan(shirasy) 3 4_320110904cvsaisentan(shirasy) 3 4_3
20110904cvsaisentan(shirasy) 3 4_3
Yoichi Shirasawa
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 

Semelhante a K-means hashing (CVPR'13) とハッシング周り (20)

Abstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminarAbstractive Text Summarization @Retrieva seminar
Abstractive Text Summarization @Retrieva seminar
 
CV勉強会@関東 3巻3章4節 画像表現
CV勉強会@関東 3巻3章4節 画像表現CV勉強会@関東 3巻3章4節 画像表現
CV勉強会@関東 3巻3章4節 画像表現
 
第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)
第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)
第18回コンピュータビジョン勉強会@関東「ICCV祭り」発表資料(kanejaki)
 
ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)ICCV 2019 論文紹介 (26 papers)
ICCV 2019 論文紹介 (26 papers)
 
実践QBVH
実践QBVH実践QBVH
実践QBVH
 
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdw
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれマークアップエンジニア だからうれしい Fireworksの使い方あれこれ
マークアップエンジニア だからうれしい Fireworksの使い方あれこれ
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortex
 
20110904cvsaisentan(shirasy) 3 4_3
20110904cvsaisentan(shirasy) 3 4_320110904cvsaisentan(shirasy) 3 4_3
20110904cvsaisentan(shirasy) 3 4_3
 
Dat003 伸縮自在!.net ×_azure_sql_database_
Dat003 伸縮自在!.net ×_azure_sql_database_Dat003 伸縮自在!.net ×_azure_sql_database_
Dat003 伸縮自在!.net ×_azure_sql_database_
 
Dat003 伸縮自在!.net ×_azure_sql_database_
Dat003 伸縮自在!.net ×_azure_sql_database_Dat003 伸縮自在!.net ×_azure_sql_database_
Dat003 伸縮自在!.net ×_azure_sql_database_
 
【SSII2015】人を観る技術の先端的研究
【SSII2015】人を観る技術の先端的研究【SSII2015】人を観る技術の先端的研究
【SSII2015】人を観る技術の先端的研究
 
[DL Hacks] code_representation
[DL Hacks] code_representation[DL Hacks] code_representation
[DL Hacks] code_representation
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...
[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...
[DL輪読会]RobustNet: Improving Domain Generalization in Urban- Scene Segmentatio...
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類
 

Mais de Yusuke Uchida

Mais de Yusuke Uchida (20)

近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
 
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place SolutionSIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
SIGNATE オフロードコンペ 精度認識部門 3rd Place Solution
 
SIGNATE 鰹節コンペ2nd Place Solution
SIGNATE 鰹節コンペ2nd Place SolutionSIGNATE 鰹節コンペ2nd Place Solution
SIGNATE 鰹節コンペ2nd Place Solution
 
DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術
 
SuperGlue; Learning Feature Matching with Graph Neural Networks (CVPR'20)
SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)SuperGlue;Learning Feature Matching with Graph Neural Networks (CVPR'20)
SuperGlue; Learning Feature Matching with Graph Neural Networks (CVPR'20)
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習
 
Semi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learningSemi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learning
 
Deep Fakes Detection
Deep Fakes DetectionDeep Fakes Detection
Deep Fakes Detection
 
モデルアーキテクチャ観点からの高速化2019
モデルアーキテクチャ観点からの高速化2019モデルアーキテクチャ観点からの高速化2019
モデルアーキテクチャ観点からの高速化2019
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
Humpback whale identification challenge反省会
Humpback whale identification challenge反省会Humpback whale identification challenge反省会
Humpback whale identification challenge反省会
 
DeNAにおける先端AI技術活用のチャレンジ
DeNAにおける先端AI技術活用のチャレンジDeNAにおける先端AI技術活用のチャレンジ
DeNAにおける先端AI技術活用のチャレンジ
 
コンピュータビジョン技術の実応用とビジネス
コンピュータビジョン技術の実応用とビジネスコンピュータビジョン技術の実応用とビジネス
コンピュータビジョン技術の実応用とビジネス
 
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
 
深層学習を用いたコンピュータビジョン技術と運転行動モニタリングへの応用
深層学習を用いたコンピュータビジョン技術と運転行動モニタリングへの応用深層学習を用いたコンピュータビジョン技術と運転行動モニタリングへの応用
深層学習を用いたコンピュータビジョン技術と運転行動モニタリングへの応用
 
畳み込みニューラルネットワークの研究動向
畳み込みニューラルネットワークの研究動向畳み込みニューラルネットワークの研究動向
畳み込みニューラルネットワークの研究動向
 
PRMU研究会の今後のあり方について(NLP分野での取り組み紹介)
PRMU研究会の今後のあり方について(NLP分野での取り組み紹介)PRMU研究会の今後のあり方について(NLP分野での取り組み紹介)
PRMU研究会の今後のあり方について(NLP分野での取り組み紹介)
 

K-means hashing (CVPR'13) とハッシング周り

  • 1. K-means Hashing: an Affinity-Preserving Quantization Method for Learning Binary Compact Codes Yusuke Uchida (@yu4u) KDDI R&D Laboratories, Inc.
  • 2. 背景 • 画像特徴 – SIFT: 128次元, GIST: 960 (384) 次元, FV/VLAD: ~数万次元 – 1M~1B枚レベルの画像検索とかしたいお… – でも画像の特徴ベクトルそのものを利用すると メモリに乗らないし類似検索もおそいお… – だからコンパクトなバイナリコードに変換するお!(テンプレ) (面白いけど応用を気にしている人があんまいない印象) • バイナリ化のメリット – コンパクト+高速検索 (e.g., SSE 4.2 POPCNT) (参考)ビットを数える http://www.slideshare.net/takesako/x86x64-sse42-popcnt • 単純にユークリッド距離を近似することが目的の手法と supervisedでクラス分類を意識し距離学習も行う手法がある
  • 3. Hashing "Similarity search in high dimensions via hashing," VLDB'99. (LSH) "Spectral Hashing," NIPS'08. (SH) "Learning to Hash with Binary Reconstructive Embeddings," NIPS'09. (BRE) "Locality Sensitive Binary Codes from Shift-Invariant Kernels," NIPS'09. (SIKH) "Kernelized Locality-Sensitive Hashing for Scalable Image Search," ICCV'09. (KLSH) "Sequential Projection Learning for Hashing with Compact Codes," ICML'10. (USPLH) "Self-Taught Hashing for Fast Similarity Search," SIGIR'10. "CARD: Compact And Real-time Descriptors," ICCV'11. "Complementary Hashing for Approximate Nearest Neighbor Search," ICCV'11. "Coherency Sensitive Hashing," ICCV'11. "Hashing with Graphs," ICML'11. (AGH) "Minimal Loss Hashing for Compact Binary Codes," ICML'11. "Random Maximum Margin Hashing," CVPR'11. "Iterative Quantization: A Procrustean Approach to Learning Binary Codes," CVPR'11. (ITQ) "LDAHash: Improved Matching with Smaller Descriptors," PAMI'12. (LDAH) "Isotropic Hashing," NIPS'12. "Supervised Hashing with Kernels," CVPR'12. "Spherical Hashing," CVPR'12. "Multidimensional Spectral Hashing," ECCV'12. "Double-Bit Quantization for Hashing," AAAI'13. "Variable Bit Quantisation for LSH," ACL'13. "Hash Bit Selection: a Unified Solution for Selection Problems in Hashing," CVPR'13. "Compressed Hashing," CVPR'13. "Inductive Hashing on Manifolds," CVPR'13. "Learning Binary Codes for High-Dimensional Data Using Bilinear Projections," CVPR'13. "K-means Hashing: an Affinity-Preserving Quantization Method for Learning Binary Compact Codes," CVPR'13. ↓好きなキーワードを入れてね!
  • 4. Hashingの基本 "Semi-Supervised Hashing for Large Scale Search," TPAMI'12. sgn(Wx - t) により b-bit バイナリコードを求める手法が多い d次元入力ベクトル 射影行列 (b x d) 定数項 ↑この射影行列をいかに求めるかに帰着 基本戦略は変換後のバイナリコード間のハミング距離に 元の特徴ベクトル間の距離を反映させる ※SHのようにlaplacian eigenmaps等で 射影した空間でHashingするものも多い e.g., AGH http://www.slideshare.net/beam2d/rinko2011-web
  • 5. k-means hashingの位置づけ (1) 00 01 10 11 00 0 0.6 0.8 0.8 01 0.6 0 0.9 0.7 10 0.8 0.9 0 0.8 11 0.8 0.7 0.8 0 • 入力ベクトルを代表ベクトルのIDに符号化 • 代表ベクトル間の距離をLookup tableに保持 • Lookup tableの参照のみで2つの符号間の 距離を算出可能 Lookup table
  • 6. k-means hashingの位置づけ (2) • ベクトル量子化と同様に入力ベクトルを代表ベクトルに割り当て • 各代表ベクトルにバイナリコードが割り当てられており、 そのバイナリコードに符号化する • クエリベクトルも同様にバイナリ化、ハミング距離で類似探索 • ベクトル量子化は量子化誤差の観点で優秀&POPCNT高速探索 符号化効率 距離計算速度
  • 7. 余談:量子化あれこれ • ベクトル量子化 • 階層量子化 • 残差量子化 • 直積量子化 • スカラ量子化(ハッシング) 符号化効率 Lookup table等で現実的に距離計算ができる
  • 8. k-means hashingのコンセプト オリジナルベクトル x, y 間の距離 xを量子化した ベクトル xが量子化された 代表ベクトルのID ベクトル量子化 k-means hashing スケーリング定数 i, j番目の代表ベクトルに割り当てられた バイナリコード間のハミング距離 代表ベクトルID→バイナリコードへの割り当て (=permutation )を求める問題へ帰着
  • 9. ナイーブなアプローチ 全ての代表ベクトルの組み合わせについて 代表ベクトル間の距離と割り当てられたバイナリコードを 基にした距離の二乗誤差を最小化とする を求める 1) k-meansにより2b個の代表ベクトルを作成 2) 最適な代表ベクトルへのバイナリコードの割り当てを求める • 計算量 O((2b)!) → b=4 の総当りで1日 • 代表ベクトル間の距離が任意の範囲をとる (ハミング距離で近似することをケアしていない) → 総当りの最適化でも後述の手法より低性能 Affinity matrix d(・,・) と dh(・,・) の フロベニウスノルム最小化
  • 10. Affinity preserving k-means (1) ハミング距離で近似することを考慮したk-means 通常のk-meansのコスト関数 Affinityに関する項を追加 Affinity preserving k-meansのコスト関数 (λ = 0 で通常のk-means) ni: 代表ベクトル ci に割り当てられた 訓練ベクトルの数
  • 11. Affinity preserving k-means (2) 1) Assignment step: {ci} を固定し、i(x) を最適化 k-meansと同様に最近傍の代表ベクトルに割り当て 2) Update step: i(x) を固定し、{ci} を最適化 Affinity項は {ci} が相互に関係しているので順に最適化 {ci}, i(x), s の初期化はPCA-Hashingを用いる 制約なし最適化、準ニュートン法で解く(matlabでfminunc!) 50~200 繰り返し GIST, b=8 で20分 現実的には b≦8、それ以上のコードは直積量子化を利用
  • 13. 実験 • オリジナルの特徴ベクトルのK近傍を正解とする • バイナリコードのハミング距離で近傍探索を行い 上位X件に正解が何割カバーされているか =再現率 (recall) で評価 • データセット:SIFT1M, GIST1M – 他によく使われるのは • CIFARデータセット http://www.cs.toronto.edu/~kriz/cifar.html • MNISTデータセット http://yann.lecun.com/exdb/mnist/ – 近傍探索後、ラベルを正解としてMAPで評価することも
  • 14. SIFT1M dataset KMH: k-means hashing ITQ: iterative quantization MLH: minimal loss hashing SH: spectral hashing PCAH: PCA hashing LSH: locality sensitive hashing KMH PCAH MLH KMH LSH • 32bitでPCAHが良い(SHも) • 128bitではITQとLSHが良い (LSHやSKLSHは直交条件がないので ビットを増やすほど精度向上) ITQ SH
  • 15. GIST1M dataset KMH: k-means hashing ITQ: iterative quantization MLH: minimal loss hashing SH: spectral hashing PCAH: PCA hashing LSH: locality sensitive hashing • KMH, MLH, ITQが良い • PCAHが32bitでも悪い (固有値(分散)が大きく違うため?) KMH MLH ITQ PCAH
  • 16. 余談 “Optimized Product Quantization for Approximate Nearest Neighbor Search,” CVPR’13. ITQ PCA後にランダム回転 • PCA+ランダム回転でも結構良い
  • 17. 参考:直積空間の分割の最適化 “Optimized Product Quantization for Approximate Nearest Neighbor Search,” CVPR’13. “Cartesian k-means,” CVPR’13. どちらもアプローチはほぼ同じ(どちらもITQにinspireされている?) 特徴ベクトルを射影する回転行列と直積量子化コードブックを最適化 1) Rを固定して直積量子化のコードブックを最適化 2) 直積量子化コードブックを固定してRを最適化 http://www.robots.ox.ac.uk/~vgg/rg/slides/ge__cvpr2013__optimizedpq.pdf
  • 18. 参考:Asymmetric Hamming Distance • バイナリコード間の距離の代わりに クエリのオリジナルの特徴ベクトル(量子化前)と DB内のバイナリコードの距離を計算 • 直積量子化でも利用されている(こちらのほうが自然) "Asymmetric Hamming Embedding," ICMR'11. "Asymmetric Distances for Binary Embeddings," CVPR'11. "Product Quantization for Nearest Neighbor Search," TPAMI'11.
  • 19. まとめ • k-means hashing: ベクトル量子化の 符号化効率とバイナリ特徴の高速な類似探索 • PCA+ランダム回転のハッシュでも結構良い