見出し画像

Google ImagesやBingなど画像検索エンジンの特徴と比較

Androidユーザーの皆さん、Googleレンズは使っていますか?手元に画像はあるけど『こんな感じのロゴを探してる』『これに似た家具を通販で見つけたい』『この画像のデスクトップ用の壁紙サイズが欲しい』みたいな時に大変便利ですよね。

Googleレンズはアンドロイドのアプリですが、同じ機能は通常のGoogle検索にも実装されています。こうした画像、写真をアップして似た画像・同じ画像を検索することを、英語では“Reverse Image Search”、その為の検索エンジンを“Reverse Image Search Engine” (以下、単に『エンジン』)と呼びます。実はこのエンジン、Googleレンズだけではないってご存知でしたか?メジャーな無料サービスだけでも数種類あります。

本稿では、Googleを筆頭とする“Reverse Image はなくSearch Engine”とその競合サービスについて触れ、それぞれの強みやオススメの用途を紹介していきます。海外のブログやメディアではこれらエンジンの比較・検証がいくつかされているので、今回その分析内容をまとめ、日本人ユーザーとしておススメの画像検索エンジンを書いています。

似た画像を探す仕組み ― ”fingerprint”

各エンジンを見る前に、画像認識技術の仕組みを紹介します。エンジンはどうやってユーザーの提示した画像と同じ、または似た画像を瞬時に検索しているのでしょうか?

エンジンによって細かいアルゴリズムは違いますが、概ね以下の流れで動いています。

まず、コンピューターに膨大な画像を見せて学習させます。例えば車を例に取ると、各画像に写っている“どの要素が車なのか”“どれが車じゃないのか”をひたすら学習させていきます(当然車以外の画像も見せることで“車じゃないものが何か”を学ばせます)。所謂アノテーションと呼ばれる作業ですが、ここでコンピューターは車の形、色、線、テクスチャ、画像中の他の要素との違いやその関係性といった様々な情報から、その画像のユニークな“指紋”を作り出します。

これが所謂“fingerprint”と呼ばれるアルゴリズムで、ユーザーが提示した画像と似たものがデータベース上にあるか、いわば『指紋の照合』のような作業を無数にしていくのが本稿で紹介するエンジンの基本的な仕組みです。

後に見ていくように、ボーンデジタル画像が得意だったり風景写真が苦手だったりとエンジンによって照合の精度にはバラつきがあります。


Google Images  ― おおむねこれで解決するが、完璧ではない

Googleの画像検索タブから、URLないし画像のアップロードで手軽に活用出来るGoogle Images。Google自体使い慣れたサービスなので信頼性や利便性は申し分ありませんが、“Reverse Image Search Engine”として比べると惜しい点があります。

例えば、ある比較記事では風景の画像が苦手ジャンルとして挙げられていました。具体的には複数の要素が写った画像の場合、例えば『湖と遠くに見える山をバックにした家の写真』で似た画像を検索すると、シンプルに家だけフォーカスした画像(=山や湖が含まれない)のみ出てくる、というように、各要素の抽出は出来るものの画像全体の構成を踏まえたものは出てきにくいという結果が出ました。

記事によっては後述のYandexを第一に使うべき、という結論もありましたが、全体的な精度はYandexに肉薄しており気にするレベルではありません。少なくとも日本人はGoogle Imagesをプライマリとして活用するのがベストかなと思います。理由は次項で。

Yandex  ― 精度は高いが、地域に偏りがある

Yandexと言えば、Web界隈の方は検索エンジンとして認識しているかも知れません。機能自体は特段Google Imagesと変わった部分はなく、検索結果のUIも似ています。

しかし各比較記事において、画像検索の精度はこのYandexが最高のパフォーマンスを出していました。

画像1

 例えば上記家の写真の検証では、Google Imageが該当物件を探し当てられなかったものの(似た家は出てきました)(参照:Bellingcat)

画像2

Yandexはピッタリ当ててきたどころか、何と同じ家を違う方角から撮影した画像までサジェストしてきています。(参照:Bellingcat)

