# Boogu Image 使用與測試報告

日期：2026-06-29

## 結論

這輪測試可以把 Boogu Image 的定位切成兩條線：

1. 產圖產品線：目前應以 `Boogu-Image-0.1-Turbo-bf16`，也就是我們口語上說的 Turbo-16bit / bf16，做為主力。它比早期 4bit 16-step 路線快約 9.38x，且畫質與文字遵循都比 8bit 穩定。
2. 視覺理解 / 遊戲控制線：Boogu Image 不適合直接取代 YOLO、DINO、SAM 做每 frame 即時控制。它的價值是當離線老師，產生 segmentation、depth、normal、hazard hint、規則標籤和小圖記憶，再把結果蒸餾或編譯成 Meadow / OpenCV / YOLO 類 ms 級 hot path。

一句話：Boogu Image 可以幫我們解新題目的視覺規則，但不能把完整 Qwen + DiT + VAE 生成流程放進即時遊戲 loop。

## 1. Boogu 優化前後速度

### 產圖主路線

| 路線 | 解析度 | Steps | Guidance | Generate | DiT denoise | Mean step | Peak RSS | 備註 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | --- |
| Base 4bit | 512x512 | 16 | 3.5 | 121.81 s | 120.61 s | 7.54 s | 13.69 GB | 早期基準，慢 |
| Turbo-8bit | 512x512 | 4 | 1.0 | 16.87 s | 15.78 s | 3.95 s | 17.98 GB | 可用，但有格子狀雜訊 |
| Turbo-16bit / bf16 | 512x512 | 4 | 1.0 | 12.99 s | 11.23 s | 2.81 s | 21.62 GB | 目前主力，品質最好 |
| Turbo-16bit / bf16 + degrid | 512x400 | 4 | 1.0 | 15.91 s | 10.35 s | 2.59 s | 16.64 GB | 海報尺寸與去格子後處理 |
| KFC poster no-text | 512x400 | 4 | 1.0 | 14.58 s | 13.10 s | 3.28 s | 17.98 GB | 產圖後再疊中文字較穩 |
| KFC poster raw-text | 512x400 | 4 | 1.0 | 16.92 s | 15.38 s | 3.84 s | 15.19 GB | 模型直接生成中文字仍不可靠 |

前後差異：

- 從 Base 4bit 16-step 到 Turbo-16bit 4-step：121.81 s -> 12.99 s，約 9.38x 加速。
- DiT denoise 從 120.61 s -> 11.23 s，約 10.74x 加速。速度大頭確實還是 DiT。
- Turbo-16bit 比 Turbo-8bit 快：16.87 s -> 12.99 s，約 1.30x，等於少約 23% 時間。
- Turbo-16bit 記憶體比 Turbo-8bit 多約 3.64 GB，比 Base 4bit 多約 7.93 GB。以目前機器記憶體來看可以接受。

### 為什麼最後保留 Turbo-16bit

8bit 的速度不是最佳，而且肉眼可見有格子狀雜訊。degrid 可以減輕輸出，但它是後處理，不是根本修正。Turbo-16bit / bf16 的結果在我們測到的 KFC 海報和一般圖像任務上比較穩，速度也更快，所以清掉 8bit / 舊 4bit 產圖路線是合理的。

中文海報的實務做法是：

1. Boogu 生成不含文字或只含版面暗示的主視覺。
2. 用程式疊真正中文字、品牌字和價格字。
3. 這樣比要求 diffusion 模型直接畫準中文更可靠。

### 仍可優化的地方

| 項目 | 現況 | 判斷 |
| --- | --- | --- |
| Qwen encode | T2I 約 0.7-0.9 s；Edit 約 4-7 s | 有優化空間，但不是最大瓶頸 |
| VAE encode/decode | 通常小於 1 s；少數 degrid/解碼測試較高 | 可追蹤，但不是主瓶頸 |
| DiT denoise | T2I 4-step 約 10-15 s；Edit 6-step 可達 80-130 s | 最大瓶頸 |
| Compile/cache | 兩次 run 可看到第二次 encode/load 近 0，但 denoise 仍在 9-12 s | 對 warm run 有幫助，但不會讓完整產圖進 ms |
| 4bit KV / prefix cache / chunked prefill | 對 Qwen 長前綴有用 | 對 DiT 主耗時幫助有限 |

