色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用Python寫一個人臉識別系統

奈因PCB電路板設計 ? 來源:CSDN博客 ? 作者:Together_CZ ? 2021-08-11 10:37 ? 次閱讀

face_recognition是一個強大、簡單、易上手的人臉識別開源項目,并且配備了完整的開發文檔和應用案例,特別是兼容樹莓派系統。 face_recognition一經開源發布就得到的廣泛的熱捧,使用簡單,功能強大成為其非常顯著的標簽。face_recognition對于公司或者是一些工程實踐性的應用場景來說是非常好用好上手的利器,不需要你有太多的理論基礎就可以比較輕松地去完成一個識別項目,所以今天我們專門來講解一下。

首先face_recognition項目開源地址是:https://github.com/ageitgey/face_recognition

網上有比較完整的API說明以及實例應用,我這里就不多去說明了。首先,使用face_recognition需要安裝,可以通過pip完成。

安裝完成后就可以使用了,在編碼前可以通過簡單的測試來檢驗是否安裝成功,如下所示:

成功安裝后,就可以進入使用了。

1、定位圖像中的人臉

def demoFunc():

‘’‘

在一張包含人臉的圖片中圈出來人臉

’‘’

image = face_recognition.load_image_file(“test.jpg”)

face_locations = face_recognition.face_locations(image)

for one in face_locations:

y0, x1, y1, x0=one

cv2.rectangle(image, pt1=(x0, y0), pt2=(x1, y1), color=(0, 0, 255), thickness=3)

cv2.imshow(‘aaa’, image)

if cv2.waitKey(0) & 0xFF == ord(‘q’):

cv2.destroyAllWindows()

感覺還是很強大的,當然了,在我實踐的過程中也發現了部分圖像識別檢測人臉失敗的問題,這個畢竟不是一個百分之百的問題,face_recognition更像是一個基礎框架,幫助我們更加高效地去構建自己的人臉識別的相關應用。

2、切割圖像中的每個人臉保存本地

def demoFunc():

‘’‘

圖片中人臉截圖保存

’‘’

img = cv2.imread(“test.jpg”)

image = face_recognition.load_image_file(“test.jpg”)

face_locations = face_recognition.face_locations(image) #(top, right, bottom, left)

for i in range(len(face_locations)):

y0, x1, y1, x0 = face_locations[i]

cropped = img.crop((x0,y0,x1,y1)) # (left, upper, right, lower) 左上角 右下角

cropped.save(str(i)+“_.jpg”)

cropped.show()

使用的原始圖像同上,結果如下所示:

五張人臉都檢測成功,并且保存成功,這里主要是要注意一些face_locations這個函數的返回結果,返回的子列表中每個子列表包含4個元素,分別是單張人臉圖像的左上頂點和右下頂點坐標,主要需要注意的是這四個參數的順序,我給出來的結果中(x0,y0)表示左上頂點的坐標,(x1,y1)表示右下頂點的坐標。

3、將圖像中的每個人臉編碼成一個128維的向量

def demoFunc():

‘’‘

將圖片中的每張人臉編碼成一個128維長度的向量

’‘’

image = face_recognition.load_image_file(“cl.jpg”)

face_locations = face_recognition.face_locations(image) #(top, right, bottom, left)

face_encodings = face_recognition.face_encodings(image, face_locations) #將單個人臉數據轉化為一個128維的向量

for one in face_encodings:

print(‘one: ’,one)

進行到這里就不得不去講一下face_recognition的一些應用原理,下面是我的一些總結,如有不當歡迎指教。

face_recognition模塊人臉識別應用實現的原理:

(1) 給定想要識別的人臉的圖片并對其進行編碼(每個人只需要一張),并將這些不同的人臉編碼構建成一個列表。編碼其實就是將人臉圖片映射成一個128維的特征向量。

(2) 計算圖像向量之間的相似度根據閾值或者是容錯度來決定是否是同一個人。

(3) 輸出識別結果標簽。

