亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么構建人臉識別模型

發布時間:2021-11-22 16:29:08 來源:億速云 閱讀:185 作者:iii 欄目:編程語言

這篇文章主要講解了“Python怎么構建人臉識別模型”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python怎么構建人臉識別模型”吧!

01 介紹

你是否意識到,每當你上傳照片到Facebook上,平臺都會用人臉識別算法來識別圖片中的人物?目前還有一些政府在用人臉識別技術來識別和抓捕罪犯。此外,最常見的應用就是通過自己的臉部解鎖手機。

計算機視覺的子領域應用得非常廣泛,并且全球很多商業活動都已經從中獲益。人臉識別模型的使用在接下來的幾年內還會繼續增長,所以一起來了解如何從零開始構建人臉識別模型吧!

本文首先會介紹人臉識別模型的內部工作原理。隨后結合一個簡單的案例,我們將通過Python進行案例實踐。在本文的***部分,你將完成你的***個人臉識別模型!

02 理解人臉識別的工作原理

為了理解人臉識別算法工作原理,我們首先來了解一下特征向量的概念。(譯者注:此處的特征向量指機器學習的概念,不同于矩陣理論。)

每個機器學習算法都會將數據集作為輸入,并從中學習經驗。算法會遍歷數據并識別數據中的模式。例如,假定我們希望識別指定圖片中人物的臉,很多物體是可以看作模式的:

  • 臉部的長度/寬度。

  • 由于圖片比例會被調整,長度和高度可能并不可靠。然而,在放縮圖片后,比例是保持不變的——臉部長度和寬度的比例不會改變。

  • 臉部膚色。

  • 臉上局部細節的寬度,如嘴,鼻子等。

顯而易見,此時存在一個模式——不同的臉有不同的維度,相似的臉有相似的維度。有挑戰性的是需要將特定的臉轉為數字,因為機器學習算法只能理解數字。表示一張臉的數字(或訓練集中的一個元素)可以稱為特征向量。一個特征向量包括特定順序的各種數字。

舉一個簡單的例子,我們可以將一張臉映射到一個特征向量上。特征向量由不同的特征組成,如:

  • 臉的長度(cm)

  • 臉的寬度(cm)

  • 臉的平均膚色(R,G,B)

  • 唇部寬度(cm)

  • 鼻子長度(cm)

當給定一個圖片時,我們可以標注不同的特征并將其轉化為如下的特征向量:

Python怎么構建人臉識別模型

如此一來,我們的圖片現在被轉化為一個向量,可以表示為(23.1,15.8,255,224,189,5.2,4.4)。當然我們還可以從圖片中衍生出無數的其他特征(如,頭發顏色,胡須,眼鏡等)。然而在這個簡單的例子中,我們只考慮這五個簡單的特征。

現在,一旦我們將每個圖片解碼為特征向量,問題就變得更簡單。明顯地,當我們使用同一個人的兩張面部圖片時,提取的特征向量會非常相似。換言之,兩個特征向量的“距離”就變得非常小。

此時機器學習可以幫我們完成兩件事:

  • 提取特征向量。由于特征過多,手動列出所有特征是非常困難的。一個機器學習算法可以自動標注很多特征。例如,一個復雜的特征可能是:鼻子長度和前額寬度的比例。手動列出所有的這些衍生特征是非常困難的。

  • 匹配算法:一旦得到特征向量,機器學習算法需要將新圖片和語料庫中的特征向量進行匹配。

既然我們對人臉識別如何工作有了基本的理解,讓我們運用一些廣泛使用的Python庫來搭建自己的人臉識別算法。

03 案例學習

首先給定一些人物臉部的圖片——可能是一些名人,如Mark Zuckerberg, Warren Buffett, Bill Gates, Shah Rukh Khan等,并把這些人臉看作我們的語料庫。現在,我們給定一些其他名人的新圖片(“新人物”),并判斷這些“新人物”是否在語料庫中。

以下是語料庫中的圖片:

Python怎么構建人臉識別模型

如圖所示,我們所列舉的名人有Barack Obama, Bill Gates, Jeff Bezos, Mark Zuckerberg, Ray Dalio 和Shah Rukh Khan。

現在,假定“新人物”如下:

Python怎么構建人臉識別模型

▲注:以上所有圖片均來自Google圖片

顯而易見,這是Shah Rukh Khan。然而對電腦來說,這個任務很有挑戰性。因為對于我們來說,我們可以輕易地將圖片的多種特征結合來判斷這是哪個人物。然而對電腦而言,學習如何識別人臉是非常不直觀的。

有一個神奇但是簡單的python庫封裝了以上提及的內容——可以根據臉部特征生成特征向量并且知道如何區分不同的臉。這個python庫叫做face_recognition。它應用了dlib——一個現代C++工具包,其中包含了一些機器學習算法來幫助完成復雜的基于C++的應用。

Python中的face_recognition庫可以完成大量的任務:

  • 發現給定圖片中所有的臉。

  • 發現并處理圖片中的臉部特征。

  • 識別圖片中的臉。

  • 實時的人臉識別。

接下來,我們將探討其中的第三種任務——識別圖片中的臉。

你可以在github的如下鏈接中獲取face_recognition庫的源代碼。

04 Python應用

這部分包括使用face_recognition庫搭建簡單人臉識別系統的代碼。這是一個應用操作的部分,我們將在下一部分解讀代碼來理解更多細節。

