
爛裝置是什麼?
這次的主角是:Qualcomm Snapdragon QM215,搭配 2GB RAM,架構為 ARMv8-A。
這顆 SoC 是高通在 2019 年發售的超入門處理器,設計初衷就是給低價 Android 手機或 IoT 設備使用。雖然它支援 64bit 架構、雙鏡頭、功耗低,
但同時也有幾個硬傷:
- 沒有 NPU,AI 要靠 CPU/GPU 硬扛
- RAM 上限 3GB,實際只裝了 2GB(為了省錢)
- 四核心 Cortex-A53,最高只有 1.3GHz
你是公司請來的技術負責人,2024 年收到這顆晶片,要在它上面做臉部辨識。你不能翻桌,也不能罵老闆,因為創業公司改硬體是禁忌,只能想辦法把爛機救活。
應用場景
任務需求不是簡單的開個鏡頭而已,而是:
臉部辨識設備,通過 BCTC 增強級認證(金融等級)
要求包含:
- 辨識時間 < 1 秒
- 辨識精度 99.99%
- 活體安全認證(增強級)
系統環境與初步評估
作業系統:Android 10
雖然 QM215 官方只提供 Android 9 的 BSP,但我們選擇升級到 Android 10,目的是希望減少非預期錯誤。代價是:Android 9~10 的系統服務預設就非常肥,光是開機就吃掉了 1.3GB RAM。
鏡頭需求:RGB + TOF 雙鏡頭串流
- TOF(Time of Flight)是活體辨識的關鍵
- 我們採用的是 IR 結構光實作
- 雙鏡頭串流 + Frame buffer 處理,經測試約佔 950MB 記憶體
AI Model 推論架構
完整臉部辨識流程包含:
Face Detect → Face Align → Liveness Detection → Image Quality Check
→ Feature Extraction → Feature Matching
其中 Image Quality Check 又細分為:
- head_pose_model
- expression_model
- blurriness_model
- occlusion_model
- cv_over_exposure
這些模組大多用 TensorFlow Lite / NCNN 實作,也有些用影像處理簡化掉,但仍然要吃掉 約 300MB 記憶體。
問題馬上浮現
鏡頭 950 MB + AI 模型 300 MB + System 1300 MB = 3180 MB > 2000 MB
RAM 直接炸裂。
CPU 幾乎長期 90% 滿載(A53 x4 核心)
AI 推論 + 影像處理壓力極大。
目前推論 + 鏡頭總處理時間 = 1.5 秒
距離 <1 秒有點距離。
我們的方向
- 記憶體節省是第一要務
- 運算速度優化必須同步進行
因為我們有修改 AOSP 的權限,第一步可以從砍掉沒用的 system service 開始。
但在那之前,請記得:
飛機起飛前,先裝好儀表板。
沒有記憶體使用監控、沒有效能監控工具,一切都是瞎忙。