臉部辨識
概述
Immich 能辨識您照片和影片中的臉部並將它們分組成特定人物。您接著可以為這些人物指派姓名,並進行搜尋。
人物列表會顯示於探索頁面。

點擊某個人物後,將顯示包含該人物臉部的資產列表。

資產詳細檢視頁面亦將顯示資產中辨識到的臉部。

操作
您可以進行的其他操作包括:
- 更改人物的特徵照片
- 設定人物的 出生日期
- 將兩個或多個偵測到的臉部合併成同一人物
- 從探索頁面和詳細檢視中隱藏某人物的臉部
- 將未識別的臉部指派給某人物
您可以在訪問人物詳細檢視頁面時於應用程式欄找到此功能。

臉部檢測的運作方式
臉部檢測將生成的預覽圖像發送至機器學習服務進行處理。服務會檢查是否已下載相關模型,若尚未下載則會下載。圖像會被解碼、預處理並傳給臉部檢測模型(如果已設定硬體加速則會使用)。該模型輸出的邊界框和分數將再次用於裁剪和預處理圖像,然後傳送至臉部辨識模型(如果已設定加速也會使用)。辨識模型的嵌入信息與檢測模型的邊界框及分數一起被傳回伺服器並加至資料庫。嵌入信息特別會被索引以便在臉部辨識群集過程中快速搜索。
臉部辨識的運作方式
我們使用的臉部辨識算法源自於 DBSCAN,一個受歡迎的群集算法。它基本上將每個檢測到的臉部視為圖中的一個點,並試圖將彼此靠近的點分組。
一個重要的概念是是否某物是一個 核心點。核心點在一定距離內有最少數量的點圍繞它。一個非核心點只能在它能夠到達某個核心點時被分配到群集;即使屬於某個群集,非核心點也不能用來擴展群集。在 Immich 中,最低辨識臉部數量 設定控制被視為核心點的閾值。
對於每個臉部,算法會查看在一定距離內是否有其他臉部。距離內的臉部被認為是相似的,接著會檢查這些臉部是否與某個人物相關聯。
如果已存在某人物,算法會將最相似臉部所屬的人物指派給正在處理的臉部。
如果沒有,則需依據 DBSCAN 算法確定些情況:該臉部是否為 核心點。如果有一定數量的相似臉部(默認為 3,包括正在考慮的臉部),則該臉部為核心點。會為該臉部創建一個新人物且該臉部會分配給此人物。當處理其他臉部時,如果這些臉部與此臉部相似,它們將看到它有關聯的某人物,並可以分配到該人物。
然而,如果沒有足夠相似的臉部,就不會創建新人物。相反,該臉部將等待所有其他臉部處理完成,看是否有匹配者本來不具關聯人物,但稍後具關聯人物。如果有,該臉部會被分配給該人物。如果沒有,該 臉部將被視為異常者,例如圖像背景中的陌生人物。
該算法與 DBSCAN 存在一些細微差別:
- DBSCAN 沒有增量群集的概念:它一次對所有點進行群集。相比之下,臉部辨識需要隨著新增的資產演進,無需每次重新群集所有資產。
- 上述算法在一組排隊資產中工作。一旦這些臉部完成處理,下一輪臉部被檢測到時,其行為將不同於傳統的 DBSCAN,因為它保留了前一輪生成的群集(人物)。
- 臉部辨識試圖在原因上等待臉部檢測和縮略圖生成完成再開始:排隊臉部的集數越大,結果越好。
- 然而,之後重新對所有資產進行臉部辨識的行為會真正像 DBSCAN。
- 上述算法在一組排隊資產中工作。一旦這些臉部完成處理,下一輪臉部被檢測到時,其行為將不同於傳統的 DBSCAN,因為它保留了前一輪生成的群集(人物)。
- DBSCAN 設計為基於範圍的搜索(即距離內的點),但高維度向量索引通常是針對獲取最接近的 K 結果進行優化。為了性能原因,辨識算法並不嘗試計算 所有 距離內的相類臉部。相反,它為每個臉部搜索一定數量的匹配。一致的最終結果應該非常類似甚至相同,但可能有不同的性能特徵。
- 因此,一部分的辨識過程將在夜間工作以確保可匹配但未分配的臉部可以被辨識。
如果您沒有一次性匯入所有資產或伺服器處理作業的速度超過了您的上傳速度,則群集可能並不理想。如果您尚未對當前結果投入精力,重新對所有資產進行臉部辨識可能值得,作為最佳起點。如果已為時過晚,您也可以手動分配一部分未分配臉部並排隊 缺失 的臉部以進行臉部辨識,幫助它學習並自動分配更多臉部。
設定
導航至 管理 > 設定 > 機器學習設定 > 臉部辨識,將顯示可用選項。
最好僅在此進行參數調整,而不要設置為與默認值相差甚遠的設定,除非您已準備好測試多種選項。如果您確需要將參數設置為某些嚴格的設定,放寬其他設定可能是彌補的一個不錯選擇,反之亦然。
您可以在此 指南 中學習如何調整結果
臉部辨識模型
有幾種不同模型可供選擇;默認模型通常被認為是最佳。對於默認模型運行過於密集的受限系統,您可以選擇較小的模型。
最低檢測分數
此設置影響是否將臉部檢測模型的結果篩選為假正例。看似可以將此值設得較低以檢測更多臉部,但可能導致難以處理的假正例且會對臉部辨識造成損害。強烈建議不要將此設置低於 0.5。將其設置為像 0.9 的非常高值也不建議:默認值已偏向精確,因此如此高的閾值會導致許多臉部未被檢測到。
更改此設置後,僅會應用於新的臉部檢測作業。若要將新設置應用於所有資產,您需要重新對所有資產進行臉部檢測。
最大辨識距離
如何運作臉部辨識中描述的距離閾值。默認值對大多數人而言運行良好,但若圖庫中有雙胞胎或極其相似的面孔,可能值得降低此值。過低的閾值僅意味著需要在臉部辨識後合併重複的人物,而過高的閾值可能產生難以挽回的結果。強烈建議不要低於 0.3 或高於 0.7。
最低辨識臉部數量
如何運作臉部辨識中描述的核心點閾值。此設置有一些影響。首先,它會即刻 生效,顯示少於此數量臉部的人物將被隱藏。其次,它使群集更具穩健性,因為透過要求一定密度的臉部避免松散相關的臉部彼此連結。
如果您增加辨識距離或減少最低檢測分數的情況下,增加此設置是個好主意。將其設為 1 將有效地停用核心點的概念,但如果您更喜歡手動操作,這是一個選項。