# import the libraries  import os  import face_recognition  # make a list of all the available images  images = os.listdir('images')  # load your image  image_to_be_matched = face_recognition.load_image_file('my_image.jpg')  # encoded the loaded image into a feature vector  image_to_be_matched_encoded = face_recognition.face_encodings(      image_to_be_matched)[0]  # iterate over each image  for image in images:      # load the image      current_image = face_recognition.load_image_file("images/" + image)      # encode the loaded image into a feature vector      current_image_encoded = face_recognition.face_encodings(current_image)[0]      # match your image with the image and check if it matches      result = face_recognition.compare_faces(          [image_to_be_matched_encoded], current_image_encoded)      # check if it was a match      if result[0] == True:          print "Matched: " + image      else:          print "Not matched: " + image

文件結構如下:

facialrecognition:

  • fr.py

  • my_image.jpg

  • images/

  • barack_obama.jpg

  • bill_gates.jpg

  • jeff_bezos.jpg

  • mark_zuckerberg.jpg

  • ray_dalio.jpg

  • shah_rukh_khan.jpg

  • warren_buffett.jpg

我們的根目錄,facialrecognition包括:

  • fr.py的形式的人臉識別代碼。

  • my_image.jpg – 即將被識別的圖片(“新人物”)。

  • images/ – 語料庫。

如果你按照前文創建文件結構并執行代碼,如下是你能得到的結果:

Matched: shah_rukh_khan.jpg  Not matched: warren_buffett.jpg  Not matched: barack_obama.jpg  Not matched: ray_dalio.jpg  Not matched: bill_gates.jpg  Not matched: jeff_bezos.jpg  Not matched: mark_zuckerberg.jpg

顯而易見,新名人是Shah Rukh Khan 并且我們的人臉識別系統可以識別!

05 理解Python代碼

現在讓我們解讀代碼來,并理解其工作原理:

# import the libraries  import os  import face_recognition

以上是引入操作。我們將通過已經建好的os庫來讀入語料庫中的所有圖片,并且通過face_recognition來完成算法部分。

# make a list of all the available images  images = os.listdir('images')

這個簡單的代碼將幫助我們識別語料庫中所有圖片的路徑。一旦執行這些代碼,我們可以得到:

images = ['shah_rukh_khan.jpg', 'warren_buffett.jpg', 'barack_obama.jpg', 'ray_dalio.jpg', 'bill_gates.jpg', 'jeff_bezos.jpg', 'mark_zuckerberg.jpg']

現在,以下代碼將加載新人物的圖片:

# load your image  image_to_be_matched = face_recognition.load_image_file('my_image.jpg')

為了保證算法可以解析圖片,我們將人物臉部圖片轉化為特征向量:

# encoded the loaded image into a feature vector  image_to_be_matched_encoded = face_recognition.face_encodings(      image_to_be_matched)[0]

剩余的代碼相對簡單:

# iterate over each image  for image in images:      # load the image      current_image = face_recognition.load_image_file("images/" + image)      # encode the loaded image into a feature vector      current_image_encoded = face_recognition.face_encodings(current_image)[0]      # match your image with the image and check if it matches      result = face_recognition.compare_faces(          [image_to_be_matched_encoded], current_image_encoded)      # check if it was a match      if result[0] == True:          print "Matched: " + image      else:          print "Not matched: " + image

此時,我們:

  • 對每個圖像進行循環操作。

  • 將圖像解析為特征向量。

  • 比較語料庫中已經加載的圖片和被識別的新人物圖片。

  • 如果兩者匹配,我們就顯示出來。如果不匹配,我們也要顯示結果。

如上所示,結果顯示這個簡單的人臉識別算法進行得很順利。讓我們嘗試將my_image替換為另一個圖片:

Python怎么構建人臉識別模型

當你再次運行這個算法,將會看到如下結果:

Not matched: shah_rukh_khan.jpg  Not matched: warren_buffett.jpg  Not matched: barack_obama.jpg  Not matched: ray_dalio.jpg  Not matched: bill_gates.jpg  Not matched: jeff_bezos.jpg  Not matched: mark_zuckerberg.jpg

很明顯,系統沒有將馬云識別為以上的任何一個名人。這意味著我們的算法在以下方面都表現得很好:

  • 正確地識別那些在語料庫中存儲的人。

  • 對語料庫中不存在的人物進行標注。

06 人臉識別算法的應用

人臉識別是一個成熟的研究方向,已被廣泛地應用在工業界和學術界。例如,一個罪犯在中國被捕可能就得益于人臉識別系統:系統識別了他的臉并發出警報。由此可見,面部識別可以用來減少犯罪。還有許多其他有趣的人臉識別案例:

  • 面部身份驗證:Apple在iPhones中引入了Face ID以用于面部身份驗證。一些銀行也嘗試使用面部身份驗證來解鎖。

  • 用戶服務:馬來西亞的一些銀行安裝了新的人臉識別系統,用于識別有價值的銀行客戶,以便銀行為其提供個人服務。進而銀行可以通過維持這類用戶并提升用戶滿意度來獲取更多收益。

  • 保險行業:很多保險公司正在通過運用人臉識別系統來匹配人的臉和ID提供的照片,使賠付過程變得更簡單。

感謝各位的閱讀,以上就是“Python怎么構建人臉識別模型”的內容了,經過本文的學習后,相信大家對Python怎么構建人臉識別模型這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定远县| 贡山| 临洮县| 嘉善县| 克山县| 调兵山市| 苏尼特右旗| 龙南县| 文安县| 甘肃省| 墨江| 云和县| 通化市| 汶川县| 罗田县| 贺兰县| 阿城市| 九龙坡区| 青铜峡市| 海兴县| 双辽市| 蛟河市| 诏安县| 莱阳市| 宁远县| 来安县| 丰台区| 泊头市| 达拉特旗| 黎城县| 吕梁市| 界首市| 海兴县| 治多县| 乡城县| 宁明县| 新兴县| 登封市| 海门市| 祁连县| 汝阳县|