Taichung City Pulse · SPEC · v3.1 · 2026-09-21

臺中城市脈動 產品規格書

輸入、處理、輸出與非功能規格;第 4 節時間評估可用試算器依網關提供的相機數、取像延遲與 Thor 台數即時重算。

臺中城市脈動 展示系統 產品規格書

版本 v3.1,2026-09-21。對應:01 系統架構書 v3.1、03 功能列表與驗收標準 v3.1、04 儀表原型(2-B 版面規格)、05 語音答詢演示、poc/(純 HTML POC 三頁)、spec/。

v3.1 變更:2-B 城市儀表版面定案為 04 儀表原型排版,29 區區塊改為城市道路地圖;新增相機座標與精度規格;新增純 HTML POC 交付規格。

v3.0 變更:影像改由網關 GET /image/{cctv_id} 逐張取得;新增 Thor 節點監控(相機數、分析時長、CPU、GPU、記憶體、儲存)並上傳雲端;多台 Thor 平行;VLM 以 vLLM 執行、預設 Qwen3.8、可由 .env 切換;雲端拆為監控後台、城市儀表、AI 語音答詢三個子系統並各有上傳 API。

1. 產品定義

一句話:多台地端 Jetson Thor 逐張讀取台中市相機影像(目前 356 路,清單來自網關 API),用 YOLO26 偵測城市變化事件、用 Qwen3.8 寫情境摘要,把指標、事件與節點狀態上傳雲端;雲端提供監控後台、城市儀表與可對話的 AI 語音答詢。

受眾:市府首長與局處主管、系統維運人員(監控後台)、投標評審、媒體與市民(對外版)。

展示訊息:不新增鏡頭、不回傳影像、不辨識任何人;一台 Thor 就能分析全市,多台可平行。

2. 平台一:影像資料分析平台(地端)規格

2.1 輸入

