MediaPipe 顔検出の入門サンプル
============================

1. ZIPを展開する
   すべてのファイルを同じフォルダーに置いてください。

   index.html  : 画面
   app.js      : 画像読み込み・AI初期化・顔検出・枠の描画
   person.jpg  : AI作成の人物画像
   cat.jpg     : 運営者の愛猫の写真
   README.txt  : この手順書

2. Node.jsを確認する
   ターミナルを開き、次のコマンドを実行してください。

   node --version

   バージョン番号が表示されれば準備できています。
   コマンドが見つからない場合は、https://nodejs.org/ からNode.jsを
   インストールした後、ターミナルを開き直してください。

3. 展開したフォルダーでHTTPサーバーを起動する
   Windowsでは、エクスプローラーで展開したフォルダーを開き、
   アドレスバーに powershell と入力してEnterを押すと、
   そのフォルダーを作業場所にしたターミナルが開きます。

   npx.cmd --yes http-server . -p 8080

   初回はhttp-serverをダウンロードします。ターミナルは開いたままにします。
   8080番ポートが使われている場合は、-p 8081 に変更してください。

4. ブラウザで開く
   http://localhost:8080/ を開きます。
   ポートを8081に変更した場合は http://localhost:8081/ です。

   index.htmlをダブルクリックしたfile://形式では動作しません。
   必ずHTTPサーバー経由で開いてください。

5. サンプルを動かす
   人物画像を選び、「AIを読み込んで顔検出」を押します。
   初回はSDK・WASM・モデルをインターネットから読み込みます。
   緑の枠、顔の検出数、推論時間、JSONを確認してください。
   次に「愛猫の写真」を選び、「選んだ画像で顔検出」を押します。
   FaceDetectorは人の顔が対象です。猫の検出は保証されません。
   自分のJPEG・PNG・WebP画像（20 MB以下）でも試せます。
   選んだ画像の推論はブラウザ内で実行されます。

6. 終了する
   サーバーを起動したターミナルで Ctrl + C を押してください。

うまく動かない場合
------------------
・白い画面や画像読み込み失敗：ZIP内のファイルがすべて同じフォルダーにあるか確認。
・AI読み込み失敗：インターネット接続を確認し、顔検出ボタンをもう一度押す。
・CDNやGoogle Storageが制限されたネットワーク：SDK・WASM・モデルを取得できません。
・顔が0個：推論失敗とは限りません。顔の大きさ、向きなどを変えて試してください。
・詳細はブラウザの開発者ツールのConsoleで確認できます。
・サーバーはlocalhost:8080でパソコン自身から開く手順です。
  スマホでの確認は記事のサイト上のデモを使用してください。

使用ファイル・出典
------------------
人物：nekonote-toolsプロジェクト
      public/images/tool-examples/ai-face-mosaic/before.jpg のコピー。
      人物はすべてAI作成。
猫  ：nekonote-toolsプロジェクト
      public/images/hero-cats.jpg のコピー。運営者の愛猫。

SDK   ：@mediapipe/tasks-vision 0.10.34（jsDelivr経由）
モデル：BlazeFace full-range float16、モデルバージョン1（Google Storage経由）
        静止画モード、検出スコアの下限0.5、長辺最大960 px。
        GPUで初期化し、失敗した場合はCPUで再試行。

記事：https://nekonote-tools.com/notes/mediapipe-introduction/
公式：https://ai.google.dev/edge/mediapipe/solutions/vision/face_detector/web_js

