首頁  >  文章  >  後端開發  >  AI中Python 的人臉辨識

AI中Python 的人臉辨識

伊谢尔伦
伊谢尔伦原創
2017-04-29 09:41:212428瀏覽

 隨著去年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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn