diff --git a/edge-ai-platform/docs/project-comparison-kneo-vs-edge-ai.md b/edge-ai-platform/docs/project-comparison-kneo-vs-edge-ai.md new file mode 100644 index 0000000..a03c432 --- /dev/null +++ b/edge-ai-platform/docs/project-comparison-kneo-vs-edge-ai.md @@ -0,0 +1,370 @@ +# 專案比較報告:KNEO-Academy vs Edge AI Platform + +> **產出日期**:2026-04-08 +> **比較對象**: +> - **KNEO-Academy**(`~/KNEO-Academy`)— Innovedus AI Playground,Windows 桌面應用 +> - **Edge AI Platform**(`~/Innovedus/edge-ai-platform/`)— 邊緣 AI 開發平台,Web 服務 +> **目的**:釐清兩個功能相似專案之間的差異,作為後續策略決策的依據 + +--- + +## 摘要(TL;DR) + +兩個專案都是 Kneron NPU 的 AI 推論解決方案,但**定位完全不同**: + +- **KNEO-Academy** 是 **「Kneron 官方體驗 App」**:Python + PyQt5 桌面程式,訴求零程式碼、插電即用,主要用於銷售 Demo 和客戶 PoC。 +- **Edge AI Platform** 是 **「開發者完整工具平台」**:Go + Next.js Web 架構,訴求跨平台、可遠端、可叢集、可雲部署,主要給開發者和研究人員使用。 + +兩者功能重疊度約 60%,但各自有明顯獨有的能力,可以互相借鏡或在策略上做區隔/合併。 + +--- + +## 一、定位與目標市場 + +| 維度 | KNEO-Academy | Edge AI Platform | +|------|--------------|------------------| +| **產品類型** | Windows 桌面應用程式(.exe) | Web 平台(可安裝為本機服務) | +| **目標場景** | 客戶 PoC、銷售 Demo、零程式碼體驗 | 開發者/研究者的完整工作台 | +| **目標用戶** | 非技術人員、業務、客戶 | 工程師、AI 研究者、運維人員 | +| **互動模式** | PyQt5 原生桌面 GUI | 瀏覽器 Web UI | +| **使用門檻** | 雙擊 exe 即用 | 安裝後透過瀏覽器存取 | +| **授權控制** | Server 登入 + Dongle 授權(設計中) | 無(開源風格) | +| **商業模式** | 授權制(可能與硬體銷售綁定) | 待定 | + +**一句話總結**:KNEO-Academy 像是 **「Kneron 官方體驗展示 App」**,Edge AI Platform 則是 **「開發者的完整工具平台」**。 + +--- + +## 二、技術堆疊對照 + +| 維度 | KNEO-Academy | Edge AI Platform | +|------|--------------|------------------| +| **主要語言** | Python 3.12(單一) | Go 1.26 + TypeScript/React | +| **UI 框架** | PyQt5(桌面原生) | Next.js 16 + React 19 + shadcn/ui + TailwindCSS 4 | +| **架構模式** | MVC + Service Layer | 前後端分離(REST + WebSocket) | +| **程序間通訊** | Qt Signal/Slot(單一程序內) | HTTP API + WebSocket(跨程序) | +| **硬體介面** | KneronPLUS Python SDK 直接呼叫 | Go → Python JSON-RPC Bridge | +| **打包工具** | PyInstaller + PyArmor 加密 | GoReleaser 跨平台 + Wails GUI 安裝程式 | +| **平台支援** | **僅 Windows** | **macOS / Windows / Linux 三平台** | +| **程式規模** | 數十個 Python 檔 + uxui 資源 | 118 個 TS/TSX + 7,333 行 Go | +| **資料儲存** | `%LOCALAPPDATA%/Kneron_Academy/` | 記憶體為主(無持久化資料庫) | +| **AI 相關依賴** | TF、PyTorch、Keras、ONNX、OpenCV、librosa | FFmpeg、yt-dlp、KneronPLUS(精簡) | + +--- + +## 三、功能對照表(Feature by Feature) + +> 標示說明:✅ 完整支援 ⚠️ 部分支援 / 設計中 ❌ 不支援 🆕 此項為該專案獨有 + +### 3.1 設備管理 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| USB 掃描 | ✅ | ✅ | +| 設備連線 / 斷線 | ✅ | ✅ | +| 韌體上傳 / 更新 | ✅ | ✅ | +| KL520 支援 | ✅ | ✅ | +| KL720 支援 | ✅ | ✅ | +| KL730 支援 | ⚠️ 僅 enum | ✅ | +| 設備驅動自動安裝 | ⚠️ 設計中 | ✅ WinUSB 自動安裝(UAC 提權) | +| 設備事件即時串流 | ❌(PyQt signal 內部) | ✅ WebSocket | + +### 3.2 推論能力 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| 單圖推論 | ✅ | ✅ | +| 攝影機即時推論 | ✅ | ✅ | +| **批次圖像推論** | ❌ | ✅ 🆕 | +| **影片檔逐幀推論** | ❌ | ✅ 🆕 | +| **YouTube / URL 串流推論** | ❌ | ✅ 🆕 | +| **多設備叢集推論** | ❌ | ⚠️ 未完成(後端有 Weighted RR 派發骨架,但未接通輸入源;前端 workspace 缺攝影機/媒體介面;實測有多項問題) | +| 自訂模型上傳 (.nef) | ✅ | ✅ | +| YOLO 後處理 | ✅ | ✅ | +| 自訂 class labels | ✅ | ✅ | + +### 3.3 模型管理 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| 內建模型庫 | ✅(JSON plugin 系統) | ✅(10+ 模型) | +| 模型過濾 / 分類 | ⚠️ | ✅ | +| 模型上傳 | ✅ | ✅ | +| 設備相容性宣告 | ✅(每個模型宣告支援哪些晶片) | ✅ | +| **動態 script 載入** | ✅ 🆕(plugin 架構) | ❌ | + +### 3.4 媒體與錄製 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| **螢幕截圖** | ✅ 🆕 | ❌ | +| **視訊錄影(AVI / XVID)** | ✅ 🆕 | ❌ | +| **音訊錄音** | ✅ 🆕 | ❌ | +| FFmpeg 串流 | ❌ | ✅ 🆕 | +| MJPEG 串流 | ❌ | ✅ 🆕 | +| 圖片上傳 | ✅ | ✅ | +| 影片上傳 | ⚠️ 基礎架構 | ✅ | + +### 3.5 使用者系統與存取控制 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| **登入認證(帳密)** | ✅ 🆕 Server 驗證 | ❌ | +| **存取控制分級** | ✅ 🆕 Utilities 需登入 | ❌ | +| **Dongle 授權驗證** | ⚠️ 設計中 🆕 | ❌ | +| **購買模型下載** | ⚠️ Mock 資料 🆕 | ❌ | + +### 3.6 系統與運維 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| 健康檢查 API | ❌ | ✅ 🆕 | +| 自動更新機制 | ❌ | ✅ 🆕 | +| 依賴檢查 | ❌ | ✅ 🆕 | +| 即時日誌串流 | ❌ | ✅ 🆕 | +| **遠端存取(中繼隧道)** | ❌ | ✅ 🆕 | +| Nginx 反向代理 | ❌ | ✅ 🆕 | +| **Docker 部署** | ❌ | ✅ 🆕 | +| **Kubernetes / 雲部署腳本** | ❌ | ✅ 🆕(AWS S3/CloudFront/EC2) | +| GitHub Actions CI/CD | ❌ | ✅ 🆕 | + +### 3.7 使用者體驗 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| 導覽教學 | ❌ | ✅ 🆕(driver.js) | +| **模擬模式(無硬體)** | ❌ | ✅ 🆕 | +| Dark Mode | ✅(#143058 主題) | ✅ | +| 響應式排版 | ✅(Qt auto-layout) | ✅(Web responsive) | +| 多語系支援 | ⚠️(語言選項有) | ⚠️ | + +### 3.8 效能優化 + +| 功能 | KNEO-Academy | Edge AI Platform | +|------|:---:|:---:| +| **MSE 靜態幀跳過** | ✅ 🆕(相似畫面不重複推論) | ❌(待確認) | +| Frame Queue(max 5) | ✅ | ⚠️ | +| 最小推論間隔控制 | ✅ 🆕(預設 2s) | ⚠️ | +| 非阻塞工作執行緒 | ✅(QThread) | ✅(Go goroutine) | + +--- + +## 四、架構哲學對比 + +### 4.1 KNEO-Academy:單體桌面應用 + +``` +┌─────────────────────────────────────────────┐ +│ PyQt5 Main Event Loop │ +│ ┌───────────┐ ┌───────────────────────┐ │ +│ │ Views │──│ Controllers │ │ +│ │ (Windows) │ │ (Device/Inference/..) │ │ +│ └───────────┘ └───────────┬───────────┘ │ +│ │ │ +│ ┌──────────────┐ ┌────────▼───────────┐ │ +│ │ Workers │ │ Services │ │ +│ │ (VideoThread │ │ (Device/File/...) │ │ +│ │ InferWork) │ └────────┬───────────┘ │ +│ └──────────────┘ │ │ +│ ▼ │ +│ KneronPLUS Python SDK │ +│ │ │ +│ ▼ │ +│ USB Device │ +└─────────────────────────────────────────────┘ + 單一 Python 程序 / Qt Signal 通訊 +``` + +**優點**: +- 啟動快速 +- 安裝包單一 EXE +- Qt Signal/Slot 即時性高 +- UI 層與業務層耦合少(MVC) + +**缺點**: +- **只能 Windows** +- 不能遠端存取 +- 不易擴展為多機/叢集 +- Python GIL 對高並發有限制 + +--- + +### 4.2 Edge AI Platform:前後端分離 + 本機服務 + +``` +┌──────────────────────────────────────────────────────┐ +│ Browser Client │ +│ Next.js 16 + React 19 SPA │ +└────────────────────┬─────────────────────────────────┘ + │ HTTP / WebSocket + ▼ +┌──────────────────────────────────────────────────────┐ +│ Go Server (Gin + gorilla/ws) │ +│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ +│ │ REST API │ │ WebSocket │ │ Embedded │ │ +│ │ Handlers │ │ Handlers │ │ Frontend │ │ +│ └──────┬─────┘ └──────┬─────┘ └────────────┘ │ +│ │ │ │ +│ ┌──────▼───────────────▼──────────────┐ │ +│ │ Internal Packages │ │ +│ │ device / cluster / inference / │ │ +│ │ camera / model / flash / tunnel │ │ +│ └──────────────────┬───────────────────┘ │ +│ │ JSON-RPC over stdin/stdout │ +│ ▼ │ +│ Python Bridge (venv) │ +│ │ │ +│ ▼ │ +│ USB Device │ +└──────────────────────────────────────────────────────┘ +``` + +**優點**: +- **跨三平台**(macOS/Windows/Linux) +- 可遠端存取(tunnel/nginx) +- 可叢集(多設備並行推論) +- 可雲部署(Docker/AWS) +- 可觀測性強(健康檢查/日誌/指標) +- 前後端可獨立演進 + +**缺點**: +- 架構較複雜 +- 啟動稍慢(多層初始化) +- 多一層跨程序通訊(Go↔Python) +- 需要管理前後端雙技術棧 + +--- + +## 五、獨有功能清單 + +### 5.1 KNEO-Academy 有而 Edge AI Platform 沒有 + +1. **視訊錄影功能** — 可把推論結果的影像串流錄成 AVI 檔(XVID codec) +2. **音訊錄音** — 同步錄製麥克風音訊 +3. **螢幕截圖** — 一鍵儲存當前推論畫面為 PNG/JPG +4. **使用者登入系統** — Server 驗證帳密 +5. **Dongle 授權機制** — 商業授權流程(設計中) +6. **購買模型下載** — 從 Server 下載已購買的商業模型(Mock) +7. **MSE 幀變化偵測優化** — 靜態畫面自動跳過推論,省運算資源 +8. **零程式碼體驗導向 UI** — 介面設計更貼近非技術用戶 +9. **PyArmor 程式碼加密** — 保護商業邏輯,防止反編譯 +10. **Dynamic Script Plugin 系統** — 透過 JSON config + Python script 擴充模型,無需改程式 + +### 5.2 Edge AI Platform 有而 KNEO-Academy 沒有 + +1. **叢集推論** — ⚠️ 未完成。後端有 Weighted Round-Robin 派發器骨架(dispatcher + pipeline),但未接通攝影機/媒體輸入源;前端 workspace 只有文字結果和效能面板,缺少攝影機畫面、媒體選擇、bounding box 視覺化;實測有多項問題待修 +2. **批次圖像推論** — 多圖順序處理 +3. **影片檔逐幀推論** — 完整影片處理流程 +4. **YouTube / URL 串流推論** — 遠端媒體來源 +5. **Web UI** — 跨平台、可遠端存取、瀏覽器即用 +6. **遠端中繼隧道(Tunnel)** — 可穿透 NAT 遠端存取 +7. **Nginx 反向代理** — 生產級部署 +8. **Docker 容器化部署** — 雲端部署支援 +9. **自動更新系統** — 線上升級 +10. **健康檢查 / 依賴檢查 / 指標** — 完整可觀測性 +11. **即時日誌串流** — WebSocket 推送日誌 +12. **跨三平台安裝程式** — macOS / Windows / Linux 都有 GUI 安裝程式 +13. **模擬模式(Mock)** — 無硬體也能開發測試 +14. **導覽教學** — driver.js 新手引導 +15. **GoReleaser CI/CD** — 自動化發布流程 +16. **叢集韌體刷寫** — 一次刷多台設備 + +--- + +## 六、重疊功能分析 + +兩者**共同擁有**的核心能力(約 40% 的功能重疊): + +| 功能 | 說明 | +|------|------| +| USB 設備掃描與連線 | 兩邊都支援自動偵測 Kneron USB dongle | +| 韌體上傳更新 | 兩邊都能上傳 fw_scpu.bin + fw_ncpu.bin | +| KL520 / KL720 | 兩邊都完整支援 | +| 單圖推論 | 上傳一張圖執行推論 | +| 即時攝影機推論 | OpenCV / FFmpeg 擷取即時畫面 | +| 自訂 .nef 模型上傳 | 支援使用者自備模型 | +| YOLO 後處理 + NMS | 物件偵測結果解析 | +| 自訂 class labels | 非 COCO 類別支援 | +| Bounding box 視覺化 | 結果疊加到畫面上 | + +--- + +## 七、策略建議 + +以下是幾個值得思考的方向: + +### 方向 A:**差異化共存**(維持兩個獨立產品) + +- **KNEO-Academy** 定位為「**體驗展示 / 銷售 Demo 工具**」,強化錄影/錄音/截圖、授權驗證、零程式碼體驗 +- **Edge AI Platform** 定位為「**開發者平台 / 生產部署工具**」,強化叢集、遠端、可觀測性、跨平台 +- 優點:各司其職,目標客群清楚 +- 缺點:兩邊都要維護,資源分散 + +### 方向 B:**功能互補合併**(以 Edge AI Platform 為主) + +將 KNEO-Academy 的獨有功能移植到 Edge AI Platform: +1. **優先**:錄影 / 錄音 / 截圖(補齊媒體輸出,技術難度低) +2. **中期**:MSE 幀變化偵測優化(提升效能,實作簡單) +3. **長期**:使用者系統 + Dongle 授權(商業化需要) + +優點:集中資源、統一產品、同時具備兩邊優勢 +缺點:Web UI 的桌面原生體驗不如 PyQt5 + +### 方向 C:**分層架構**(Edge AI Platform 為引擎,KNEO-Academy 為前端) + +- Edge AI Platform 當作推論引擎 / 後端服務 +- KNEO-Academy 改為呼叫 Edge AI Platform 的 API(取代 KneronPLUS 直接呼叫) +- 兩邊共用底層設備管理、模型管理、推論邏輯 +- 優點:程式碼重用最大化 +- 缺點:改造成本高,需要重構 KNEO-Academy 的 controller 層 + +--- + +## 八、快速獲益的移植清單 + +如果決定把 KNEO-Academy 的功能移植到 Edge AI Platform,按 ROI 排序: + +| 優先 | 功能 | 難度 | 價值 | 說明 | +|:----:|------|:----:|:----:|------| +| 🔥 P0 | 錄影功能 | 低 | 高 | 前端用 MediaRecorder API 或後端 FFmpeg 錄製 MJPEG stream | +| 🔥 P0 | 螢幕截圖 | 極低 | 高 | 前端直接 canvas.toBlob() 就能實現 | +| 🔥 P0 | MSE 幀優化 | 低 | 中 | 在推論 pipeline 加入 frame diff 檢測 | +| ⭐ P1 | 音訊錄製 | 中 | 中 | 需要新增音訊 pipeline | +| ⭐ P1 | Plugin Script 系統 | 中 | 中 | 讓使用者上傳推論 script,不只是 .nef | +| 💤 P2 | 登入認證 | 高 | 高 | 需要 Server + JWT + RBAC 完整規劃 | +| 💤 P2 | Dongle 授權 | 高 | 高 | 商業化時再做 | + +--- + +## 九、未決問題(待使用者決策) + +1. ❓ 兩個專案要共存、合併、還是分層? +2. ❓ KNEO-Academy 是否已有客戶在使用?(影響改動的包袱) +3. ❓ 是否要把錄影 / 截圖等功能優先移植到 Edge AI Platform? +4. ❓ 商業授權機制是否是下一階段重點? +5. ❓ 產品對外名稱要統一嗎?(Innovedus AI Playground vs Edge AI Platform) + +--- + +## 附錄:檔案位置參考 + +### KNEO-Academy 關鍵檔案 +- 入口:`~/KNEO-Academy/main.py` +- 設備控制:`~/KNEO-Academy/src/controllers/device_controller.py` +- 推論控制:`~/KNEO-Academy/src/controllers/inference_controller.py` +- 媒體控制:`~/KNEO-Academy/src/controllers/media_controller.py`(含錄影/錄音) +- 主視窗:`~/KNEO-Academy/src/views/mainWindows.py` +- 流程圖:`~/KNEO-Academy/flowchart.md` +- PRD:`~/KNEO-Academy/.autoflow/02-prd/PRD.md` + +### Edge AI Platform 關鍵檔案 +- 前端:`~/Innovedus/edge-ai-platform/edge-ai-platform/frontend/` +- 後端:`~/Innovedus/edge-ai-platform/edge-ai-platform/server/` +- 安裝程式:`~/Innovedus/edge-ai-platform/edge-ai-platform/installer/` +- PRD v3.4:`~/Innovedus/edge-ai-platform/edge-ai-platform/docs/PRD-Integrated.md` +- TDD v2.3:`~/Innovedus/edge-ai-platform/edge-ai-platform/docs/TDD.md` + +--- + +*報告產出:Autoflow Orchestrator* +*最後更新:2026-04-08*