顔検索は画像を比べているのではありません。1つ1つの顔を決まった長さの数字の並び——ベクトル——に変換し、そのベクトル同士を比べています。同じ人物を何年も間を空けて別の部屋で撮った2枚の写真は、画素をほとんど共有していなくても、近い位置に並ぶベクトルを生みます。
4つの段階を理解すれば、あるスクリーンショットはなぜ一瞬で当たり、別のものは何度やり直しても当たらないのかが、そのまま分かります。
第1段階の検出では、何が起きているのか?
検出が答えているのは、思われているより狭い問いです。この画像のどこに顔があり、その5つの要点はどこか、というだけの問いです。
検出器は画像を走査し、見つけた顔ごとに矩形と5つの特徴点の座標——左目、右目、鼻先、口の左端、口の右端——を返します。この段階にはYuNetを使っています。ここまでで人物についてのことは何も起きていません。純粋な幾何の話です。
検出に失敗すれば、その先すべてが失敗します。そして検出は、通常の意味での画質とはまったく関係のない理由で失敗します。口にかかった手、真横に近い横顔、検出器の最小サイズより小さい顔。
第2段階の位置合わせでは、何が起きているのか?
位置合わせは、その5つの特徴点を使って顔を基準の姿勢へ変形します。両目が水平に並び、決まった座標に、決まった大きさで載る形です。
傾いた頭と正面を向いた頭が比較可能になるのは、この工程のおかげです。エンコーダーに入るすべての顔は、同じ姿勢で、同じ大きさで、同じ領域に切り取られて届きます。その切り取りが何を捨てているかに注目してください。髪の大部分、服、背景、部屋。どれも人物を示す信号の一部ではありません。
よくある苛立ちの理由も、ここで説明が付きます。片目が隠れているなどの理由で特徴点が少しずれると、位置合わせは顔を誤った形に変形し、その結果できるベクトルは、自信ありげな答えの顔をして間違っています。
第3段階の符号化では、何が起きているのか?
エンコーダーのネットワークが、位置合わせ済みの顔を512個の数字からなるベクトルに変えます。ここにはArcFaceを使っています。このベクトルが、その顔の数学的な記述です。
これを役に立つものにしているのは学習の目的関数です。同じ人物から来たベクトルはきつく集まり、別人のベクトルは離れていくように学習されています。顔がどう見えるかを記述するようには訓練されておらず、それが誰かを記述するように訓練されているのです。
| 段階 | 入力 | 出力 | 失敗する条件 |
|---|---|---|---|
| 検出(YuNet) | 画像全体 | 矩形+5つの特徴点 | 顔が隠れている、小さすぎる、角度が極端 |
| 位置合わせ | 矩形+特徴点 | 規格化された顔の切り取り | 特徴点が不正確なとき |
| 符号化(ArcFace) | 位置合わせ済みの切り取り | 512個の数字のベクトル | 切り取りが劣化、ぼけ、または強く圧縮されているとき |
| 比較 | ベクトル | スコア付きの順位リスト | なし——常に何かを返します |
大事なのは最後の行で、そこには独立した節を割く価値があります。
第4段階の比較では、何が起きているのか?
比較は、あなたのベクトルと索引中のすべてのベクトルとのコサイン類似度を測り、近い順に返します。
コサイン類似度は0から1までの値で、2つのベクトルのなす角を表します。当サイトのデータでは、動画のキャプチャ向けに較正した閾値は0.40です。これを上回れば同一人物の可能性が高いものとして扱い、下回れば、たまたま最も近かっただけのノイズです。
この最後の点こそ、ベクトル検索について最も誤解されているところです。それは決して「何も返さない」ということをしません。 近い顔を10件くれと言えば10件返します。正解の人物が索引にまったくいなくても、です。本物の答えと、手持ちのなかで最も近かった他人とを区別できるものは、スコアだけです。スコアの付いていない順位リストは読めません。
何が見つかるかを索引が決めてしまうのはなぜか?
比較は、すでに符号化されたものしか並べられないからです。索引はウェブの検索ではなく、あらかじめ計算された固定のベクトルの集合です。
当サイトの索引には241,792件の顔があり、そのうち2,333件が名前の付いた女優に結びついています。106サイトのカバー画像とキャプチャから作ったものです(当サイト索引、2026-08 時点のスナップショット)。ここから2つの帰結が直接導かれます。
- 索引には存在するが名前と結びつけられなかった顔は、名前のない人物として返ってきます。これはよくあることで、類似女優のデータだけでも名前の付いていない人物への参照が7,004件あります。
- そもそも索引されていない顔は、どんなスコアでも返ってきません。それでもツールは、手持ちで最も近い候補を見せてきます。
述べておくべき限界: 当サイトの情報源は偏っています。名前の付いた女優2,333人のうち2,246人が、代表画像を単一のサイトから取っています。したがってカバー範囲が映しているのは、それらの情報源が公開したものであって、業界の全生産量ではありません。
これは画像検索とどう違うのか?
画像検索はあなたの写真そのものの複製を探します。顔検索は、別々の写真にまたがって同じ人物を探します。この2つは、成功する条件と失敗する条件が正反対です。
| 画像検索 | 顔検索 | |
|---|---|---|
| 比べるもの | 画像全体の指紋 | 顔のベクトル |
| その画像そのものがネット上にある必要 | ある | ない |
| 顔だけに切り取ると有利か | いいえ——かえって悪化します | はい——それが入力そのものです |
| 照明や姿勢の違いに耐えるか | ほとんど耐えません | そのために作られています |
| 自分で撮ったフレームで使えるか | いいえ | はい |
顔だけに切り取ったときに結果が悪くなるツールは、顔検索をしていません。これは一発で分かる、信頼できる判別法です。
関連する疑問
- Googleの画像検索がアダルト動画で使えないのはなぜか
- 1枚のスクリーンショットから動画を探す方法
- 検索ツールに写真をアップロードしても安全か?
- 画像検索ツールを比べる
- 顔検索が実際に使えるスクリーンショットの撮り方
この処理の流れをいちばん早く理解する方法は、動いているところを見ることです。ここに1フレームをアップロードしてください。検出と位置合わせはあなたのブラウザ内で動き、比較のために送られるのは切り取られた顔の領域と5つの特徴点だけで、元の画像が端末から出ることはありません。