本篇內(nèi)容介紹了“怎么用Python實現(xiàn)人臉識別功能”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為定西企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作,定西網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
隨著去年alphago 的震撼表現(xiàn),AI 再次成為科技公司的寵兒。AI涉及的領(lǐng)域眾多,圖像識別中的人臉識別是其中一個有趣的分支。百度的BFR,F(xiàn)ace++的開放平臺,漢王,訊飛等等都提供了人臉識別的API,對于老碼農(nóng)而言,自己寫一小段代碼,來看看一張圖片中有幾個人,沒有高大上,只是覺得好玩,而且只需要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);
開源是偉大的,使我們視野更開闊,而且不用重復(fù)造輪子。這里沒有用PIL,再結(jié)合特定算法,而是直接使用了OpenCV(http://opencv.org)。OpenCV是一個基于BSD許可發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統(tǒng)上,輕量而且高效,用C/C++編寫,同時提供了Python、Ruby、MATLAB等接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。
CascadeClassifier是Opencv中做人臉檢測時候的一個級聯(lián)分類器,該類中封裝的是目標(biāo)檢測機制即滑動窗口機制+級聯(lián)分類器的方式。數(shù)據(jù)結(jié)構(gòu)包括Data和FeatureEvaluator兩個主要部分。Data中存儲的是從訓(xùn)練獲得的xml文件中載入的分類器數(shù)據(jù);而FeatureEvaluator中是關(guān)于特征的載入、存儲和計算。這里采用的訓(xùn)練文件是OpenCV中默認(rèn)提供的haarcascadefrontalfacedefault.xml。至于Haar,LBP的具體原理,可以參考o(jì)pencv的相關(guān)文檔,簡單地,可以理解為人臉的特征數(shù)據(jù)。
人臉識別系統(tǒng)一般分為:人臉圖像采集、人臉圖像預(yù)處理、人臉圖像特征提取以及匹配與識別。 簡化起見,之間讀入圖片,這是一張去年中生代北京閉門會的集體照。
調(diào)用 CascadeClassifier 中的調(diào)detectMultiScale函數(shù)進行多尺度檢測,多尺度檢測中會調(diào)用單尺度的方法detectSingleScale。 參數(shù)說明:
scaleFactor 是 圖像的縮放因子
minNeighbors 為每一個級聯(lián)矩形應(yīng)該保留的鄰近個數(shù),可以理解為一個人周邊有幾個人臉
minSize 是檢測窗口的大小
這些參數(shù)都是可以針對圖片進行調(diào)整的,處理結(jié)果返回一個人臉的矩形對象列表。
循環(huán)讀取人臉的矩形對象列表,獲得人臉矩形的坐標(biāo)和寬高, 然后在原圖片中畫出該矩形框,調(diào)用的是OpenCV的rectangle 方法,其中矩形框的顏色等是可調(diào)整的。
萬事具備了,調(diào)用imwrite,將檢測后的結(jié)果保存到指定的位置。結(jié)果圖如下:
神秘感不是這7行代碼,而是OpenCV中的相關(guān)實現(xiàn),OpenCV的中文網(wǎng)也是一個學(xué)習(xí)體會的好場所。
因此,7行代碼只是個噱頭,真正的核心是OpenCV。然后,安裝OpenCV環(huán)境的時候就是有一些坑,特別記錄一下。
建議使用Brew 安裝,如果沒有安裝brew,先執(zhí)行下面命令:
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
然后,指定目標(biāo)倉庫 $brew tap homebrew/science
安裝OpenCV3 $brew install opencv3
安裝速度取決于網(wǎng)絡(luò),安裝完畢需要綁定Python開發(fā)環(huán)境,有多種土方法:
1)增加環(huán)境變量,將opencv 的site-packages 添加到PYTHONPATH中
2)使用ln 軟連接,將cv2.so 鏈接到python 環(huán)境的 site-packages中
3)直接cp cv2.so 到 python 環(huán)境的 site-packages 目錄下
更簡單地是執(zhí)行如下命令:
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
可以全面安裝opencv的各種插件,如QT插件,視頻插件等:
$brew install opencv3 --with-contrib --with-cuda --with-ffmpeg --with-tbb --with-qt5
可能會遇到很多坑,如Error: You must ‘brew link texi2html’ before homebrew/science/opencv3 can be installed
當(dāng)你執(zhí)行 $brew link texi2html
時又會遇錯:Error: Cowardly refusing to 'sudo brew link' You can use brew with sudo, but only if the brew executable is owned by root. However, this is both not recommended and completely unsupported so do so atyour own risk
說明brew 的權(quán)限有問題, 需要解決:$sudo chown root:wheel ‘which brew’
在Ubantu上安裝先要做一下準(zhǔn)備活動
$ aptitude -f install $ sudo apt-get update
然后安裝編譯環(huán)境: $sudo apt-get install build-essential
安裝依賴庫$sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
還要安裝python 依賴及其它依賴庫$sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
獲得opencv源代碼git clone https://github.com/Itseez/opencv.git
終于可以編譯安裝了:
$cd opencv $cmake -D CMAKE_INSTALL_PREFIX=/home/opencv/build -D CMAKE_BUILD_TYPE=RELEASE ..
最后,安裝python-opencv:
$sudo apt-get install python-opencv
一行代碼驗證OpenCV的Python環(huán)境是否成功:
$python -c "import cv2; print dir(cv2)"
如果輸出了很多cv2 的屬性和函數(shù)名的字典,就表示成功;否則的話,還需要繼續(xù)填坑。
“怎么用Python實現(xiàn)人臉識別功能”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!