毫不夸張地說,face_recognition整個的核心就在于這一塊的向量化處理中,輸入的每一張人臉圖像都會被轉化為一個128維的特征向量進行存儲,128維特征向量的生成也是一個算法在里面的感興趣的話可以去查一下深入了解一下,我這里就不展開了,之后的人臉識別就轉化為了兩個人臉圖像之間向量相似度的問題了。

這里使用一張成龍大哥的圖像來進行測試,原始圖像如下所示:

向量化結果如下:

9dda3ef8-f6fd-11eb-9bcf-12bb97331649.png

如果自己想要構建自己的個性化應用的話一般會選擇在這里進行改造,首先就是需要保存這里的特征向量。

4、輸入兩張人臉圖像,判斷是否是同一個人

def demoFunc(one_pic=‘c1.jpg’,two_pic=‘c2.jpg’):

‘’‘

給定兩張圖片,判斷是否是同一個人

’‘’

chenglong = face_recognition.load_image_file(one_pic)

unknown_image = face_recognition.load_image_file(two_pic)

biden_encoding = face_recognition.face_encodings(chenglong)[0]

unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

results = face_recognition.compare_faces([biden_encoding], unknown_encoding)

print(‘results: ’,results)

return results[0]

這里其實跟上面第三部分的有點相似,這部分是建立在第三部分基礎上的只不過是自帶了compare_faces這個相似度計算接口,這里其實可以自己去實現替換的。

同樣,使用了兩張成龍大哥的圖像來進行測試,原始圖像如下所示:

測試結果如下:

9e01090c-f6fd-11eb-9bcf-12bb97331649.png

5、臉部關鍵點識別和標注

def demoFunc(pic_path=‘cl.jpg’):

‘’‘

臉部關鍵點識別、標注

’‘’

image = face_recognition.load_image_file(pic_path)

face_landmarks_list = face_recognition.face_landmarks(image)

print(“I found {} face(s) in this photograph.”.format(len(face_landmarks_list)))

pil_image = Image.fromarray(image)

d = ImageDraw.Draw(pil_image)

for face_landmarks in face_landmarks_list:

for facial_feature in face_landmarks.keys():

print(“The {} in this face has the following points: {}”.format(facial_feature, face_landmarks[facial_feature]))

for facial_feature in face_landmarks.keys():

d.line(face_landmarks[facial_feature], width=5)

pil_image.show()

臉部的關鍵點包括:鼻子、嘴巴、眼睛、眉毛等,這里還是用的上面成龍大哥的圖片,下面的結果輸出:

9e15c2ca-f6fd-11eb-9bcf-12bb97331649.png

6、化妝

這部分是建立在第五部分基礎上的,得到的面部的特征以后就可以進行自動化妝了,下面是具體的實現:

def demoFunc(pic_path=“haiwang.jpg”):

‘’‘

化妝

’‘’

image = face_recognition.load_image_file(pic_path)

face_landmarks_list = face_recognition.face_landmarks(image)

pil_image = Image.fromarray(image)

for face_landmarks in face_landmarks_list:

demo = ImageDraw.Draw(pil_image, ‘RGBA’)

demo.polygon(face_landmarks[‘left_eyebrow’], fill=(68, 54, 39, 128))

demo.polygon(face_landmarks[‘right_eyebrow’], fill=(68, 54, 39, 128))

demo.line(face_landmarks[‘left_eyebrow’], fill=(68, 54, 39, 150), width=2)

demo.line(face_landmarks[‘right_eyebrow’], fill=(68, 54, 39, 150), width=2)

demo.polygon(face_landmarks[‘top_lip’], fill=(150, 0, 0, 128))

demo.polygon(face_landmarks[‘bottom_lip’], fill=(150, 0, 0, 128))

demo.line(face_landmarks[‘top_lip’], fill=(150, 0, 0, 64), width=2)

demo.line(face_landmarks[‘bottom_lip’], fill=(150, 0, 0, 64), width=2)

