隨著去年alphago 的震撼表現,AI 再次成為科技公司的寵兒。 AI涉及的領域眾多,影像辨識中的人臉辨識是其中一個有趣的分支。百度的BFR,Face++的開放平台,漢王,訊飛等等都提供了人臉識別的API,對於老碼農而言,自己寫一小段代碼,來看看一張圖片中有幾個人,沒有高大上,只是覺得好玩,只需要7行程式碼。
import cv2 face_patterns = cv2.CascadeClassifier('/usr/local/opt/opencv3/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml') sample_image = cv2.imread('/Users/abel/201612.jpg') faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(100, 100)) for (x, y, w, h) in faces: cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.imwrite('/Users/abel/201612_detected.png', sample_image);
第1行 引入 OpenCV
開源是偉大的,使我們視野更開闊,而且不用重複造輪子。這裡沒有用PIL,再結合特定演算法,而是直接使用了OpenCV(http://opencv.org)。 OpenCV是一個基於BSD許可發行的跨平台電腦視覺庫,可以運行在Linux、Windows和Mac OS作業系統上,輕量且高效,用C/C++編寫,同時提供了Python、Ruby、MATLAB等接口,實現了圖像處理和電腦視覺方面的許多通用演算法。
第2行載入分類器cv2.CascadeClassifier
# CascadeClassifier是Opencv中做人臉偵測時候的一個級聯分類器,該類別中封裝的是目標偵測機制即滑動視窗機制+級聯分類器的方式。資料結構包括Data和FeatureEvaluator兩個主要部分。 Data中儲存的是從訓練獲得的xml檔案中載入的分類器資料;而FeatureEvaluator中是關於特徵的載入、儲存和計算。這裡採用的訓練檔案是OpenCV中預設提供的haarcascade frontalface default.xml。至於Haar,LBP的具體原理,可以參考opencv的相關文檔,簡單地,可以理解為人臉的特徵資料。
第3行 載入目標圖片 imread
人臉辨識系統一般分為:人臉影像擷取、人臉影像預處理、人臉影像特徵擷取、配對與辨識。 簡化起見,之間讀入圖片,
第4行多尺度偵測detectMultiScale
呼叫CascadeClassifier 中的調detectMultiScale函數進行多尺度偵測,多尺度偵測中會呼叫單尺度的方法偵測detectSingleScale。 參數說明:
scaleFactor 是影像的縮放因子
minNeighbors 為每個級聯矩形應該保留的鄰近個數,可以理解為一個人周邊有幾個人臉
minSize 是偵測視窗的大小
這些參數都是可以針對圖片進行調整的,處理結果傳回一個人臉的矩形物件清單。
第5行和第6行為每個人臉畫一個框
循環讀取人臉的矩形物件列表,獲得人臉矩形的座標和寬高, 然後在原圖片中畫出該矩形框,呼叫的是OpenCV的rectangle 方法,其中矩形框的顏色等是可調整的。
第7行 保存偵測後的結果
神秘感不是這7行程式碼,而是OpenCV中的相關實現,OpenCV的中文網也是一個學習體會的好場所。
因此,7行程式碼只是個噱頭,真正的核心是OpenCV。然後,安裝OpenCV環境的時候就是有一些坑,特別記錄一下。
基於Mac的OpenCV環境
建議使用Brew 安裝,如果沒有安裝brew,先執行下面指令:
#$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
然後,指定目標倉庫$brew tap homebrew/science
安裝OpenCV3 $brew install opencv3
安裝速度取決於網絡,安裝完畢需要綁定Python開發環境,有多種土方法:
1)增加環境變量,將opencv 的site-packages 添加到PYTHONPATH中
2)使用ln 軟連接,將cv2.so 鏈接到python 環境的site-packages中
# 3 3 3 3 3 3 3 3 3 )直接cp cv2.so 到python 環境的site-packages 目錄下
# 更簡單地是執行以下命令:
#echo /usr/local/opt/opencv3/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/opencv3.pth mkdir -p /Users/hecom/.local/lib/python2.7/site-packages echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/hecom/.local/lib/python2.7/site-packages/homebrew.pth
以上是AI中Python 的人臉辨識的詳細內容。更多資訊請關注PHP中文網其他相關文章!