臺中城市脈動 展示系統
產品規格書
版本 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 分鐘)
- 監控後台:兩台 Thor 節點各分析 178
路,GPU、記憶體、儲存即時曲線,已分析 23 小時 58 分(45 秒)。
- 語音問「今天台中整體怎麼樣?」:健康指數與趨勢(30 秒)。
- 語音問「西屯區呢?」與「哪些路口最擁擠?」:道路地圖下鑽到西屯區、排行(60
秒)。
- 事件流:偏離語句、去識別化縮圖、Qwen3.8 情境摘要(60 秒)。
- 語音問「Thor 現在跑得怎樣?」:
show_nodes 環形量表(45
秒)。
- 語音問「有沒有辨識人臉?」:
frames_persisted=0、去識別化
100%(30 秒)。
- 結語(30 秒)。