伊人久久大香线蕉综合BD高清,变态另类天堂无码,大又大又粗又硬又爽少妇毛片,中文字幕有码一区二区三区

  • 服務(wù)熱線:13728883399
  • wangyp@shangeai.com

如何構(gòu)建人臉識(shí)別器的一則指南

時(shí)間:2018-09-29 09:01:27點(diǎn)擊:313次

編者按:如今,人臉識(shí)別已經(jīng)在我們的生活中處處可見——無論是政府布置在大街小巷的“天眼”,還是手機(jī)軟件中用于驗(yàn)證用戶個(gè)人身份的確認(rèn)手段,刷臉解鎖、刷臉支付......每個(gè)人與生俱來的這張“獨(dú)一無二”的臉正在取代數(shù)字密碼,成為虛擬世界中的身份證明。小編沒有iPhone XS,所以就在這里推薦一篇人臉識(shí)別入門佳作吧~

人臉識(shí)別是計(jì)算機(jī)視覺的一個(gè)子領(lǐng)域,它的應(yīng)用范圍非常廣泛,現(xiàn)在已經(jīng)成為世界各地的企業(yè)爭相競逐的新技術(shù)之一??紤]到市場的盈利現(xiàn)狀,未來這項(xiàng)技術(shù)還會(huì)有更大的需求空間,所以作為機(jī)器學(xué)習(xí)的學(xué)習(xí)者,自己動(dòng)手去從頭開始構(gòu)建一個(gè)人臉識(shí)別工具很有價(jià)值。

本文就是如何構(gòu)建人臉識(shí)別器的一則指南,在文章中,首先我們會(huì)介紹這項(xiàng)技術(shù)的基本原理,然后用一個(gè)簡單案例演示如何用Python來實(shí)現(xiàn)。

人臉識(shí)別的工作原理

在理解人臉識(shí)別的工作原理之前,我們先來看看什么是特征向量。

機(jī)器學(xué)習(xí)算法的本質(zhì)是將數(shù)據(jù)集中的所有樣本作為輸入,從數(shù)據(jù)中學(xué)習(xí)“知識(shí)”,簡而言之,算法會(huì)遍歷數(shù)據(jù)并識(shí)別數(shù)據(jù)中的模式。以人臉識(shí)別為例,如果我們希望給定一幅圖像,算法能識(shí)別出圖像中的人是誰,那么這時(shí)它識(shí)別到的模式其實(shí)有很多種:

臉部的長度/寬度

有時(shí)長度/寬度的具體數(shù)值可能是不可靠的,因?yàn)樗鼈儠?huì)隨著圖像縮放不斷變化,但即使在重新縮放之后,某些數(shù)據(jù)還是會(huì)始終保持不變——臉部的長寬比率

膚色

五官的形狀,如嘴、鼻子等

顯然,它們有一個(gè)共識(shí)——不同人臉的臉部長寬比、五官、膚色等是不同的。如果兩張人臉很相似,那它們?cè)谶@些方面的差異就比較小。這就引出了最具挑戰(zhàn)性的一個(gè)步驟:把特定人的面部轉(zhuǎn)換成數(shù)字表示——機(jī)器學(xué)習(xí)算法只能理解數(shù)字。

這種“人臉”(或訓(xùn)練集中特征)的數(shù)字表示就是我們所說的特征向量,它包含按特定順序排列的一系列數(shù)字。

為了方便理解,下面舉一個(gè)簡單的例子,我們可以將“人臉”映射到一個(gè)特征向量,該特征向量可以包含各種特征,例如:面長(cm)、面寬(cm)、平均膚色(RGB)、嘴唇寬度(cm)、鼻子長度(cm)。

基本上,給定一個(gè)圖像,我們可以繪制出各種特征并將其轉(zhuǎn)換為特征向量,如:

因此這張人臉可以用(23.1, 15.8, 255, 224, 189, 5.2, 4.4)這個(gè)向量表示。當(dāng)然,除了以上特征,我們還可以通過觀察和測量獲得更多人臉信息,比如發(fā)色、面部毛發(fā)、是否戴眼鏡等,但為了方便介紹,我們?cè)谶@篇文章里只考慮以上5個(gè)簡單特征。

一旦我們將每個(gè)圖像編碼成特征向量,問題就變得非常簡單了,因?yàn)槲覀兛梢酝ㄟ^計(jì)算向量之間的“距離”判斷兩張“人臉”的相似程度。而機(jī)器學(xué)習(xí)在這里發(fā)揮的作用主要有兩個(gè):

派生特征向量:數(shù)據(jù)集中的數(shù)據(jù)量往往非常多,手動(dòng)列出每個(gè)特征顯然不現(xiàn)實(shí)。機(jī)器學(xué)習(xí)算法可以智能地標(biāo)記出所需特征,也可以做一些簡單計(jì)算,如鼻子長度與前額寬度的比率。

匹配算法:一旦獲得了特征向量,機(jī)器學(xué)習(xí)算法就可以把新圖像與數(shù)據(jù)集中存在的特征向量集相匹配。

現(xiàn)在我們已經(jīng)基本了解了人臉識(shí)別的工作原理,緊接著,讓我們使用一些著名的Python庫,嘗試構(gòu)建自己的人臉識(shí)別算法。

案例分析

下面是我們數(shù)據(jù)集中的一些圖像,分別是奧巴馬、比爾·蓋茨、杰夫·貝佐斯、馬克·扎克伯格、雷·達(dá)利奧和沙魯克汗。我們把這些人稱為“語料庫”,然后準(zhǔn)備另一位名人(“新名人”)的圖像,模型的任務(wù)是確定“新名人”是否出現(xiàn)在“語料庫”中。

對(duì)人類來說,區(qū)分上述6人非常簡單,即便有讀者不認(rèn)識(shí)著名男性沙魯克汗(末圖),我們也能從外形上看出他和奧巴馬的明顯區(qū)別。但這對(duì)計(jì)算機(jī)而言并不簡單。

我們選擇的“新名人”:

得益于社區(qū)成員的貢獻(xiàn),現(xiàn)在我們有一個(gè)非常簡單的Python庫,它封裝了上面提到的所有內(nèi)容——從面部創(chuàng)建特征向量并知道如何檢測人臉。這個(gè)Python庫叫face_recognition,如果再深入研究一下,你會(huì)發(fā)現(xiàn)它來自dlib——沒錯(cuò),那個(gè)跨平臺(tái)的C++公共庫,它包含很多機(jī)器學(xué)習(xí)常用算法,有助于編寫復(fù)雜的基于C ++的應(yīng)用程序。

Python中的face_recognition庫可以執(zhí)行大量任務(wù):

檢測給定圖像中的所有人臉

檢測和標(biāo)記圖像中的人臉特征

識(shí)別圖像中的人臉

實(shí)時(shí)人臉識(shí)別

這里我們只介紹如何用face_recognition識(shí)別圖像中的人臉,即上述第三個(gè)任務(wù)。

facerecognition源碼:github.com/ageitgey/facerecognition

如何安裝facerecognition庫:github.com/ageitgey/facerecognition#installation-options

在安裝face_recognition之前,你還需要安裝dlib:gist.github.com/ageitgey/629d75c1baac34dfa5ca2a1928a7aeaf

在Python中實(shí)現(xiàn)

本節(jié)包含使用face_recognition庫構(gòu)建簡單人臉識(shí)別系統(tǒng)的代碼,這是實(shí)現(xiàn)部分,代碼具體表示什么我們會(huì)下下節(jié)介紹。

# 導(dǎo)入庫

import os

import face_recognition

# 制作所有可用圖像的列表

images = os.listdir('images')

# 加載圖像

image_to_be_matched = face_recognition.load_image_file('my_image.jpg')

# 將加載圖像編碼為特征向量

image_to_be_matched_encoded = face_recognition.face_encodings(

image_to_be_matched)[0]

# 遍歷每張圖像

for image in images:

# 加載圖像

current_image = face_recognition.load_image_file("images/" + image)

# 將加載圖像編碼為特征向量

current_image_encoded = face_recognition.face_encodings(current_image)[0]

# 將你的圖像和圖像對(duì)比,看是否為同一人

result = face_recognition.compare_faces(

[image_to_be_matched_encoded], current_image_encoded)

# 檢查是否一致

if result[0] == True:

print"Matched: " + image

else:

print"Not matched: " + image

文件夾結(jié)構(gòu)如下:

facialrecognition:

fr.py

my_image.jpg

images/

barack_obama.jpg

bill_gates.jpg

jeff_bezos.jpg

mark_zuckerberg.jpg

ray_dalio.jpg

shahrukhkhan.jpg

warren_buffett.jpg

