はじめに
先日、Qiitaでこんな記事を見つけました。
AIに「ウォーリーを探せ!」のような画像を渡すと、探している人物の位置を一瞬で返してくれるらしい。
これは面白い!!
せっかくなので、自分でも試してみることにしました。
ただ、普通にウォーリーを探させるだけでは面白くありません。
そうだ、ひろゆきを探させよう。
ということで、たくさんの人物が描かれたイラストの中から「ひろゆき」を探すゲームを作ってみました。
さらに、せっかくなら複数のAIで競争させたい!
今回はJev、Clef、Claude Opus 5.5、そしてOpenCVの顔認識モデルの4手法を用意しました。
果たして、ひろゆきを最も速く、正確に見つけられるのは誰なのか?
まずは対決の様子をご覧ください!
実際に4つの手法を対決させた様子がこちらです!
各手法が5つのステージに挑戦し、ひろゆきの顔の位置を予測しています。
赤い枠がAIの予測位置、黄色の点線が正解位置です。
見ているだけでもなかなかシュールですが、実際に対決させてみると、予想以上に面白い結果になりました。
今回は、このゲームの仕組みと4つの手法の違い、そして実際の対決結果を紹介します!
ひろゆきを探せ!全5ステージ
まずは今回用意したステージを紹介します。
ルールは簡単。
たくさんの人物が描かれたイラストの中から、次の顔を見つけるだけ!
全部で5ステージあります。後半ほど難しくなるように作成したつもりですが、人間とAIで難しさの感じ方は違うかもしれません。
ぜひ皆さんも探してみてください!
Stage 1
まずは小手調べ!
Stage 2
続いて第2ステージ。
Stage 3
ここから少し難しくしていきます。
Stage 4
第4ステージ!
Stage 5
いよいよ最終ステージ!
さて、全部見つけられたでしょうか?
人間なら、時間をかけて探すという方法があります。
では、AIの場合はどうでしょう?
今回の4手法は、それぞれ異なる方法でひろゆきを探しています。
今回の挑戦者たち
今回参戦するのはこちらの4手法です!
| 挑戦者 | ひろゆきの探し方 |
|---|---|
| Jev 1.14.0 | Box機能で画像から直接位置を予測 |
| Clef | Choice機能で顔の座標を予測 |
| Claude Opus 5.5 | 画像を読み取って位置を回答 |
| YuNet + SFace | 顔を検出し、参照画像との類似度で探す |
この中で少し異質なのが、YuNet + SFaceです。
ほかの3つは、画像を入力して対象の位置を回答してもらう方式です。
一方、YuNet + SFaceでは、まず画像内の顔を検出し、その候補の中から最もひろゆきに似ている顔を選びます。
いわば、顔を探す係と、ひろゆきかどうか判定する係の分業制です。
Jev:Box機能で直接探す
今回の実験のきっかけになったのがJevです。
Jevには画像から対象の位置を矩形で返すBox機能があります。
参照画像とステージ画像を渡し、対象の位置を直接予測してもらいます。
Clef:選択肢から位置を決める
ClefはCloudflare Workers AIで利用できるモデルです。
ただし、今回利用したCloudflare版のClefは、JevのようなBox形式の出力には対応していません。
そこで、顔枠の左・上・右・下という4つの座標を、それぞれ0〜100%の101択で選択させる方法を採用しました。
これは少し無理やりな方法でもありますが、果たしてうまくいくのでしょうか?
Claude Opus 5.5:画像を見て座標を回答
Claudeには参照画像とステージ画像を渡し、対象の顔の位置を座標で回答してもらいます。
今回はClaude Code経由で実行しました。
画像の内容を理解する能力が、今回のような細かい人物探索でも活躍するのか気になるところです。
YuNet + SFace:顔認識で探す
最後はOpenCVで利用できる顔検出・顔照合モデルです。
仕組みは次のとおりです。
- YuNetで画像内の顔を検出する
- SFaceで検出した顔の特徴量を抽出する
- 参照画像の特徴量と比較する
- 最も類似度が高い顔を選択する
今回のタスクは、顔を見つけることが目的です。
だったら顔認識専用モデルが有利なのでは?
ということで、こちらも参戦させてみました。
なお、今回は追加学習を行わず、公開済みモデルを使用しています。
いざ、対決!
各手法には同じ参照画像と5枚のステージ画像を渡し、対象の顔の位置を予測してもらいました。
ステージは1から5まで順番に処理します。
レース画面では各手法の処理を同時に開始し、最後のステージの処理を終えるまでの時間を測定します。
正解判定について
今回は顔の位置をピクセル単位で正確に特定することよりも、対象人物を見つけられたかを重視しました。
そのため、予測枠の面積が正解人物枠の2倍以下で、さらに以下のどちらかを満たした場合に正解としています。
- 予測枠の中心が正解の顔枠内にある
- 正解の顔枠の50%以上が予測枠に含まれる
不正な矩形や、枠を出力できなかった場合は不正解です。
正解枠は目視による概算のため、厳密な顔検出精度を測定する評価ではありません。
実験条件について詳しく見る
- 評価画像:5枚のイラスト
- 試行回数:各手法1回
- 入力:同じ参照画像とステージ画像
- 正解位置:各モデルには非公開
- Jev・Clef・Claude:共通の課題文とJPEG変換後の画像を使用
- YuNet + SFace:元画像を使用
- 実行時間:画像準備・起動・モデル読み込み・API通信などを含む実経過時間
- 乱数シード:固定なし
Jev・Clef・Claudeは出力形式が異なります。また、API利用とローカル実行では計測条件も異なります。
そのため、今回の結果は厳密に統制された推論速度・モデル性能のベンチマークではなく、各手法を組み込んだ探索システムの小規模な比較です。
結果発表!
それでは、気になる結果を見てみましょう!
| 手法 | 正解数 | 実行時間 |
|---|---|---|
| Jev | 1 / 5 | 3.81秒 |
| Clef | 0 / 5 | 18.36秒 |
| Claude Opus 5.5 | 4 / 5 | 51.22秒 |
| YuNet + SFace | 5 / 5 | 9.94秒 |
※2026年11月7日の保存済みレース結果。
なんと、OpenCVのYuNet + SFaceが5ステージすべてに正解!!
一方、最も速かったのはJevで、5ステージをわずか3.81秒で処理しました。
ただし、正解できたのは1ステージのみ。
Claude Opus 5.5は4ステージに正解しましたが、処理時間は51.22秒と最も長くなりました。
そしてClefは、残念ながら0ステージという結果に……。
同じ人物を探すタスクなのに、かなり違う結果になりました。
AIたちはどこを探していたのか?
ここで、各モデルが実際に予測した位置を見てみましょう。
単純な正解数だけでは分からない、各手法の違いが見えてきます。
Stage 1:予測結果
こちらがStage 1の正解位置です。
【ここにStage 1の4手法の予測画像を並べる】
赤い枠が各モデルの予測です。同じ画像を入力しても、手法によって予測する位置や枠の大きさに違いが現れます。
ほかのステージも見てみる
Jev・Clef・Claudeは出力形式が異なります。また、API利用とローカル実行では計測条件も異なります。
そのため、今回の結果は厳密に統制された推論速度・モデル性能のベンチマークではなく、各手法を組み込んだ探索システムの小規模な比較です。
例えば、Jevが対象とは別の顔を囲んだ例や、Claudeが正解できなかったステージなどがあれば、モデルごとの違いがより分かりやすくなります。
全ステージの予測を並べてみると、単に「正解した・しなかった」だけでなく、どのような位置を回答したのかを観察できます。
なぜOpenCVが全問正解できたのか?
今回の結果で特に興味深かったのは、YuNet + SFaceが全ステージを正解したことです。
この理由として考えられるのが、問題の分解方法の違いです。
JevやClaudeでは、画像全体を入力し、参照画像の人物がどこに存在するかを直接予測します。
一方、YuNet + SFaceでは、まずYuNetが顔の候補を検出し、SFaceがその中から最も似ている顔を選択します。
つまり、問題を次の2段階に分けています。
「顔はどこにある?」→「その中でひろゆきに最も似ているのは?」
今回のように、探す対象が顔であると分かっているタスクでは、この方法がうまく機能した可能性があります。
ただし、YuNetが顔を検出できなければ、その顔をSFaceで選ぶこともできません。
今回は5枚とも成功しましたが、画風や顔の大きさ、隠れ方が変わった場合にも成功するとは限りません。
Clefの0問正解は、画像認識が苦手だから?
ここも気になるポイントです。
今回のClefは、顔枠を直接出力するのではなく、4つの座標を選択肢から選ぶ方式でした。
例えば、画像のどこに人物がいるかを大まかに認識できていたとしても、それを正しい矩形の4座標として回答できるとは限りません。
つまり、今回の結果には「対象を認識する能力」だけでなく、「位置を指定した形式で出力する能力」も影響しています。
実際、READMEに記録した別の予備実験では、位置を答えるのではなく、画像内に対象が「いる/いない」を判定する課題も試しています。
ただし、これは今回のレースとは異なるタスクです。
したがって、今回の0/5だけでClefの画像理解能力そのものが低いと結論づけることはできません。
速さだけでは決められない
Jevは今回、3.81秒という最短時間で処理を完了しました。
一方、YuNet + SFaceは9.94秒で5問すべてに正解しています。
ここから分かるのは、今回の条件では最も速い手法と、最も多く正解した手法が異なったということです。
また、今回測った時間はAPI通信やモデル読み込みなども含むため、純粋なモデルの推論速度ではありません。
用途によって求めるものは異なります。速く回答が欲しいのか、それとも特定の顔を正確に発見したいのか。
どちらを優先するかによって、適切な手法も変わってきそうです。
おわりに
今回は、Qiitaで見かけた「Jevにウォーリーを探させる」という記事をきっかけに、4つの手法で「ひろゆきを探せ!」を開催してみました。
今回の結果を振り返ると、
- Jev:3.81秒で最速。ただし正解は1/5
- Clef:今回の座標選択方式では0/5
- Claude Opus 5.5:4/5に正解するも、51.22秒と時間がかかった
- YuNet + SFace:9.94秒で5/5の全問正解
という結果になりました。
もちろん、5枚の画像に対して各手法1回ずつという小規模な実験なので、これだけで一般的な優劣を決めることはできません。
ただ、今回の実験を通じて感じたのは、新しい汎用AIを使うことが、必ずしもすべてのタスクで最適とは限らないということです。
対象の位置を直接予測させるのか、顔検出と顔照合を組み合わせるのか。
同じ課題であっても、解き方によって結果は大きく変わります。
AIを使った開発では、モデルの性能だけでなく、問題をどう分解し、どんな形式で解かせるかも大切なのかもしれません。
それにしても、4つのAIにひろゆきを探させるという、よく分からない実験でしたが、思った以上に楽しめました(笑)











