午夜精品人妻久久久-成年美女很黄的网站-在线看片免费人成视久网app-国产精品美女无遮挡一区二区-91精品国产综合久久久久-国产的免费视频又猛又爽又刺激-在线看片免费人成视久网app-久久香蕉国产精品视频-av一区二区三区高清

opencv人工智能深度學(xué)習(xí)這樣實現(xiàn)人臉的年齡檢測

前期的文章我們分享了人臉的識別以及如何進行人臉數(shù)據(jù)的訓(xùn)練 , 本期文章我們結(jié)合人臉識別的
模型進行人臉年齡的檢測
人臉年齡的檢測步驟
1、首先需要進行人臉的檢測
2、把檢測到的人臉數(shù)據(jù)給年齡檢測模型去檢測
3、把檢測結(jié)果呈現(xiàn)到圖片上
人臉年齡檢測
import numpy as npimport cv2import osAGE_LIST = ["(0-2)", "(4-6)", "(8-12)", "(15-20)", "(25-32)", "(38-43)", "(48-53)", "(60-100)"]prototxtFacePath ="model/deploy.prototxt"weightsFacePath = "model/res10_300x300_ssd_iter_140000.caffemodel"faceNet = cv2.dnn.readNet(prototxtFacePath, weightsFacePath)prototxtAgePath = "model/age_deploy.prototxt"weightsAgePath = "model/age_net.caffemodel"ageNet = cv2.dnn.readNet(prototxtAgePath, weightsAgePath)
初始化模型年齡段,由于模型是按照年齡段來進行訓(xùn)練的 , 當(dāng)然你也可以使用大量的數(shù)據(jù),進行更準(zhǔn)確的年齡模型訓(xùn)練
然后cv2.dnn.加載人臉識別的模型,可參考往期文章
順便在這里介紹一下由人工智能研究所出品的專欄,人工智能目標(biāo)檢測與目標(biāo)追蹤
有興趣的小伙伴們可以一起探討學(xué)習(xí)
最后cv2.dnn.加載人臉年齡的模型
image = cv2.imread("image/img.jpg")(h, w) = image.shape[:2]blob = cv2.dnn.blobFromImage(image, 1.0, (300, 300), (104.0, 177.0, 123.0))faceNet.setInput(blob)detections = faceNet.forward()
使用cv2.來讀取要檢測的圖片
image.shape來獲取圖片的尺寸
cv2.dnn.來計算圖片的blob值
blob = cv2.dnn.(image, =1.0, size, mean, =True,crop=False, =)
1.image,這是傳入的,需要進行處理的圖像 。
2.硅谷人工智能實驗室,執(zhí)行完減均值后 , 需要縮放圖像 , 默認(rèn)是1,需要注意,= 1 / sigma,這是真正乘上的值 。
3.size,這是神經(jīng)網(wǎng)絡(luò),真正支持輸入的值 。
4.mean,這是我們要減去的均值,可以是R,G,B均值三元組,或者是一個值 , 每個通道都減這值 。如果執(zhí)行減均值,通道順序是R、G、B 。如果,輸入圖像通道順序是B、G、R,那么請確保 = True , 交換通道 。
5.,認(rèn)為圖像 通道順序是B、G、R,而減均值時順序是R、G、B,為了解決這個矛盾 , 設(shè)置=True即可 。
6.crop,如果crop裁剪為真,則調(diào)整輸入圖像的大?。?使調(diào)整大小后的一側(cè)等于相應(yīng)的尺寸,另一側(cè)等于或大于 。然后 , 從中心進行裁剪 。如果“裁剪”為“假”,則直接調(diào)整大小而不進行裁剪并保留縱橫比 。
7., 輸出blob的深度硅谷人工智能實驗室,選擇 or CV_8U
cv2.dnn.這個函數(shù)執(zhí)行:
1.減均值

opencv人工智能深度學(xué)習(xí)這樣實現(xiàn)人臉的年齡檢測

文章插圖
opencv人工智能深度學(xué)習(xí)這樣實現(xiàn)人臉的年齡檢測

文章插圖
2.縮放
3.通道交換
等工作 , 主要對圖片進行預(yù)處理,以便神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)分類
最后把圖片的blob值放入神經(jīng)網(wǎng)絡(luò) , 進行人臉的預(yù)測
for i in range(0, detections.shape[2]): confidence = detections[0, 0, i, 2] if confidence > 0.5:box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])(startX, startY, endX, endY) = box.astype("int")face = image[startY:endY, startX:endX]faceBlob = cv2.dnn.blobFromImage(face, 1.0, (227, 227),(78.4263377603, 87.7689143744, 114.895847746),swapRB=False)ageNet.setInput(faceBlob)preds = ageNet.forward()i = preds[0].argmax()age = AGE_LIST[i]ageConfidence = preds[0][i]text = "{}: {:.2f}%".format(age, ageConfidence * 100)y = startY - 10 if startY - 10 > 10 else startY + 10cv2.rectangle(image, (startX, startY), (endX, endY),(0, 0, 255), 2)cv2.putText(image, text, (startX, y),cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)
.shape[2]來存放神經(jīng)網(wǎng)絡(luò)檢測到的人臉,通過遍歷這個list
【opencv人工智能深度學(xué)習(xí)這樣實現(xiàn)人臉的年齡檢測】來獲取每個人臉的置信度,當(dāng)置信度大于0.5時,我們認(rèn)為是一個合格的人臉
, , endX, endY來獲取人臉在圖片中的坐標(biāo)
有了人臉的坐標(biāo)就可以把人臉這部分單獨提出來來計算人臉圖片的blob值
把人臉blob值放入年齡檢測模型中進行人臉年齡的檢測preds
preds[0].把年齡段的每個概率進行對比,并提取最大概率的年齡段的index
age = [i] 便可以得到我們檢測的人臉年齡
= preds[0][i] 人臉年齡的檢測置信度
最后把檢測到的數(shù)據(jù)呈現(xiàn)到圖片上并顯示圖片
cv2.imshow("Image", image)cv2.waitKey(0)
文章中提供的模型,年齡檢測是一個階段的檢測,若想得到更精確的年齡檢測,需要大量的數(shù)據(jù)進行計算訓(xùn)練,當(dāng)然 , 小伙伴們也可以使用人工智能研究所出品的:
wx小程序:AI人工智能工具
來進行人臉更多屬性的檢測
人臉檢測
關(guān)于人臉性別的檢測,我們下期分享!
對感興趣的小伙伴們可以買本屬于自己的書籍進行參考學(xué)習(xí)
3計算機視覺:語言實現(xiàn)(原書第2版)
¥39.2
購買
【手環(huán)數(shù)據(jù)線】便攜數(shù)據(jù)線 手環(huán)數(shù)據(jù)線 蘋果安卓數(shù)據(jù)線
¥19.9
購買
本文到此結(jié)束,希望對大家有所幫助 。