它們分別表示:

fr.py:人臉識(shí)別的代碼

my_image.jpg:要識(shí)別的圖像(“新名人”)

images/:“語料庫”

當(dāng)你創(chuàng)建上面的文件夾結(jié)構(gòu)并運(yùn)行上面的代碼時(shí),這是你得到的輸出:

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

顯然,“新名人”是沙魯克汗,我們的人臉識(shí)別系統(tǒng)能夠檢測到他!

理解Python代碼

現(xiàn)在,我們來分解上述代碼,進(jìn)一步了解它是如何工作的:

# 導(dǎo)入庫

import os

import face_recognition

這就是常規(guī)“導(dǎo)入”操作,我們會(huì)用face_recognition編寫算法

# 制作所有可用圖像的列表

images = os.listdir('images')

這行簡單代碼可以幫助我們識(shí)別語料庫中所有圖像的路徑。執(zhí)行此行后,我們會(huì)得到:

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

現(xiàn)在,下面加載新名人圖像:

# 加載圖像

image_to_be_matched = face_recognition.load_image_file('my_image.jpg')

為了確保算法能夠解釋圖像,我們將圖像轉(zhuǎn)換為特征向量:

# 將加載圖像編碼為特征向量

image_to_be_matched_encoded = face_recognition.face_encodings(

image_to_be_matched)[0]

剩下的代碼不難理解:

# 遍歷每張圖像

for image in images:

# 加載圖像

current_image = face_recognition.load_image_file("images/" + image)

# 將加載圖像編碼為特征向量

current_image_encoded = face_recognition.face_encodings(current_image)[0]

# 將你的圖像和圖像對(duì)比,看是否為同一人

result = face_recognition.compare_faces(

[image_to_be_matched_encoded], current_image_encoded)

# 檢查是否一致

if result[0] == True:

print"Matched: " + image

else:

print"Not matched: " + image

綜合來看,我們用這些代碼做到了:

在每個(gè)圖像上循環(huán)

將圖像編碼為特征向量

將加載的圖像與要識(shí)別的圖像進(jìn)行比較

如果人物一致,我們輸出結(jié)果。如果人物不一致,我們也會(huì)輸出結(jié)果

上面的輸出清楚地表明這個(gè)簡單人臉識(shí)別算法的效果非常好,讓我們嘗試用另一個(gè)圖像替換my_image :

再次運(yùn)行算法時(shí),輸出變成了這樣:

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

顯然,馬云不在我們的“語料庫”中。

人臉識(shí)別應(yīng)用

人臉識(shí)別是一個(gè)有趣的問題,關(guān)于它的研究比較成熟,這項(xiàng)技術(shù)也被廣泛應(yīng)用于工業(yè)界和學(xué)術(shù)界?!案枭瘛睆垖W(xué)友之所以能成為“逃犯克星”,演唱會(huì)現(xiàn)場布置的先進(jìn)人臉識(shí)別攝像頭功不可沒,這也是人臉識(shí)別用于減輕犯罪的一個(gè)典例。此外,這項(xiàng)技術(shù)還有許多應(yīng)用:

身份驗(yàn)證:蘋果已經(jīng)為iPhone中的人臉身份驗(yàn)證引入高級(jí)面部識(shí)別碼,一些常用的APP,如支付寶,也在用戶要求進(jìn)行個(gè)人社保信息操作時(shí)要求進(jìn)行人臉認(rèn)證。

客戶服務(wù):馬來西亞的一些銀行已經(jīng)安裝了使用人臉識(shí)別系統(tǒng)來檢測高價(jià)值客戶的系統(tǒng),以便客服人員提供個(gè)性化服務(wù)。通過這種方式,銀行可以通過留住這些客戶創(chuàng)造更多收入。

保險(xiǎn)承保:許多保險(xiǎn)公司正在使用人臉識(shí)別系統(tǒng),將客戶真人面部與照片身份證上的人臉相匹配。這樣,客戶的承保過程會(huì)變得更快。

總而言之,人臉識(shí)別已經(jīng)開始從各個(gè)方面服務(wù)社會(huì),雖然某些商業(yè)化應(yīng)用會(huì)存在道德風(fēng)險(xiǎn),但這些都不應(yīng)成為阻礙技術(shù)發(fā)展的絆腳石。

原文標(biāo)題:面部識(shí)別簡介(使用Python代碼)

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

  • 標(biāo)簽: