讀古今文學網 > 刷臉背後:人臉檢測 人臉識別 人臉檢索 > 7.1 人臉檢索簡介 >

7.1 人臉檢索簡介

圖像檢索,亦稱以圖搜圖。輸入一張圖像,算法或程序高效、快速地返回圖像庫中與輸入圖像相似的圖像。如果以一個向量來表示一張圖像,在檢索的過程中,需要依據這些向量做圖像間(輸入圖像與圖像庫中的每張圖像)的相似性檢索/匹配。

對於人臉圖像,其處理過程如下:第一步,檢測每張圖像中的人臉,即人臉檢測;第二步,對每張圖像中的人臉區域進行特徵提取並用這些特徵組成的向量表示該圖像;第三步,對輸入的查詢圖像(Query Image)做與第二步相同的處理;第四步,用第三步中得到的輸入圖像的人臉特徵向量,與圖像庫中每一個人臉的特徵向量進行相似性計算。最終,返回圖像庫中與輸入圖像相似的所有圖像。

在第一步中,我們可以使用多種人臉檢測算法,如 Viola&Jones人臉檢測等算法,在本書第3章中已經講述過這類算法。

在第二步和第三步中,可以使用SIFT、HOG(Histogram of Oriented Gradient)、Gabor、Deep Learning等多種不同的算法,也可以使用PCA降維、感知哈希(PHash)算法、DHash等算法。

在第四步中,主要使用兩種算法,一種是向量之間直接比對的Naive查詢處理算法,另一種是基於KD-Tree結構的高效查詢處理算法,尤其是FLANN(Fast Approximate Nearest Neighbor Search Library)中實現的KD-Tree算法/數據結構。

對於圖像庫中的每張圖像,都需要經過第一步和第二步的處理。而對於用戶查詢的每張圖像,都需要經過第三步和第四步的處理。也就是說,不管是圖像庫中的每張圖像,還是輸入的查詢圖像,都需要經過圖像特徵提取的步驟,這裡需要使用上面提到的SIFT、HOG、Gabor、Deep Learning等算法。

特徵提取和輸入圖像的查詢處理算法,是相對獨立的兩個步驟。在本章中,PHash、DHash、PCA、SIFT、Gabor、HOG、Deep Learning都屬於特徵提取/降維的算法;而Naive查詢處理算法和KD-Tree查詢處理算法是特徵提取之後,進行查詢處理的算法。

下面我們將分別介紹各種特徵提取的算法及查詢處理算法,每個算法都將分別介紹其使用、原理、算法實現、實驗數據、實驗結果及分析。