兩年多前研究了一下在 Android 上如何用 OpenCV 做臉部偵測及辨識。主要的使用情境如下圖:

因為輸入來源是攝影機的視訊,當時的想法是初步的偵測及辨識還是由裝置執行,比較複雜的計算再上傳到 server 執行:

這幾年許多大廠例如 Google, Facebook, 及 Microsoft 都積極投入發展人工智慧及臉部辨識技術,現在臉部辨識已經是 Mobile OS 上的必備功能:

當時只是簡單弄了一個 prototype,現在回頭看,大致上設計沒有差太多,倒是 API 設計上可以多跟人家學習學習:

public class Tracker<T> {
    public Tracker() {}

    public void onNewItem(int id, T item) {}
    public void onUpdate(Detections<T> detections, T item) {}
    public void onMissing(Detections<T> detections) {}
    public void onDone() {}
}