結論：Qwen 端的 TurboQuant、KV cache、prefix cache、chunked prefill 都有工程價值，但目前產圖速度大頭是 DiT denoise。若要再快，優先方向是 DiT step 數、DiT block/kernel、sampler、蒸餾模型、低解析度草稿再超分，而不是只優化 Qwen encode。

## 2. Boogu Vision Image 替代 YOLO / DINO / SAM 的表現

### 同一類 vision 任務的速度

| Pipeline | 測試內容 | Mean | P95 | 記憶體 | 適合用途 |
| --- | --- | ---: | ---: | ---: | --- |
| OpenCV Sobel | CPU edge on loaded frame | 0.87-0.97 ms | 0.97-1.11 ms | 約 0.25 GB | 最快，固定規則 |
| DINO small | 224 feature extract | 5.57 ms | 6.36 ms | 約 0.59 GB | embedding / similarity / retrieval |
| YOLOv8n-seg | 640 segmentation predict | 28.89 ms | 36.76 ms | 約 0.48 GB | 即時偵測與分割 |
| SAM ViT-B | new frame image encoder | 635.54 ms | 962.92 ms | 約 0.82 GB | 高品質互動式分割，不適合每 frame 全重算 |
| SAM ViT-B cached prompt | cached image + prompt decoder | 12.55 ms | 14.72 ms | 約 0.84 GB | 已有 image embedding 時的 prompt mask |
| Boogu Edit 4bit | segmentation 384x384, 6-step | 138.01 s | n/a | 13.79 GB | 離線老師 |
| Boogu Edit bf16 | segmentation 384x384, 6-step | 91.20 s | n/a | 20.97 GB | 離線老師，品質/速度較 4bit 好 |
| Boogu hazard prompt | Airstriker crop, 2-step | 30.99 s | n/a | 10.89 GB | 離線 hazard hint，不可直接控遊戲 |

這張表很清楚：傳統 CV/YOLO/DINO/SAM 可以在 ms 到數百 ms 內出結果；Boogu Edit 是秒到分鐘級。因此 Boogu 不能直接取代 YOLO/SAM 的即時 hot path。

### Boogu 的優勢

Boogu 的優勢不是速度，而是泛化與語意：

- 可以用自然語言要求任務格式，例如「把敵人標紅、子彈標黃、玩家標藍」。
- 不需要先收集大量標註資料，就能先產生 segmentation、depth、normal、edge、hazard mask 的候選標籤。
- 可以把新任務的視覺規則轉成小圖記憶或 prototype，例如 `attack:enemy_ship`、`dodge:enemy_green_bullet`。
- 適合做離線 teacher，之後再用小模型、OpenCV、Meadow state extractor、DINO embedding 或 YOLO 來跑即時。

### Boogu 的限制

- 對像 Airstriker 這種小型 pixel-art sprite，Boogu 4bit edit 的空間精度不夠。它會給語意提示，但不保證 bbox/mask 對齊到碰撞所需精度。
- 生成式輸出可能 hallucinate。Airstriker toxic frame 測試中，模型會反應到失敗狀態，但可能產生 game-over-like 影像，而不是精準 mask。
- 對即時控制，30-138 秒的 Boogu teacher latency 只能離線使用。
- 若是「每 frame 看到就按左/右」，Boogu 不應在 loop 裡產圖；應先把規則變成可執行的 detector / memory / policy。

## 3. Airstriker 測試結果

### Boogu 直接做 teacher 的結果

| 測試 | Generate | Encode | Denoise | Decode | Peak | 結果 |
| --- | ---: | ---: | ---: | ---: | ---: | --- |
| Clean frame generic segmentation | 47.17 s | 8.77 s | 35.07 s | 2.96 s | 16.73 GB | 保留原圖太多，不是可靠 mask |
| Toxic frame generic segmentation | 46.51 s | 3.67 s | 39.78 s | 2.46 s | 16.73 GB | 有反應，但 hallucinate 失敗狀態 |
| Prompted hazard mask | 30.99 s | 3.65 s | 25.59 s | 0.93 s | 10.89 GB | 有紅/黃/藍提示，但不夠精準 |

