Python face_recognition實現(xiàn)AI識別圖片中的人物
前言
最近碰到了照片識別的場景,正好使用了face_recognition項目,給大家分享分享。face_recognition項目能做的很多,人臉檢測功能也是有的,是一個比較成熟的項目。該項目的github地址:github倉庫
本文主要是對該項目的安裝使用,后面會更新一篇我自己寫的實現(xiàn)人臉檢測的代碼,可以直接使用。
環(huán)境安裝
首先我們看看官方給出的人臉識別效果圖

我們看一下README關(guān)于安裝環(huán)境的信息

官方給出的可安裝操作系統(tǒng)是Mac和Linux,但是我想在windows安裝,繼續(xù)往下看。

windows雖然不是官方支持,但是也能裝,不就是個dlib嗎?好的,那就開始裝。
我們直接安裝requirements_dev.txt,這里要注意,把pip去掉。

注意一點安裝dlib的時候會報錯,需要先安裝cmake,安裝命令如下:
pip install cmake -i https://pypi.douban.com/simple
除此之外,項目還需要安裝opencv-python,安裝命令如下:
pip install opencv-python -i https://pypi.douban.com/simple
代碼使用
先做一下說明,在使用face_recognition運行的時候,可以選擇安裝face_recognition命令進行運行的模式,也可以使用face_recognition模塊構(gòu)建代碼運行。為了二次開發(fā),我還是先試試代碼的方式,主要試試人臉識別模塊。
官方代碼如下:
import face_recognition
# Load the jpg files into numpy arrays
biden_image = face_recognition.load_image_file("biden.jpg")
obama_image = face_recognition.load_image_file("obama.jpg")
unknown_image = face_recognition.load_image_file("obama2.jpg")
# Get the face encodings for each face in each image file
# Since there could be more than one face in each image, it returns a list of encodings.
# But since I know each image only has one face, I only care about the first encoding in each image, so I grab index 0.
try:
biden_face_encoding = face_recognition.face_encodings(biden_image)[0]
obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]
except IndexError:
print("I wasn't able to locate any faces in at least one of the images. Check the image files. Aborting...")
quit()
known_faces = [
biden_face_encoding,
obama_face_encoding
]
# results is an array of True/False telling if the unknown face matched anyone in the known_faces array
results = face_recognition.compare_faces(known_faces, unknown_face_encoding)
print("Is the unknown face a picture of Biden? {}".format(results[0]))
print("Is the unknown face a picture of Obama? {}".format(results[1]))
print("Is the unknown face a new person that we've never seen before? {}".format(not True in results))
代碼說明:
1、首先可以看到將兩個人臉的數(shù)據(jù)加到了known_faces列表內(nèi)。
2、然后用未知圖數(shù)據(jù)進行識別判斷。
看一下加入到known_faces的照片

看一下需要識別的照片

看一下執(zhí)行結(jié)果

我們可以看到在拜登的識別中提示false,在奧巴馬識別中提示true。這里要注意一點,我們看一下compare_faces方法參數(shù)。

參數(shù)tolerance最佳為0.6,越低越嚴格,所以可以按照自己的需求調(diào)整。
總結(jié)
經(jīng)過我多次測試,在臉型比較接近的情況下,還是會有誤差,需要按照自己的情況進行調(diào)整。
到此這篇關(guān)于Python face_recognition實現(xiàn)AI識別圖片中的人物的文章就介紹到這了,更多相關(guān)Python face_recognition人臉識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python for Informatics 第11章之正則表達式(二)
這篇文章主要介紹了Python for Informatics 第11章 正則表達式(二)的相關(guān)資料,需要的朋友可以參考下2016-04-04
pytorch人工智能之torch.gather算子用法示例
這篇文章主要介紹了pytorch人工智能之torch.gather算子用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Python開發(fā)之os與os.path的使用小結(jié)
這篇文章主要介紹了Python開發(fā)之os與os.path的使用小結(jié),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-05-05
Python判斷和循環(huán)語句的分析與應(yīng)用
判斷語句是用來篩選條件,過濾條件的。循環(huán)語句是用來解決重復性代碼的問題,提高工作效率。今天的知識點不多,耐心看完吧2022-07-07
pytorch實現(xiàn)用Resnet提取特征并保存為txt文件的方法
今天小編大家分享一篇pytorch實現(xiàn)用Resnet提取特征并保存為txt文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08

