どうも、Yuki Hiraiです。
先日、「類似画像検索システムを作る」という勉強会に参加してきました。
今日はそこで知った
類似画像検索関連のワード・ツール
をメモ程度に残していこうと思います。
pHashは
画像などのメディアデータのハッシュを計算するアルゴリズム群
のことをさします。
つまり、文字をハッシュ化して一意の文字列にするのと同じように
画像のようなメディアデータを一意の文字列=ハッシュで表現できるようにしているアルゴリズム
といったところでしょうかw
Pythonだと
pip install imagehash
で使用できます。
64bitの特徴量が出力されて16進数で表示されます。
誤検出が少ないので
でよく使われているとのことです。
ハミング距離
が近い画像を検出できるとのことで
例えば
とかでも検出できるようです。
ハミング距離については以下のリンクが参考になります。
ref: ハミング距離
pHashを利用した類似度の計算をしている記事があるので
よければ参考にしてみてください。
ref: Perceptual Hashを使って画像の類似度を計算してみる
画像検索については
というものがあります。
TBIRは画像のメタ情報にあるテキストを確認して
テキスト検索するものです。
対して、CBIRは画像の画素情報から特徴を抽出して検索を行うものです。
詳しくは以下の記事が参考になります。
ref: 類似画像検索についての調査結果
画像の特徴量を抽出するのに使用されるアルゴリズムはいくつかあります。
などなど
これらにいては以下の記事でざっくりまとまってました。
ref: iOS / OpenCV 3.0 で画像の特徴点を検出する(AKAZE, SIFT, SURF, ORB)
他にも
などのキーワードについても少し触れておくといいかもです。
SHIFTやSURFについては以下のスライドにわかりやすく
まとめられています
ref: 画像認識の初歩、SIFT,SURF特徴量
近似最近傍探索は
検索対象のベクトルからもっとも近いベクトルを検索する技術です。
Faissといったお手軽なツールも存在します。
ref: Facebook Researchのfaissで類似検索
メルカリはこちらのFaissを使用して類似画像検索システムを構築しているようです。
メルカリは類似画像検索システムを構築するにあたって
Facebook AI ResearchのFaissを使ってるみたい
オープンソースの機械学習ライブラリ🙋♂️https://t.co/gh7sXSNItx— SEKAI NO HIRAI👨💻Programmer (@yabaiwebyasan) December 4, 2018
他にもFLANNやAnnoy,NMSLIBなどがあります。
ref: 高速最近傍点探索ライブラリFLANNを使ってみる
ref: Chainer とAnnoyを使った 類似画像検索 【入門】
このimage-matchというオープンソースライブラリがお手軽に使えるそうです。
ref: EdjoLabs/image-matc
あと少しインフラ構築に力をいれれば
以下のソースコードが類似画像検索機能の構築の参考になります。
ref: alexklibisz/elastik-nearest-neighbors
画像検索まわりはほぼ未知なので、
新しい発見がたくさんあって楽しかったですw
自分でも簡単にOpenCVを使って類似画像検索ツールをつくったりしてみました。
だれでもお手軽に画像をつかってあれこれできる時代になってきてますね