無論你是最近開始探索OpenCV還是已經使用它很長一段時間,在任何一種情況下,您都一定遇到過“人臉檢測”這個詞。随着機器變得越來越智能,它們模仿人類行為的能力似乎也在增加,而人臉檢測就是人工智能的進步之一。
是以今天,我們将快速了解一下面部檢測是什麼,為什麼它很有用,以及如何僅用 15 行代碼就可以在您的系統上實際實作面部檢測!
讓我們從了解面部檢測開始。
什麼是人臉檢測?
人臉檢測是一種基于人工智能的計算機技術,能夠識别和定位數位照片和視訊中人臉的存在。簡而言之,機器檢測圖像或視訊中人臉的能力。
由于人工智能的重大進步,現在可以檢測圖像或視訊中的人臉,無論光照條件、膚色、頭部姿勢和背景如何。
人臉檢測是幾個人臉相關應用程式的起點,例如人臉識别或人臉驗證。如今,大多數數位裝置中的攝像頭都利用人臉檢測技術來檢測人臉所在的位置并相應地調整焦距。
那麼人臉檢測是如何工作的呢?
很高興你問了!任何人臉檢測應用程式的主幹都是一種算法(機器遵循的簡單分步指南),可幫助确定圖像是正圖像(有臉的圖像)還是負圖像(沒有人臉的圖像)。
為了準确地做到這一點,算法在包含數十萬張人臉圖像和非人臉圖像的海量資料集上進行了訓練。這種經過訓練的機器學習算法可以檢測圖像中是否有人臉,如果檢測到人臉,還會放置一個邊界框。
使用 OpenCV 進行人臉檢測
計算機視覺是人工智能中最令人興奮和最具挑戰性的任務之一,有幾個軟體包可用于解決與計算機視覺相關的問題。OpenCV 是迄今為止最流行的用于解決基于計算機視覺的問題的開源庫。
OpenCV 庫的下載下傳量超過1800 萬次,活躍的使用者社群擁有 47000 名成員。它擁有 2500 種優化算法,包括一整套經典和最先進的計算機視覺和機器學習算法,使其成為機器學習領域最重要的庫之一。
圖像中的人臉檢測是一個簡單的 3 步過程:
第一步:安裝并導入open-cv子產品:
pip install opencv-python
import cv2
import matplotlib.pyplot as plt # 用于繪制圖像
第 2 步:将 XML 檔案加載到系統中
下載下傳 Haar-cascade Classifier XML 檔案并将其加載到系統中:
Haar-cascade Classifier 是一種機器學習算法,我們用大量圖像訓練級聯函數。根據不同的目标對象有不同類型的級聯分類器,這裡我們将使用考慮人臉的分類器将其識别為目标對象。
您可以點選此處找到用于人臉檢測的經過訓練的分類器 XML 檔案
# 加載級聯
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
第 3 步:檢測人臉并在其周圍繪制邊界框
使用Haar-cascade 分類器中的detectMultiScale()函數檢測人臉并在其周圍繪制邊界框:
# 讀取輸入圖像
img = cv2.imread('test.png')
# 檢測人臉
faces = face_cascade.detectMultiScale(image = img, scaleFactor = 1.1, minNeighbors = 5)
# 在人臉周圍繪制邊界框
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 顯示圖像中檢測到的人臉數量
print(len(faces),"faces detected!")
# 繪制檢測到人臉的圖像
finalimg = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
plt.figure(figsize=(12,12))
plt.imshow(finalimg)
plt.axis("off")
plt.show()
detectMultiScale() 參數:
image: CV_8U 類型的矩陣,其中包含檢測到對象的圖像。
scaleFactor:指定在每個圖像比例下圖像尺寸減小多少的參數。
minNeighbors:參數指定每個候選矩形應該保留多少鄰居。
可能需要調整一下這些值來擷取最佳結果。

就像這樣,你可以實作計算機視覺最獨特的應用程式之一。可以在下面的GitHub找到整個人臉檢測實作的詳細代碼模闆。
https://github.com/wanghao221/Face-Detection注意:本教程僅适用于圖像檔案中的人臉檢測,而不适用于實時錄影機源或視訊。
是不是感覺很棒?你剛剛學習了如何實作人工智能和機器學習最有趣的應用之一。希望你喜歡我的部落格。謝謝閱讀!