1. 程式人生 > 其它 >Python到底有多強大?只需 15 行程式碼即可進行人臉檢測

Python到底有多強大?只需 15 行程式碼即可進行人臉檢測

無論你是最近開始探索OpenCV還是已經使用它很長一段時間,在任何一種情況下,您都一定遇到過“人臉檢測”這個詞。隨著機器變得越來越智慧,它們模仿人類行為的能力似乎也在增加,而人臉檢測就是人工智慧的進步之一。

很多人學習python,不知道從何學起。

很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。

很多已經做案例的人,卻不知道如何去學習更加高深的知識。

那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!

QQ群:701698587

歡迎加入,一起討論 一起學習!

所以今天,我們將快速瞭解一下面部檢測是什麼,為什麼它很有用,以及如何禁用 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 檔案

https://github.com/wanghao221/Face-Detection/blob/main/haarcascade_frontalface_default.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

注意:本教程僅適用於影象檔案中的人臉檢測,而不適用於實時攝像機源或視訊。

是不是感覺很棒?你剛剛學習瞭如何實現人工智慧和機器學習最有趣的應用之一。希望你喜歡我的部落格。謝謝閱讀!