esp32-eye の生成タイトルカード。サブタイトルは「ESP32-S3ボード2枚、MacBook 1台、MiniCPM-V 4.7の2サイズ」、チップには「1.5秒ごとに1Bゲート」「35Bの同一性チェック」「検証済みイベント89件」と表示され、背景には水飲み皿のそばの猫、その縁に載ったカメラボード、ノートPC、円形のAMOLEDボードを描いたフラットイラストがある。
Engineering & Research

esp32-eye: MiniCPM-V 4.7を2回呼び出す猫の水飲み碗モニター

著者

Gideon Frost

公開日

最新モデル · 20すべてのモデルを見る →
ベンチマーク:Artificial Analysis · 毎日更新
すべての記事に戻る

ESP32-S3ボード2枚、MacBook 1台、そしてサイズの異なる2つのMiniCPM-V 4.7が今では、どの猫がいつ水皿から水を飲んだかの記録を残している。カメラボードが水皿を監視し、MacBookが小さなモデルをローカルで動かして1つの狭い問いに答え、大きなモデルはイベントがすでに起きた後にだけ呼び出される。このビルドはesp32-eyeと呼ばれ、github.com/emwstudio/esp32-eyeにあり、2026年10月25日に公開された。OpenBMBが11月の第1週に披露し、ほとんどの人がそれを知るきっかけになった。

土台にあるモデルこそ、正確に押さえる価値のある部分だ。OpenBMBは2026年10月6日と7日にMiniCPM-V 4.7をHugging Faceへアップロードし、10月12日にモデルカードとApache-2.0ライセンスを公開し、10月15日にはPR Newswireを通じて英語のプレスリリースを出した。つまりこれはローンチの話ではなく、猫モニターもベンダーのベンチマークではない。これはこれまでにラボ外の誰かが記録した中で、このモデルの最も詳細な公開導入事例であり、しかもそれがたまたま家電製品なのである。

ビルドが実際に行うこと

ハードウェアは意図的に安価で、やや扱いにくいものになっている。Waveshare ESP32-S3-CAM-OV5640がボウルの縁に設置され、1024×768のJPEGフレームとマイク音声をWi-Fi経由でストリーミングする。2枚目のボード、Waveshare ESP32-S3-Touch-AMOLED-2.16はデスク上のディスプレイで、480×480のパネルにライブ映像の帯、4枚の猫カード、目標8杯に対する当日の杯数、そして猫が確認されたときの小さなハイライトアニメーションを表示する。頭脳はMacBookだ。FastAPIサーバーがストリームを受け取り、検出ロジックを実行し、SQLiteに書き込み、各イベントごとに5秒のリードイン、3秒のテール、元の音声を付けたMP4クリップを切り出す。

カメラの設置位置は最初に理解すべき点です。それが検出設計の全体を説明しているからです。レンズはボウルの縁から猫の顔を見上げているため、水面はフレームに入っていません。システムは猫が水を飲んでいる様子を見ることはできません。見えるのは猫がボウルの領域にいることだけで、残りは継続性と同一性から推測します。カメラプロジェクトを作ったことがある人なら、誠実さがたいてい失われるのはこういう場面だと知っているでしょう。ここではそのことがREADMEに明記されています。

どのモデルが実行される前のパイプラインは、空のボウルの参照フレームに対するグレースケール背景差分です。前景割合が15パーセント未満の場合、ニューラルネットワークを動かすことなくフレームは破棄されます。15パーセントを超える場合、ローカルの MiniCPM-V 4.7 1B に1つの質問を投げます。この画像に猫はいますか? 肯定的な回答と35パーセントを超える前景割合が揃うと、賛成票1票になります。3回連続の賛成票でイベントが開き、4回連続の反対票で閉じます。

2モデル分割は興味深いエンジニアリングだ

