展開側邊欄位的漢堡樣式按鈕

已關閉

即時人臉活體檢測 Android 應用程式開發

案件編號 TK25080910KZKJ75 ・2025/12/08 更新

  • 預算金額

    預算詳談

  • 執行地點

    可遠端

  • 接案身份

    兼職上班族、全職接案者、非受雇者、學生

  • 需求說明

    用於哪個行業:資訊安全。 細節說明: 專案背景與目標: 你是否曾開發過人臉檢測或辨識應用程式,或是任何需要使用人臉進行身份驗證或其他任務的應用程式?如果是,你肯定了解其中一個最大的難題:如何判斷攝影機前的人臉是真實的活體人臉,還是僅僅是一張照片、一段回放的影片,甚至是 3D 面具。這正是活體檢測 (Liveness Detection) 技術所要解決的關鍵問題。本專案的目標是將這項至關重要且令人興奮的功能整合到我們現有的即時人臉辨識 Android 應用程式中,使其變得更安全、更具防詐欺能力。 傳統上,在行動應用程式中執行活體檢測通常需要依賴付費服務或 SDKs。然而,透過本專案,我們將利用一個客製化訓練的 TensorFlow Lite 模型,實現免費且完全離線的即時活體檢測功能。這項技術僅需少量程式碼即可整合,大幅提升應用程式的安全性與使用者體驗。 為何活體檢測如此重要? (挑戰與解決方案) 在人臉辨識的應用場景中,存在著嚴重的「欺詐」風險。現有的人臉辨識應用程式可能會錯誤地將駕駛執照或身份證上的照片辨識為真實人臉,並顯示其姓名。這意味著,如果沒有活體檢測,任何人只要持有目標使用者的照片或影片,便有可能繞過安全驗證。 活體檢測正是為了解決此類問題而生。它能夠在執行人臉辨識之前,精準判斷攝影機前的人臉是否為真實活體。一旦檢測到非活體(即欺詐嘗試,如照片或影片),應用程式將不會執行後續的辨識流程,而是直接顯示「spoof」(欺詐)提示。這極大地增強了應用程式的可靠性和防詐欺能力。 核心技術堆疊:TensorFlow Lite 的優勢 本專案將基於 TensorFlow Lite 函式庫進行開發。TensorFlow Lite 是一個Open source的裝置端機器學習函式庫,其核心優勢在於: * 離線執行:模型直接內嵌於應用程式中,無需網路連線即可運行,實現真正的「邊緣機器學習」。 * 低延遲:由於模型位於裝置本身,輸入數據無需往返伺服器,因此處理速度快,結果即時回饋。 * 隱私保護:所有數據處理都在裝置本地完成,無需將敏感人臉數據上傳至雲端,極大地提升了使用者隱私。 * 無需網路連線:這確保了即使在網路不佳或無網路的環境下,應用程式也能正常執行活體檢測功能。 * 低功耗:避免了網路通訊,有助於降低應用程式的整體功耗,使其更加資源親和力。 * 跨平台相容性:TensorFlow Lite 模型的優勢不僅限於 Android 和 iOS 等行動裝置,若你的訓練模型為 TensorFlow Lite 格式,也能夠在 Raspberry Pi、微控制器以及基於 ARM 的系統上使用。這為未來將此功能擴展到嵌入式系統或其他邊緣運算平台提供了極大的彈性。 現有應用程式概覽 (人臉辨識流程): 本專案將在一個已建立的即時人臉辨識 Android 應用程式的基礎上進行。該應用程式已具備以下核心功能: 1. 即時攝影機畫面顯示:利用 `Camera2 API` 和 `CameraConnectionFragment` 顯示即時攝影機畫面。 2. 人臉檢測 (Face Detection):使用 Google ML Kit 函式庫的臉部偵測模型,從即時影像幀中檢測人臉的位置,並繪製矩形邊框。 3. 人臉裁剪:根據人臉檢測的結果,從原始影像中裁剪出人臉部分。 4. 人臉辨識 (Face Recognition):使用 FaceNet 或 MobileFaceNet 模型(TensorFlow Lite 格式)對裁剪後的人臉進行辨識。 * 人臉註冊 (Face Registration):使用者可以為檢測到的人臉指定姓名,應用程式會將該人臉的嵌入 (embedding)(一種數值表示,浮點數陣列)連同姓名儲存到本地資料庫中。 * 人臉識別 (Face Identification):在即時辨識時,應用程式會計算當前人臉的嵌入,並與資料庫中已註冊人臉的嵌入進行比較。若嵌入相似度達到一定閾值,則判定為同一人,並顯示其姓名。 5. 結果顯示:在檢測到的人臉周圍繪製矩形,並顯示辨識出的人名。 活體檢測整合流程與技術細節: 開發者將負責將活體檢測功能無縫整合到上述人臉辨識流程中。主要步驟和技術細節如下: 1. 模型與程式碼檔案整合: * 將預先訓練好的活體檢測模型 `model.tfite`(一個欺詐檢測模型)複製到專案的 `app/assets` 資料夾中,與現有的人臉辨識模型並列。 * 將 `LivenessDetector.java` 類別檔案複製到應用程式的 `recognition` 資料夾中。此類別封裝了模型載入、輸入傳遞和輸出獲取的邏輯。 2. TensorFlow Lite 依賴確認: * 確保 `app/build.gradle` 檔案中已包含 TensorFlow Lite 和 TensorFlow Lite Support 函式庫的必要依賴。 3. 活體檢測器初始化: * 在 `MainActivity` 中宣告並初始化 `LivenessDetector` 物件。 * 在建構函式中,需要傳遞應用程式上下文、模型名稱 (`model.tfite`) 和一個欺詐閾值 (spoof threshold),例如 0.5。此閾值可根據實際測試結果進行調整以優化性能。 * `LivenessDetector` 的建構函式將自動呼叫 `loadModel` 函數,負責載入 `.tfite` 模型。此過程需包含在 try-catch 區塊中,以處理可能拋出的 `IOException`,確保應用程式穩定性。一旦物件創建,欺詐檢測模型即已載入到應用程式中。 4. 模型輸入與輸出處理: * 輸入:活體檢測模型預期接收一個裁剪過的人臉影像作為輸入。此影像必須被調整為特定的尺寸:224x224 像素的 4D 陣列,包含紅、綠、藍三種顏色通道。`LivenessDetector.isLive()` 函數會檢查輸入影像尺寸是否符合要求。 * 輸出:模型會返回一個介於 0 到 1 之間的單一數值。 * 若數值接近 0,表示人臉是真實活體。 * 若數值接近 1,表示人臉是非真實活體(即欺詐)。 5. 活體判斷與流程控制: * 在 `LivenessDetector` 的 `isLive` 函式中,模型輸出的值會與預設的欺詐閾值(例如 0.5)進行比較。 * 如果輸出值小於閾值,`isLive` 函式將返回 `true`,表明檢測到真實活體。 * 如果輸出值大於或等於閾值,則返回 `false`,表明檢測到欺詐。 * 整合到 `performFaceRecognition` 方法中:在對裁剪後的人臉執行人臉辨識之前,首先會對其執行活體檢測。 * 若 `isLive` 返回 `false`(非活體/欺詐),則辨識結果的標題將被修改為「spoof」,而不是辨識到的人名。 * 若 `isLive` 返回 `true`(活體),才會進一步將人臉傳遞給人臉辨識模型進行識別。 專案期望與開發人員技能要求: 我們正在尋找一位具備以下經驗和技能的 Android 開發人員: * 精通 Java 語言和 Android 應用程式開發:能夠理解並修改現有程式碼庫。 * 熟悉 TensorFlow Lite 模型整合:有在 Android 應用中載入、運行和處理 TensorFlow Lite 模型輸入/輸出的經驗。 * 了解人臉檢測與辨識基礎概念:雖然我們提供了基礎應用程式,但理解人臉檢測(如 Google ML Kit)和人臉辨識(如 FaceNet/MobileFaceNet 模型、嵌入、距離比較、註冊流程)的工作原理將非常有幫助。 * 問題解決能力強:能夠獨立調試、測試並優化活體檢測的整合效果,例如根據實際測試結果調整欺詐閾值。 * 注重程式碼品質與可讀性:確保新增程式碼符合專案標準,易於維護。 專案交付物: * 一個功能完整、穩定運行的 Android 應用程式,其中人臉活體檢測功能已無縫整合到現有的即時人臉辨識流程中。 * 可運行且優化的程式碼,附帶必要的註釋和說明。 * 在不同測試場景下(例如使用照片、影片、以及真實活體)的活體檢測功能驗證報告。 我們期待與你合作,共同打造一個更安全、更智慧的即時人臉應用程式!如果你對此專案充滿熱情,並具備上述技能,歡迎你提交提案。 📌我們不接受公司或商業工作室的提案,歡迎 學生或個人開發者 來提案。我們發佈這個專案,是為了籌建一支開發團隊。 如果你是個人或學生,有興趣參與這項技術挑戰,歡迎踴躍提出內容方案。

登入後即可完整查看