判斷：Boogu 可以幫忙做規則探索與離線標籤，但不能直接當 Airstriker 控制器。

### Rule prompt / object memory

我們把遊戲規則編譯成 live rule policy，而不是每 frame 問 Boogu：

```text
看到敵機 -> attack:enemy_ship，也要 dodge:enemy_ship_contact_hazard
看到綠色子彈 -> dodge:enemy_green_bullet
玩家子彈可以打敵機，但不能消掉敵方子彈
先閃危險，再攻擊
```

Object memory smoke：

| 指標 | 結果 |
| --- | ---: |
| Steps | 1817 |
| Score | 80 |
| Memory entries | 72 |
| `attack:enemy_ship` | 24 |
| `dodge:enemy_ship_contact_hazard` | 24 |
| `dodge:enemy_green_bullet` | 24 |
| Live p95 latency | 約 12.89 ms |
| Cleared | false |

這證明「規則 -> 物件小圖記憶 -> 即時 policy」是可行的。但這不是 Boogu 直接玩遊戲，而是 Boogu/人工規則扮演老師，把語意壓成可執行的物件記憶。

### Airstriker 線上策略和離線策略要分開

| 模式 | 結果 | 意義 |
| --- | --- | --- |
| Zero-shot live `fire_only` | 1463 steps，score 60，0/3 clear | 只開火不夠 |
| Zero-shot live `meadow_attack_survival` | 1732 steps，score 80，0/3 clear | 有視覺反射，但不過關 |
| Zero-shot live `meadow_predictive_replay` | 1590 steps，score 100，0/3 clear | 攻擊提高但生存變差 |
| Zero-shot live `meadow_rule_prompt_live` | 1817 steps，score 80，0/3 clear | 規則提示改善生存，但仍不過關 |
| Offline planner/replay | 2200 steps，score 100，4 lives，0 deaths，clean window cleared | 可清掉設定的 2200-frame benchmark window |
| Score-floor replay `min_score=180` | 2200 steps，score 100，0 deaths，但 strict score=false | 還不是高分殲滅式通關 |

目前可主張：

- Meadow / rule prompt / object memory 能從畫面產生低延遲行動。
- Offline planner + replay 能把死亡點修成 2200-frame clean route。
- Boogu 可以做離線 teacher / label source。

目前不可主張：

- 不可說 Boogu Image 直接即時控制 Airstriker。
- 不可說 zero-shot live 已通關。
- 不可說已經「殲滅所有敵人並閃避所有子彈」。目前 clean route 偏生存，score 只有 100；嚴格分數門檻 180 沒過。

## 4. Falling Object Reflex 測試

這個測試不是完整 Boogu 產圖 loop，而是我們想要的實際架構：

```text
Boogu offline teacher / prototype
-> compact visual delta
-> Meadow Mind causal/reflex hot path
-> dodge / observe action
```

結果：

| 指標 | 結果 |
| --- | ---: |
| Trials | 12 |
| Correct | 12 / 12 |
| Expected dodge cases | 9 |
| Dodge recall | 9 / 9 |
| First action delay mean | 22.22 ms |
| First action delay p95 | 41.67 ms |
| Detect latency mean | 0.35 ms |
| Detect latency p95 | 0.56 ms |
| Meadow decision mean | 0.036 ms |
| Meadow decision p95 | 0.073 ms |

這裡的延遲主要不是 AI 計算，而是攝影機幀率：

| Camera FPS | 首次可反應間隔 |
| ---: | ---: |
| 24 fps | 41.67 ms |
| 60 fps | 16.67 ms |
| 120 fps | 8.33 ms |

這代表要進 ms 級，正確方式不是把 Boogu 本體加速到每 frame 跑完，而是讓 Boogu 在離線階段產生規則/標籤/prototype，線上只跑 compact detector + Meadow policy。