demo.polygon(face_landmarks[‘left_eye’], fill=(255, 255, 255, 30))

demo.polygon(face_landmarks[‘right_eye’], fill=(255, 255, 255, 30))

demo.line(face_landmarks[‘left_eye’] + [face_landmarks[‘left_eye’][0]], fill=(0, 0, 0, 110), width=2)

demo.line(face_landmarks[‘right_eye’] + [face_landmarks[‘right_eye’][0]], fill=(0, 0, 0, 110), width=2)

pil_image.show()

7、基于face_recognition構建自己的簡單人臉識別應用

上面介紹了很多face_recognition的應用,這里才是最重要的內容我覺得是這樣的,基于已有的功能來實現我們自己的個性化應用,我這里只是簡單的拋磚引玉,給出來自己的最最簡單的實現:

def faceRecognitionDemo(picDir=‘data/’, test_pic=‘test.png’):

‘’‘

基于 face_recognition 構建人臉識別模塊

’‘’

pic_list=os.listdir(picDir)

for one_pic in pic_list:

one_pic_path=picDir+one_pic

one_res=demo6(one_pic=one_pic_path,two_pic=test_pic)

one_name=one_pic.split(‘。’)[0].strip()

if one_res:

print(‘This Person is: ’, one_name)

break

else:

print(‘This Person is not: ’, one_name)

結果輸出如下:

9ef55f20-f6fd-11eb-9bcf-12bb97331649.png

當然了,實時計算肯定當前的計算方式不能滿足的,這個只是一個最簡單的應用而已,只想在這里拋磚引玉,這里是通過調用了face_recognition接口的形式來完成相似判定的工作的,還有一種非常常見的辦法,就是在得到人臉圖像的128維特征向量之后,就可以將人臉識別問題轉化為基于機器學習模型的一個簡單分類問題了,比如SVM、RF、GBDT等都可以非常出色地完成上面的任務。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人臉識別
    +關注

    關注

    76

    文章

    4012

    瀏覽量

    81958
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84752

原文標題:手把手教你用Python寫個簡單又強大的人臉識別系統