{{1}}ビジョンモデルを1.5秒ごとに永遠に実行し続けるのは悪い考えであり、このビルドもそれを悪い考えとして扱っている。{{/1}} {{2}}1Bは、ポート8080のOpenAI互換のllama-server上で、Q4_K_M量子化としてllama.cppを通じてローカルで動作する。{{/2}} {{3}}十分に安価なので、プロジェクトはこれを繰り返し呼び出す余裕があるが、それでも背景差分によって制御されており、空の部屋ではコストがかからない。{{/3}} {{4}}1Bの役割は意図的に狭く限定されている。存在の有無であって、個人の識別や行動ではない。{{/4}}

個体識別はコストの高い問いであり、イベントごとに一度だけ尋ねられる。イベントが終了すると、サーバーはクリップからフレームをサンプリングし、4匹の猫それぞれの参照写真とともに、ModelBest のクラウド API 経由で MiniCPM-V 4.7 35B-A3B に送信する。大規模モデルは、猫の識別子、信頼度、そのシーンが飲水シーンかどうかの yes/no を返す。飲水チェックに通らないフレームは破棄され、カウントされない。曖昧な識別結果は、最も近い猫に無理やり割り当てるのではなく unknown として保存され、クラウド呼び出しが失敗した場合、イベントは 1B の推測で補完されるのではなく、再試行経路に入る。

A screenshot of the Hugging Face model card for openbmb/MiniCPM-V-4.7-35B-A3B, captured 6 November 2026, showing 553,116 downloads last month, 1.11k likes, an apache-2.0 licence tag, a model size of 35B params in BF16, the on-device claim of 13+ tokens per second on an iPhone 17 Pro Max, Evaluation results of MMLU-Pro 83.45 and MathArena AIME 2026 76.46, and a sidebar line stating the model is not deployed by any Inference Provider.

この分業は、オンデバイス分野の文献が2年間主張してきたのと同じ論理であり、今やその裏付けも得られた。小規模モデルはセンサーであり、大規模モデルは審判である。コストモデルはそこから直接導かれる。1Bモデルはミリ秒とバッテリーで支払われ、35Bモデルはトークンで支払われ、トークン課金はフレーム数ではなく飲水イベント数に比例する。4匹の猫がいる家庭なら、それは1日数回の呼び出しにすぎない。

89の出来事が証明することと、証明しないこと

OpenBMBの投稿は、猫4匹の家庭で3日間にわたり89回の飲水イベントを手作業で確認し、すべての猫の個体識別が正しかったと報告している。これは実際の結果ではあるが、範囲の狭い結果でもある。この識別タスクは、システムがすでに参照写真を持っている猫の中から選ぶ、閉集合での4択である。オープンセットの再識別ではなく、100匹の猫についての主張でもなく、システムが見たことのない家でも機能するという主張でもない。

3日間で89件のイベントは、4匹の猫で1日あたり約30件、1匹あたり1日約7.5件に相当する。これは水分摂取量の研究としては妥当だが、誤り率を自信をもって推定するにはあまりにも小さすぎる。89回中89回正しいシステムでも、50回に1回は間違っている可能性がある。覚えておくべき数字は100パーセントではない。それは、通常使用の3日間で誰も訂正する必要がなかったということだ。

出所に関する注意点もある。著者はOpenBMBコミュニティのアンバサダーであり、ショーケースはOpenBMB自身のアカウントで実施された。だからといって結果が虚偽というわけではないが、検証は懐疑的な立場の人が設計したものではなく、第三者が再現したものでもないということだ。

なぜ1Bは猫を識別しないのか

READMEにはこのプロジェクト全体で最も有用な一文が書かれていて、それはネガティブな結果だ。見分けのつかない明るい色の三匹の猫を相手に、ローカルのMiniCPM-V 4.7 1Bは四匹のうち一匹を選び出すのが信頼できる精度ではなかった。チームは試してみて、四者択一の識別は信頼できないと分かり、当て推量を出荷するのではなく、個体識別を35Bに移した。

これは吟味する価値がある。なぜなら、小型視覚モデルの通常の売り込み方に反するからだ。OCRやチャートのベンチマークで高いスコアを出す15.5億パラメータのモデルが、固定カメラ視野の中で似た2匹の動物を見分けるのも自動的に得意とは限らない。細粒度の同一性判定は、圧縮された視覚トークン予算がまさに響く種類のタスクだ。2匹のトラ猫の違いは小さく、局所的で、平均化して消えやすい。この構成の答え、つまり簡単な問いには小型モデルを使い、難しい問いにはコストを払うという方針は、どんなリーダーボードの1行よりも有用だ。