## 5. 與傳統視覺 pipeline 的差異

| 面向 | Boogu Image teacher | YOLO / DINO / SAM / OpenCV |
| --- | --- | --- |
| 速度 | 秒到分鐘級 | ms 到數百 ms |
| 是否適合每 frame | 不適合 | 適合，視模型而定 |
| 語意泛化 | 強，可用自然語言指定任務 | 弱到中，通常要預訓練類別或 prompt |
| 空間精度 | 生成式輸出不穩，pixel-level 控制需驗證 | YOLO/SAM/OpenCV 較可控 |
| 新任務啟動 | 快，可先產生候選標籤 | 需要模型、類別、資料或手寫規則 |
| 最佳用途 | 離線 label teacher、規則探索、promptable segmentation/depth/normal/hazard hints | 即時偵測、分割、特徵、控制 hot path |
| 風險 | hallucination、位置偏差、速度慢 | 泛化弱、類別受限、需要資料或調參 |

所以更合理的架構是混合式：

```text
Boogu Image
  -> 離線產生候選標籤 / hazard map / object crop / prototype
  -> 人或自動 verifier 檢查空間對齊
  -> 小模型 / OpenCV / YOLO / DINO / Meadow memory 蒸餾
  -> 線上 ms 級控制
```

## 6. 下一步建議

1. 保留 Turbo-16bit / bf16 為產圖主線；8bit 和舊 4bit 產圖模型可以清掉，除非要回歸測試。
2. 對 vision teacher 任務保留 4bit/bf16 Edit 測試入口，但不要把它放進即時控制 loop。
3. Airstriker 下一個 gate 要改成 `2200 frames + 0 deaths + score >= 180`，不能只看 survival。
4. 把 Boogu teacher 產出的 hazard hint 和 object crop 經過 verifier，才寫入 object memory。
5. 線上控制繼續走 Meadow / CV hot path：目標是 1-15 ms 內做決策，而不是等 Boogu 產圖。
6. 若要比較真正替代 YOLO/DINO/SAM，應新增標準資料集：real photos + synthetic game frames，量測 mask IoU、bbox error、false positive、latency，而不是只看單張輸出好不好看。

## 來源檔案

- Boogu 產圖測試：[BOOGU_GENERATION_SUITE_RESULTS.md](BOOGU_GENERATION_SUITE_RESULTS.md)
- Boogu 到 Meadow ms path：[BOOGU_MEADOW_MS_PATH.md](BOOGU_MEADOW_MS_PATH.md)
- CV ms benchmark：[CV_MS_BENCHMARK.md](CV_MS_BENCHMARK.md)
- 主要 Boogu metrics：`outputs/base4bit_512_s16_g35/metrics.json`、`outputs/turbo8_512_s4_g1/metrics.json`、`outputs/bench_turbobf16_512_s4_g1/metrics.json`
- KFC poster metrics：`outputs/kfc_poster_no_text/metrics.json`、`outputs/kfc_poster_raw_text/metrics.json`
- Vision teacher metrics：`outputs/vision_banana_4bit_smoke/edit-4bit_segmentation_384x384_6steps_g4_seed13_medium.json`、`outputs/vision_banana_bf16_smoke/edit-bf16_segmentation_384x384_6steps_g4_seed13_medium.json`
- Airstriker Boogu teacher report：[../meadow-mind/demos/AIRSTRIKER_BOOGU_TEACHER_REPORT.md](../meadow-mind/demos/AIRSTRIKER_BOOGU_TEACHER_REPORT.md)
- Airstriker Meadow report：[../meadow-mind/demos/AIRSTRIKER_MEADOW_PLAY_REPORT.md](../meadow-mind/demos/AIRSTRIKER_MEADOW_PLAY_REPORT.md)
- Airstriker object memory：`../meadow-mind/demos/airstriker_meadow_object_memory_smoke/object_memory/meadow_rule_prompt_live/episode_0/object_memory.json`
- Falling reflex report：`outputs/falling_reflex_bench/falling_reflex_report.json`