文章出處:【微信號:pcbgood,微信公眾號:奈因PCB電路板設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【LeMaker Guitar申請】基于LeMaker Guitar的人臉識別系統

    學習對嵌入式應用層開發有更深入的認識。項目描述:基于LeMaker Guitar的人臉識別系統設計思路是把 OpenCV移植到嵌入式操作系統
    發表于 01-18 16:23

    【LeMaker Guitar試用體驗】之基于Python下的人臉識別系統【結貼】

    Python編程語言下實現基于LeMaker Guitar的人臉識別系統,具體方案操作如下。.實驗說明系統設備:1.LeMakerGuit
    發表于 02-25 14:03

    有大神嗎?找大神幫忙做一個人臉識別

    有大神嗎?找大神幫忙做一個人臉識別
    發表于 04-17 21:39

    基于linux操作系統實現一個人臉識別門禁系統

    形成組網,實現一個人臉識別門禁系統。客戶端為嵌入式Linux設備,采用QT庫顯示界面,通過攝像頭采集圖像。服務器為PC上 Ubuntu系統,采用QT庫顯示界面,以OpenCV庫為基礎進
    發表于 12-14 06:24

    人臉識別系統定位功能剖析

    經常被網友問到“人臉識別系統是如何找到人的?”,本文將通過實際案例具體分析人臉識別系統的組成、人臉識別系
    發表于 08-29 14:46 ?5756次閱讀

    如果一個人化妝了還能被人臉識別系統認出來嗎

    萬維人臉識別技術是利用分析比對的技術來實現人臉識別項熱門的計算機技術研究領域,其中包括人臉
    發表于 07-09 17:23 ?1w次閱讀

    人臉識別系統的四大優勢_人臉識別系統需要攻克的難題

    人臉識別系統項新興技術,隨著市場的發展,技術水平的提高,越來越多的行業和領域都需要這樣的系統,可以提高工作效率,加快行業發展,下面來介紹一下人臉
    發表于 08-28 10:26 ?3370次閱讀

    人臉識別系統應用范圍_選擇人臉識別系統的關注點

    隨之科學手段的快速發展,人臉識別系統被應用到了眾多領域,人臉識別系統目前主要應用于身份識別,可以利用快速
    發表于 08-31 14:56 ?1409次閱讀

    人臉識別系統的廠家如何選擇

    人臉識別是最近幾年大家聽到比較多的熱門詞,聽上去就感覺非常的高科技。的確,人臉識別系統是通過
    發表于 09-02 15:15 ?1061次閱讀

    人臉識別系統使用的攻擊方法有哪些

    技術,銀行則采用eKYC解決方案進行入職流程。人臉識別研究的主要目的是提高驗證和識別任務的性能,在過去,對人臉識別系統的安全漏洞的研究是比較
    發表于 11-18 11:28 ?5598次閱讀

    用樹莓派做一個人臉識別開鎖應用的案例

    本文主要介紹實現一個人臉識別進行開鎖的功能,用在真人實景游戲業務中。來源:騰訊技術工程微信號作者:eckygao,騰訊 CSIG 云產品部
    的頭像 發表于 12-10 18:37 ?460次閱讀

    如何使用ESP32-CAM構建一個人臉識別系統

    在這個項目中,我們將使用 ESP32-CAM 構建一個人臉識別系統,該系統還可以通過識別未經授權的人的面部來作為 ESP32-CAM 安全系統
    發表于 08-22 16:35 ?1.6w次閱讀
    如何使用ESP32-CAM構建<b class='flag-5'>一個人臉</b><b class='flag-5'>識別系統</b>

    Xilinx KV 260構建一個人臉識別車庫門鎖

    電子發燒友網站提供《Xilinx KV 260構建一個人臉識別車庫門鎖.zip》資料免費下載
    發表于 10-26 11:24 ?7次下載
    Xilinx KV 260構建<b class='flag-5'>一個人臉</b><b class='flag-5'>識別</b>車庫門鎖

    人臉識別技術的應用 部署一個人臉識別系統

    本次就使用PaddleInference將PaddleHub上的兩模型串聯起來,并部署在CPU桌面平臺上,搭建簡單的人臉識別系統 先展
    的頭像 發表于 12-06 18:14 ?987次閱讀

    基于python代碼的人臉識別實例

    基于python代碼的一個人臉識別的實例,完整的實例,本人在pycharm中實測通過,是很基礎的入門級的
    發表于 07-18 11:11 ?13次下載
    主站蜘蛛池模板: 午夜伦理伦理片在线观| 99视频在线免费看| 国产精品久久久久久久久LI无码 | 天天爽夜夜爽夜夜爽| 国产精品久久久久无码AV色戒| 亚洲精品www久久久久久| 久久91精品国产91久| 99免费观看视频| 午夜一个人在线观看完整版| 久久久精品久久久久久| www.av在线| 亚洲精品电影久久久影院| 蜜柚视频高清在线| 高干紧射H后入| 永久免费的污视频网站| 日本无卡无吗在线| 久久超碰国产精品最新| 扒开女人下面使劲桶动态图 | 色多多污网站在线观看| 九九在线精品亚洲国产| 大地影院在线播放| 野草在线视频完整视频| 日本人作爰啪啪全过程| 久久国产精品无码视欧美| 成人18视频在线| 伊人影院2019| 甜性涩爱dvd| 欧美大香线蕉线伊人久久| 韩国精品无码少妇在线观看网站| aaa级黄影片| 亚洲综合春色另类久久| 日韩综合网| 男人吃奶摸下弄进去好爽| 国产原创剧情麻豆在线| wwwxxx日本护士| 最新国产在线视频| 亚洲二区电影| 日产国产欧美韩国在线 | 全部老头和老太XXXXX| 久久久久久久国产精品视频| 村上里沙快播|