簡単な検証でしたが論調は概ねどの記事も同じです。参照したのは英語圏のメディアでしたが、多くの記事でYandexを最高のエンジンとして結論づけていました。

しかしYandexには非常に偏った特徴があります。検索結果がロシアや東ヨーロッパの画像に集中しやすいのです。先ほど比較に使った家の写真、実はロシアの物件で、このようにロシア周辺地域の画像ならローカルでも高い精度を誇るんですが、東アジアなど地理的にも遠い地域となると微妙な結果となります。

少し面白い検証があります。ある比較記事で出されていたセブ島の街並みの画像。Yandexでは検索すると、主にタイを中心とした東南アジアの類似画像ばかり表示される結果となりました。

大体理由は見当が付くと思いますが、ロシア周辺の情報が多いのはYandexが同国のサービスであり、ユーザーも圧倒的にこの地域が多い為と思われます。またセブ島の例でタイが多く出てきたのは、ロシア人にとってタイが人気の観光スポットだから、つまりYandexのユーザーが多く情報を上げている地域だから、というのが元記事の意見でした。最高精度の機械学習技術を持ちながら、元となるデータが偏っているとは…惜しいですね。

これは仮説ですが、英語圏メディアで精度の高さを評価されたのは、実証に使った画像が英語圏(≒ヨーロッパ)の画像だからかな、という印象です。町だけでなく人物も同様で、例えば

画像3

▲wikipediaにあった宇多田ヒカルさんの画像で検索した結果。
左上3枚は本人でしたが、4枚目は何とアフリカ系のダンサー。その他ヒスパニック系や東南アジア系らしき人物の画像が続き、お世辞にも高い精度とは言えません。しかsも最初の3枚は同じライブの写真と思われ、宇多田さんの顔認識に成功した画像は1枚も無いのかもしれません。

画像4

▲こちらはGoogle Imagesの結果。本人率100%でした(卒アルの写真から最新曲PVのキャプチャまで載せるというバリエーションの豊富さ)。

乱暴に言えば、ロシアや英語圏での精度が高いのはそれだけ同地域(ユーザー)の画像の割合が高いから、ということでしょうか。アルゴリズムの詳細が明かされていないので確定的なことは分かりませんが、少なくとも地域性は重要な要因と言えそうです。

なお、Yandexは一応英語対応はしているのですが検索結果はロシア語が目立ち、画像のキャプションやアンカーリンクはほぼ読めません(笑)。日本語となると絶望的。

という訳で、Yandexは精度こそ非常に高いレベルにあるものの、日本人が日常的に使うのはかなり厳しそうです。クローリングされる画像やサイトが増えるにつれ私達にも恩恵が得られるようにはなるかも知れません。海外での評価は素晴らしいのでテクノロジー自体には注目していきたいですね。

Bing Image Search ― 精度や画像数は劣るが、ユニークな機能あり

Bingのエンジンは2014年にリリース。SEOをかじっている方ならご存じの通り、同じ検索エンジンでもクローラーはGoogleに比べると…ですが、これは画像検索でも同様です。いずれの比較記事でも、風景・人物・ロゴなど各ジャンルの画像検索の精度において、Google ImagesやYandexには及びませんでした。

しかし精度の話から少し逸れますが、Bingには他エンジンに無い機能が2つあります。1つは結果一覧の中から人をフィルタリング出来る『人物フィルター』機能です。

画像5

▲例えば“Paul Smith”で検索すると、スミス本人、プロダクト、店舗など様々な画像が表示されます

画像6


▲フィルターを適用すると人物の画像だけになりました。恐らく顔を認識した画像のみ表示してるのでしょう。

ちなみに人物フィルターには2種類あり、上画像の『肩から上』の他に『顔のみ』が使えます。こちらは文字通り首から上だけの画像を並べた感じですが、

画像7

このフィルターで“starbucks”を検索するとちょっと怖い一覧になりました…必ずしも本物の人間を出す訳ではないことに注意ですね。