A generated system diagram of the esp32-eye pipeline in five stages: ESP32-S3 plus OV5640 capture at 1024 by 768 every 1.5 seconds, a background-difference gate at 15 percent foreground, a local MiniCPM-V 4.7 1B on llama.cpp taking three consecutive positive votes, a cloud MiniCPM-V 4.7 35B-A3B identity call with four reference photos, and SQLite plus an AMOLED dashboard.

運用コストと、クラウド側の区間が障害を起こしたときに何が起きるか

このパイプラインで課金が発生するのは片方の経路だけだ。1B はラップトップ上のローカルな GGUF ファイルなので、1 フレームあたりの限界費用は電気代だけだ。35B は ModelBest の API に対するホスト型の呼び出しで、これは第三者ホストではなくベンダー自身のエンドポイントであり、プロジェクトにはそのためのキーが必要だ。README には、35B はローカルにデプロイされていないと明記されている。MacBook が保持しているのは 350 億パラメータではなく、クライアントだ。

その分割は、プロジェクトが隠すのではなく対処する失敗モードを生み出す。クラウド呼び出しが失敗すれば、イベントは再試行される。1B の結果がアイデンティティに昇格することは決してない。ホビープロジェクトとしては、これは異例なほど規律が徹底している。本番の形をしたものにとっては、同じ設計が、無人でイベントを記録することだけを目的とするシステムのクリティカルパス上に、単一の外部エンドポイントを置くことになる。

これがルーターが埋めるギャップであり、ルーターがここでできることとできないことを正確に押さえておく価値があります。OrcaRouter は 200 を超えるモデルにまたがる単一の API を提供し、プロバイダーの定価を0% のマークアップでそのまま適用します。さらに上流間の自動フェイルオーバーも備えており、これはこのようなパイプラインに適した形です。現時点では MiniCPM-V 4.7 を取り扱っていないため、esp32-eye の 35B の部分は引き続きベンダー自身の API で実行することになります。率直に言えば、助言はこうです。リトライ経路は残し、識別ステップが要になるなら、同じ呼び出しの背後に、実際に到達できる2つ目のモデルを置いてください。

まだ確認されていないものは何ですか

このビルドがどれだけの重みに値するかを変える三つの要素がある。第一は第二の世帯だ。これまで報告されたすべては、4匹の既知の猫と固定カメラを備えた1つの家庭から来ている。第二はより長い運用期間だ。3日間では、うまく機能するシステムと、猫が被毛を変えるか、光が変化するか、訪問者が来るまでしか機能しないシステムを区別できない。第三は89件のイベントの独立した検証であり、これは現在、構築者自身の手動レビューに依存している。

すでに確立されていることは、より控えめで、より有用だ。MiniCPM-V 4.7 は組み合わせ可能な2つのサイズで存在する。ノートPC上で Q4_K_M ファイルで動作する1.55Bの密モデルと、トークンあたり約30億パラメータを活性化し、4択の同一性タスクを任せられるほど十分に優れた35.2BのスパースなMixture-of-Expertsである。猫の餌皿はそれを証明するには奇妙な場所だが、現実の場所ではある。

A generated eight-tile figures card reading 1.5 seconds between frame checks, 15 percent foreground to wake the 1B, 3 and 4 consecutive votes to open and close an event, 641 MB (641 MiB, 672 MB decimal) for the 1B as a Q4_K_M GGUF, 4 cats in the closed identity set, 3 days of run, 89 drinking events verified, and 89 of 89 identities correct per OpenBMB.

再現したい場合、リポジトリにはカメラのファームウェア、AMOLEDのファームウェア、FastAPIサーバー、モデルのテストスクリプトが揃っており、必要なアカウントは identity leg 用の ModelBest のキーだけです。猫を動かすのではなくモデルを読みたいなら、まずはベンダーが公表している数値から始めるのがよく、注意点はリポジトリに記載されています。