1. 準備與需求分析
- 確認使用場景:門禁、零售、工業或監控。
- 功能需求:即時辨識、批次比對、畫面解析度與延遲要求(例如延遲 <100ms)。
- 法規檢視:依台灣個資法(Personal Data Protection Act)進行資料最少化、告知與保存策略。
2. 硬體選型(邊緣伺服器與相機)
- 邊緣伺服器:建議選擇帶有GPU或NPU的工業盒式伺服器(例如NVIDIA Jetson、Intel NUC + GPU或Xavier)。
- 相機:選擇支援RTSP、ONVIF與PoE,畫質至少720p,夜間IR視需求。
- 儲存與網路:SSD 256GB以上,千兆以太網,考慮4G/5G備援。
3. 作業系統與基礎軟體安裝
- 作業系統:建議Ubuntu LTS(20.04/22.04)或官方支援的系統。
- 基礎套件:sudo apt update && sudo apt install -y build-essential curl git vim tmux。
- 時區與語言:timedatectl set-timezone Asia/Taipei。
4. 容器化環境與資源限制
- 安裝Docker:依官方步驟安裝 Docker CE,並加入docker群組。
- 若使用k3s或k8s:在多台邊緣節點上部署輕量級k3s,設定資源配額(例如limits cpu=2,memory=4Gi)。
- 建議使用containerd或nvidia-docker以支援GPU。
5. 相機串接與RTSP測試
- 確定相機IP與帳密,使用vlc或ffmpeg測試:ffmpeg -i rtsp://user:pass@camera_ip:554/stream。
- 若網路NAT或VLAN,設定Port轉發或內部網段路由。
- 建議設置固定IP或DHCP靜態租約。
6. 人臉模型與推論框架準備
- 選擇模型:MobileFaceNet、ArcFace或商業SDK,考慮精準度與速度。
- 轉換格式:若使用ONNX,從PyTorch導出:torch.onnx.export(...)。再使用ONNX Runtime或TensorRT優化。
- 優化指令範例:trtexec --onnx=model.onnx --saveEngine=model.trt --fp16。
7. 架構設計:Pipeline與微服務
- 建議拆成Capture → Detect → Align → FeatureExtract → Compare → API六個服務。
- 每個服務可用容器部署,透過gRPC或REST串接。
- 設定服務間心跳與超時(例如detect timeout 200ms)。
8. 人臉檢測(Detect)實作步驟
- 安裝檢測模型與依賴(例如MTCNN、RetinaFace)。
- 實作要點:輸入resize、NMS閾值設定(例如iou=0.4)、confidence threshold(例如0.6)。
- 測試:將攝影機影格送入檢測服務,檢查bounding box穩定性與FPS。
9. 對齊與特徵提取(Align & Feature)
- 對齊:使用五點標記或68點landmark做仿射變換,統一輸入尺寸(例如112x112)。
- 特徵提取:將對齊後的臉送入Feature模型,輸出128/512維向量並做L2正規化。
- 儲存格式:特徵用Key-Value資料庫儲存(Redis或SQLite)並存入metadata(時間、相機ID)。
10. 比對策略與閾值設定
- 相似度計算:使用cosine similarity或Euclidean distance。
- 閾值建議:cosine > 0.35為疑似,>0.5為高可信(需依驗證集調整)。
- 批次比對:當庫很大時,先用聚類/LSH做候選集再精比對。
11. 部署範例:使用Docker Compose快速起服務
- 建立docker-compose.yml,包含camera-proxy、detect、feature、api服務。
- 範例命令:docker-compose up -d --build。
- 日誌檢查:docker-compose logs -f detect 查看檢測服務錯誤。
12. 測試驗證與性能優化
- 功能測試:逐步測試從影格擷取到比對回傳的每個模塊。
- 壓力測試:使用wrk或自製壓力腳本模擬多路相機輸入,監測CPU/GPU/記憶體。
- 優化方式:量化模型、使用batch處理、降低輸入解析度或增加邊緣GPU。
13. 安全與隱私合規(台灣重點)
- 資料最小化:只保留必要的臉部特徵向量與事件紀錄,縮短保存期限。
- 傳輸加密:內部API與相機連線使用TLS或IPsec。
- 日誌與存取控管:啟用RBAC,紀錄誰查詢過哪筆辨識結果。
14. 維運、升級與備援策略
- 監控:Prometheus + Grafana監控延遲、FPS、記憶體。設定告警閾值。
- 自動化部署:使用CI/CD(GitLab CI / GitHub Actions)打包鏡像並自動滾動更新。
- 備援:多區域多節點分散部署、備份特徵庫到中心化資料庫。
15. 常見故障排除要點
- 相機斷線:檢查網路、PoE電源與相機健康頁面。
- 模型精準度下降:重新蒐集在地資料做微調(transfer learning)並評估A/B測試。
- 延遲暴增:檢查GPU利用率、swap使用與網路延遲。
16. 問:在台灣部署此系統最需注意的法規是什麼?
- 答:主要注意個人資料保護法(PDPA),需落實告知、目的限制、保存期間與資料安全措施,若有跨境傳輸則需評估法規限制。
17. 答:如何降低邊緣設備的運算負載?
- 建議:使用模型量化(INT8)、採用更輕量的模型架構、先做粗檢測再精比對,以及利用NPU/GPU加速和批次處理。
18. 問:若要在多地點擴展該系統,建議的架構為何?
- 答:採邊緣處理+中央管理的混合架構:各場域保留即時辨識能力,中央伺服器負責特徵庫同步、策略下發與統一監控,並用VPN或MQTT安全同步。
来源:部署指南台湾人脸识别服务器 在边缘计算场景的实现步骤