前言
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括昆都侖網(wǎng)站建設(shè)、昆都侖網(wǎng)站制作、昆都侖網(wǎng)頁制作以及昆都侖網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,昆都侖網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到昆都侖省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!隨著人工智能的日益火熱,計(jì)算機(jī)視覺領(lǐng)域發(fā)展迅速,尤其在人臉識別或物體檢測方向更為廣泛,今天就為大家?guī)碜罨A(chǔ)的人臉識別基礎(chǔ),從一個(gè)個(gè)函數(shù)開始走進(jìn)這個(gè)奧妙的世界。
首先看一下本實(shí)驗(yàn)需要的數(shù)據(jù)集,為了簡便我們只進(jìn)行兩個(gè)人的識別,選取了beyond樂隊(duì)的主唱黃家駒和貝斯手黃家強(qiáng),這哥倆長得有幾分神似,這也是對人臉識別的一個(gè)考驗(yàn):
兩個(gè)文件夾,一個(gè)為訓(xùn)練數(shù)據(jù)集,一個(gè)為測試數(shù)據(jù)集,訓(xùn)練數(shù)據(jù)集中有兩個(gè)文件夾0和1,之前看一些資料有說這里要遵循“slabel”命名規(guī)則,但后面處理起來比較麻煩,因?yàn)槟壳皁pencv接受的人臉識別標(biāo)簽為整數(shù),那我們就直接用整數(shù)命名吧:
為了方便,我們每個(gè)人用20張照片來訓(xùn)練,0代表黃家駒,1代表黃家強(qiáng):
開始啦:
1.檢測人臉
這應(yīng)該是最基本的,給我們一張圖片,我們要先檢測出人臉的區(qū)域,然后才能
進(jìn)行操作,opencv已經(jīng)內(nèi)置了很多分類檢測器,我們這次用haar:
def detect_face(img): #將測試圖像轉(zhuǎn)換為灰度圖像,因?yàn)閛pencv人臉檢測器需要灰度圖像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #加載OpenCV人臉檢測分類器Haar face_cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml') #檢測多尺度圖像,返回值是一張臉部區(qū)域信息的列表(x,y,寬,高) faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5) # 如果未檢測到面部,則返回原始圖像 if (len(faces) == 0): return None, None #目前假設(shè)只有一張臉,xy為左上角坐標(biāo),wh為矩形的寬高 (x, y, w, h) = faces[0] #返回圖像的正面部分 return gray[y:y + w, x:x + h], faces[0]