項目 規格
相機列表 GET {GATEWAY_URL}/cameras(預設 http://localhost:8200/cameras);每 10 分鐘同步;目前 356 路;欠缺欄位以 cameras.override.json 補
相機座標 優先用 API 或 TDX 座標(exact);缺座標時以路口/路名地理編碼近似並標 geo_precision=intersection|road,超出臺中範圍框回退區中心點(district);結果存 cameras_geo.json,隨相機資料上傳 2-B
影像 GET {GATEWAY_URL}/image/{cctv_id},一次一張 JPEG;實測 640×360 約 20 KB、320×240 約 7 KB
取樣 每路每秒 1 張(SAMPLE_FPS),尖峰 2 張,辨識級相機 2 張;每張一次 HTTP 請求,連線池 keep-alive,併發 ≤ 64,逾時 2 秒
節點分工 CAMERA_FILTER 或由雲端 2-A 分派;多台 Thor 各負責一組相機
期間 1 個自然日 00:00 至 24:00,建議平日;亦可長期常駐

2.2 處理

處理 規格
偵測模型 YOLO26(NMS-free 端到端)INT8 TensorRT,輸入 640;預設 yolo26s,.env 可切 yolo26n(最快)或 yolo26m(最準);8 類:行人、自行車、機車、汽車、公車、卡車、動物、障礙物
城市變化事件 由指標偏離產生:人流聚集、車流回堵、車道佔用、人行道佔用、停留異常、影像品質異常;偏離 ≥ 2.0 且 ≥ 10 分「注意」,≥ 3.0 且 ≥ 20 分「異常」,<1.3 持續 5 分結案;語句固定「〔地點〕〔指標〕較基線〔倍數〕,已持續〔分鐘〕」
追蹤 ByteTrack,辨識級相機
去識別化 人頭區與車牌候選區模糊後才產縮圖;原始幀處理後釋放
情境摘要 vLLM(OpenAI 相容 API);VLM_MODEL 預設 Qwen/Qwen3.8-27B(FP8),可切 Qwen/Qwen3-VL-8B-Instruct、nvidia/Cosmos-Reason2-8B、Qwen/Qwen3-VL-4B-Instruct;每事件 1 則、每路每小時 1 則;繁體中文 60 至 120 字;禁詞過濾;VLM_MODE=live|after_capture
指標 每路每分鐘 12 項;群組基線
節點監控 每 10 秒:分析中相機數、相機總數、已分析時長、已處理幀數、平均延遲(p50、p95)、CPU%、GPU%、GPU 記憶體、系統記憶體、儲存使用率、溫度、功耗
本地保存 SQLite 即時、每小時 Parquet、事件縮圖;RETENTION_DAYS=7 到期自動清理並產生銷毀紀錄
上傳 CLOUD_HOST(.env);心跳每 10 秒;指標每分鐘;事件即時;治理資訊每小時;縮圖事件觸發;離線緩衝 24 小時
健康 GET :9100/health:上述監控值+frames_persisted=0、reid_disabled=true、gateway_ok、cloud_ok

2.3 非功能

類別 規格
可用性 管線可用率 ≥ 99%;網關或雲端中斷時本地持續分析並緩衝
延遲 取像到指標更新 ≤ 60 秒;事件到雲端 ≤ 90 秒;心跳到後台 ≤ 15 秒
準確度 mAP50 ≥ 0.6(夜間 ≥ 0.5);計數誤差 ≤ 15%
隱私 去識別化執行率 100%;frames_persisted 永為 0
資安 TLS;Thor 只允許對網關、vLLM(本機)、雲端的連線;EDGE_TOKEN 認證
可觀測性 Prometheus 與 /health;所有 .env 生效值(遮罩金鑰)可由 /config 讀取

3. 平台二:雲端儀表系統規格

3.1 2-A 影像分析監控後台(管理後台)

項目 規格
節點管理 註冊、心跳(10 秒)、60 秒無心跳判離線;多節點列表與地圖
監控面板 每節點:分析中相機數/總數、已分析時長、已處理幀數、平均延遲、CPU、GPU、GPU 記憶體、系統記憶體、儲存、溫度、功耗,24 小時曲線;全體合計
相機面板 每路在線、品質、取樣率、最後成功取像時間、負責節點
分派 後台指定各節點負責行政區或 ID 清單;平台一下次同步生效
告警 GPU >85% 持續 5 分、儲存 >90%、節點離線、相機在線率 <95%;顯示於後台並可 webhook
上傳 API POST /v1/nodes/{node_id}/register、POST /v1/nodes/{node_id}/heartbeat(10 秒一筆)、GET /v1/nodes、GET /v1/nodes/{node_id}/status?from&to;認證 X-Edge-Token

3.2 2-B 城市儀表

項目 規格
上傳 API POST /v1/ingest/metric_1m(批次)、POST /v1/ingest/event(upsert)、POST /v1/ingest/governance(派工、結案、重複、誤報)、POST /v1/thumbs
聚合 每 5 分鐘分區與全市;每小時六分項與複合指數,權重公開可調;persons <5 遮罩
讀取 API /v1/aggregate/*、/v1/index、/v1/events、/v1/ranking、/v1/cameras、/v1/public/summary;WS /v1/ws
版面 沿用 04 儀表原型:12 欄格線,① 健康指數 5 欄 ② 全市脈動 7 欄 ③ 29 區道路地圖 4 欄 ④ 熱點排行 4 欄 ⑤ 事件流 4 欄 ⑥ 影像牆 8 欄 ⑦ 設備健康 4 欄 ⑧ 分區摘要表 12 欄;≤1100 px 兩欄、≤640 px 單欄
城市道路地圖 Leaflet 點圖層+深色底圖(免金鑰;可自架;離線降級純色);每支相機一點,顏色四級(<50、50 至 69、70 至 84、≥85)、半徑隨指數;切換擁擠指數/偏離倍數;區名下鑽、點相機看指標、摘要表點列聚焦、「全市」復位;點以 geo_precision 區分樣式
其他區塊 健康指數與趨勢、六分項走勢、24 小時脈動、事件流(含情境摘要與處置狀態)、熱點排行三指標、影像牆去識別化縮圖每分鐘更新、設備健康(連 2-A 心跳:在線路數、可用率、吞吐、GPU、去識別化率、frames_persisted)、分區摘要表(行政區、攝影機、擁擠指數、尖峰偏離、事件、可用率、負責節點、局處切面);對外唯讀頁
純 HTML POC poc/POC_02_城市儀表.html 單檔約 300 KB,內嵌 Leaflet、392 路清單與座標、示範資料;雙擊開啟不需伺服器;與正式版共用版面與資料格式
效能 首屏 <2 秒;WS 落後 ≤ 90 秒;單路 24 小時查詢 <500 毫秒

3.3 2-C AI 語音答詢

項目 規格
對話 OpenAI Realtime gpt-realtime,語音 marin,辨識 gpt-4o-transcribe(zh),semantic_vad 可打斷;文字輸入送同一會話
金鑰 正式金鑰只在後端;短效金鑰 600 秒
工具 show_city_index、show_district、show_timeline、list_events、show_ranking、compare_districts、show_health、show_nodes(各 Thor 節點資源與相機數)、show_camera(單路指標與最新去識別化縮圖);全部即時讀 2-A/2-B REST
畫面 音訊球四態隨音量變形;舞台進場動畫、數字跳動、曲線描繪;節點資源環形量表;逐字稿與工具標籤
行為 繁體中文口語、≤3 句、只用工具數字、先切畫面、不描述任何人
備援 純 HTML 腳本模式(poc/POC_03_AI語音答詢.html,Web Speech 合成、寫死對話流程)

3.4 純 HTML POC(投標展示交付)

檔案 內容 限制
poc/POC_01_影像分析監控後台.html 兩台模擬 Thor 節點心跳、CPU/GPU/記憶體/儲存環形量表與走勢、相機列表篩選、節點地圖 節點資料為模擬,格式與 2-A API 一致
poc/POC_02_城市儀表.html 04 排版全部八區塊;29 區道路地圖為真實相機位置 指標、事件、指數為示範值
poc/POC_03_AI語音答詢.html 寫死腳本的語音對話與視圖切換 無 Realtime 連線

共同規則:單檔、離線可開、無外部 JS;底圖圖磚為唯一外連(離線時降級);由 poc/build_poc.py 重建。

4. 分析 356 路 24 小時影像的時間評估(逐張取像)

4.1 資料量

項目 計算 結果
取樣 1 張/秒 356 × 86,400 3,076 萬張/日
取樣 1 至 2 張/秒(尖峰 6 小時) 356 × (21,600×2 + 64,800) 3,845 萬張/日
網關請求率 356 至 712 req/s 需連線池與併發控制
流量 712 × 20 KB × 8 尖峰約 114 Mbps,遠低於 MJPEG 串流

4.2 Thor 各階段吞吐

階段 依據 吞吐
取像 aiohttp 連線池 64,網關單張 p95 ≤ 200 ms ≥ 320 req/s/64 併發;需 712 req/s 時併發 128
解碼 libjpeg-turbo 14 核取 50% 8,000 至 10,000 張/秒
YOLO26s INT8 Thor 官方 YOLO26n FP16 單張 1.39 ms;INT8 批次 32 再提升 3 至 4 倍;s 版約一半 2,000 至 3,000 張/秒
VLM Qwen3.8-27B FP8 約 800 則/小時;Qwen3-VL-8B 約 2,400 則/小時 依模型

4.3 時間結論

情境 需求 結果
A. 邊取邊分析(建議) 356 至 712 張/秒 單台 Thor GPU 約 25 至 35%;網關為主要瓶頸,需確認 p95 延遲;24:00 擷取結束即出偵測級指標
B. 兩台 Thor 平行 各 178 路 每台 GPU 約 15%,網關請求率不變但可分兩個網關實例
C. 先錄後算,1 張/秒 3,076 萬 ÷ 2,000 約 4.3 小時
D. VLM 情境摘要(Qwen3.8-27B) 356 × 24 + 約 2,000 事件 = 10,544 則 ÷ 800 約 13 小時;改為僅事件(約 2,000 則)約 2.5 小時;或切 Qwen3-VL-8B 約 4.4 小時

建議組合:偵測級即時 + 事件觸發即時摘要(Qwen3.8,約 2,000 則)+ 每路每小時摘要於擷取結束後批次執行。路數變動時以「取樣率 × 路數 × 86,400 ÷ 2,000」重算,或用 02 HTML 版試算器。

5. 成本概估(展示一次)

項目 金額(新台幣) 備註
Jetson AGX Thor 開發套件 × 1(可加購第二台平行) 約 18 萬/台 US$5,499 +稅運
NVMe 4 TB、10GbE、UPS 約 2 萬/台 —
雲端 VM、資料庫、物件儲存、CDN 1 個月 約 1.5 至 3 萬 台灣區域
OpenAI Realtime 用量 依展示時數 5 分鐘對話量極小
開發人力 4 週(3 至 4 人) 依內部費率 邊緣、雲端後台、儀表與語音

6. 展示腳本(6 分鐘)

  1. 監控後台:兩台 Thor 節點各分析 178 路,GPU、記憶體、儲存即時曲線,已分析 23 小時 58 分(45 秒)。
  2. 語音問「今天台中整體怎麼樣?」:健康指數與趨勢(30 秒)。
  3. 語音問「西屯區呢?」與「哪些路口最擁擠?」:道路地圖下鑽到西屯區、排行(60 秒)。
  4. 事件流:偏離語句、去識別化縮圖、Qwen3.8 情境摘要(60 秒)。
  5. 語音問「Thor 現在跑得怎樣?」:show_nodes 環形量表(45 秒)。
  6. 語音問「有沒有辨識人臉?」:frames_persisted=0、去識別化 100%(30 秒)。
  7. 結語(30 秒)。