とはいえ人物を抽出することにおいては非常に高い精度と言うか、余計な画像は出ませんでした。顔や人物を検索する際には非常に便利なエンジンです!

もう1つ、BingはデフォルトでOCR機能が付いています。

画像8

▲検索すると、文字認識した箇所から自動でテキストを抽出してくれます。

トヨタ社ロゴのように有名かつ視認性の高い画像なら問題ありませんが、検証してみるとフクロウの瞳から文字を認識したりしていました。なので当然完璧ではありませんが、ある程度明瞭に写ったゴシック体の文字ならほぼ問題無く文字起こししてくれます。

ただ疑問なのが、画像検索においてOCRがどう役に立つのか…上手い使い方をご存じの方は教えていただきたいです。


Tineye ― 『同じ画像の加工編集版』に特化

カナダのエンジンTineyeは創業した2008年以来、画像検索エンジンの開発を続けてきた業界の最古参です。利用するアルゴリズムは他エンジンと大差ありませんが、機能や用途が他のエンジンと色々違っているため、単純に比べることは出来ません。

Tineyeには類似する画像まで検索する機能がありません。またユーザーが個人的に撮影した画像、つまりオンラインに上がっていない画像で検索する機能もありませんし、FacebookなどのSNSに投稿された画像もエンジンのクローリング対象外です。

というのも、Tineyeのメインプロダクトは食品ラベルの識別やオンライン上にアップされた画像の追跡といった画像認識テクノロジーの提供で、APIを使えば自社サービスオリジナルの画像検索エンジンを作ることも出来ます。Google ImageやYandexのように『ユーザー個人が撮った有象無象の写真』は想定されていませんし、そもそもTineyeのプロダクトには不要な機能なのです。

逆に言えば、既にオンラインに上がっている画像であればサイズや色、形が変わっていても高い精度を誇ります。類似画像の検索は出来ませんが、大元が全く同じ画像ならかなり有用です。

とある検証記事ではGoogle、Yandex、Bingいずれのエンジンでも検索できなかったボーンデジタルのロゴを唯一発見していました。

画像9


▲比較記事で検証されていたロゴ(キャプチャはTineye)。他のエンジンでは探せませんでした。

その他、軒並みオンラインに上がっている画像に関しては素晴らしい成果を上げました。一方でユーザーが適当に撮影した写真は、被写体が有名で何万枚もオンライン上にある建物でも同じものを発見出来ませんでした。そういう使われ方を想定していないので仕方ないのですが。。。

またいくらオンライン上にあっても基本はクローリング。個人的に知っている幾つかのマイナーなWebサイトの画像も見つけることは出来ませんでした。しかし、繰り返しになりますがWebサイトに使われている画像やロゴを探すなら利用の価値は十分にあります。

Visual Search (Pinterest) ― アパレルやインテリアを探すならおススメ?

以前みゃふの記事でも紹介したピンタレストの画像検索機能。こちらも例外的で、対象となる画像はPinterest内のみ。これまで見てきたどのエンジンよりも検索出来る画像が少ないかも知れません。

Visual Searchで使われているディープラーニングは以下記事で解説していますが、要はアノテーション用のデータがPinterestのコンテンツなので、得意なジャンルは自ずと決まってきます。

Pinterestはあくまでアイデアを探すプラットフォームであり、その点通常の検索エンジンとは大きく違うことは上記事でも触れました。入力した画像と全く同じものが出る必要は無く『この照明、部屋に飾ったらどんな感じだろう?』『この柄のマフラーを活かすコーデはないかな?』みたいに、1つのプロダクトについて様々な使い方、見え方を提示するのが同サービスの大きな役割と言えますし、その点ではどのエンジンより精度・使い勝手共に大きく優れています。

逆に言えば、そうしたアイデアを探す用途以外では向いていないかも知れません。例えば、風景の写真で検索した際には画像内の要素の認識にやや難がありました。仮に正確に認識出来ても基本は“ピン”しか表示されない為、情報量としてはGoogleやBingに劣ります。“正確な答え”を求めたいなら他のエンジンを使いましょう。


番外:reverseimagesearch.com

色々見てきましたが、おおむねGoogle Imagesが使いやすいのではと思います。ただ、ケース次第で精度に違いが出てしまうなら、最初から複数のエンジでIndeedのように複数に跨って検索出来るサービスは無いでしょうか?

探したところ、Google、Yandex、Bingそして中国の検索エンジンであるBaiduの4つで同時に画像検索をしてくれるサービスがありました。名前はreverseimagesearch.com。

画像10

▲トップページ。広告が多く、特にスマホだと操作に支障が出るレベル…(画像:HPよりキャプチャ)

ただ、正直このサイトはオススメしません。確かに一度の検索で4つの結果を出してはくれるんですが、

画像11

▲検索結果(画像:HPよりキャプチャ)

このようにサムネイルが並ぶ訳ではなく各検索結果への『ボタン』が表示されるだけで、それぞれの画像を見るにはワンクリック挟む必要があります。なおリンク先は各エンジンの検索結果、つまり普通にそれぞれのエンジンで調べた際に出る結果が表示されるだけです。これならいっそエンジンを別タブで並べといて順に検索した方が早いかも知れません。

また個人的にはスマホ版で広告の位置や量がうっとおしかったり、アクセスの度にreCaptchaを3回も繰り返さなきゃいけなかったりと少しストレスを感じます。いくつかの記事で言及されていたサイトなんですが、どうも操作性に難がありますね…

最後に

繰り返しになりますが、基本的に手元の画像データで検索したい時はGoogle Imagesがおススメです。

・顔や人物を探す…Bing
・アイデアを探す…Pinterest
・ロシアや東ヨーロッパの画像…Yandex
・Web上の画像の違うサイズや色…TinEye

という一応の使い分けは可能ですが、とにかく画像のバージョン違いを大量に探す必要がある、などの特殊なシチュエーションならともかく、普段使いならわざわざ複数エンジンで探さなくともGoogle Imageで事足りるでしょう。

検証では勿論、今回参照した英語圏の比較記事も、各エンジンの精度を正当に評価する上では圧倒的にサンプル数が足りません。概ねの傾向はこれまで書いてきた通りだと思っていますが、細かいジャンルによっても差は出てくるでしょうから、一つの情報として見ていただければ嬉しいです。

おまけ:検索精度を上げるために出来ること

最後に画像検索の精度を上げるためにユーザー側で出来ることをご紹介します。

①画像を回転してみる
ケースとしては少ないかも知れませんが、本来より90°傾いているなどの画像は類似画像との照合が難しくなります。もしエンジンで画像を使って検索する際には、向きを適切に回転させてから検索しましょう。

②解像度を上げる
一般的に、画像検索エンジンでは200×200ピクセル以下の検索パフォーマンスが悪いと言われています。ありふれたモチーフでも画像がガビガビだと認識してくれません。可能な限り高画質かつサイズの大きい画像を使いましょう。

③色や形を変る
それでも難しければ手元の画像編集アプリで画像の色合い、形などを変えてみましょう。自分ではしっかり被写体を撮ったつもりでも、エンジン側では背景や画像中の他の要素と見分けられないケースがあります。こういう時は画像中の調べたい要素をこちらでトリミングし、余計な情報が少ない状態で検索してみることをおすすめします。

参照サイト

https://www.domaintools.com/resources/blog/a-brief-comparison-of-reverse-image-searching-platforms
https://www.bellingcat.com/resources/how-tos/2019/12/26/guide-to-using-reverse-image-search-for-investigations/
https://buddinggeek.com/yandex-reverse-image-search/
https://yandex.com/company/technologies/vision/
https://research.securitum.com/comparison-of-reverse-image-searching-in-popular-search-engines-osint-hints/
https://tineye.com/
https://www.reverseimagesearch.com/
https://www.maketecheasier.com/how-reverse-image-search-work/

いいなと思ったら応援しよう!