opencv人工智能深度学习这样实现人脸的年龄检测

模型进行人脸年龄的检测人脸年龄的检测步骤1、首先需要进行人脸的检测2、把检测到的人脸数据给年龄检测模型去检测顺便在这里介绍一下由人工智能研究所出品的专栏,人工智能目标检测与目标追踪便可以得到我们检测的人脸年龄文章中提供的模型,年龄检测是一个

前期的文章我们分享了人脸的识别以及如何进行人脸数据的训练,本期文章我们结合人脸识别的

模型进行人脸年龄检测

人脸年龄检测步骤

1、首先需要进行人脸的检测

2、把检测到的人脸数据给年龄检测模型去检测

3、把检测结果呈现到图片上

人脸年龄检测

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)

初始化模型年龄段,由于模型是按照年龄段来进行训练的,当然你也可以使用大量的数据,进行更准确的年龄模型训练

然后cv2.dnn.加载人脸识别的模型,可参考往期文章

顺便在这里介绍一下由人工智能研究所出品的专栏,人工智能目标检测与目标追踪

有兴趣的小伙伴们可以一起探讨学习

最后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.硅谷人工智能实验室,执行完减均值后,需要缩放图像,默认是1,需要注意, = 1 / sigma,这是真正乘上的值。

3.size,这是神经网络,真正支持输入的值。

4.mean,这是我们要减去的均值,可以是R,G,B均值三元组,或者是一个值,每个通道都减这值。如果执行减均值,通道顺序是R、G、B。 如果,输入图像通道顺序是B、G、R,那么请确保 = True,交换通道。

5.,认为图像 通道顺序是B、G、R,而减均值时顺序是R、G、B,为了解决这个矛盾,设置=True即可。

6.crop,如果crop裁剪为真,则调整输入图像的大小,使调整大小后的一侧等于相应的尺寸,另一侧等于或大于。然后,从中心进行裁剪。如果“裁剪”为“假”,则直接调整大小而不进行裁剪并保留纵横比。

7., 输出blob的深度硅谷人工智能实验室,选择 or CV_8U

cv2.dnn.这个函数执行:

1.减均值

opencv人工智能深度学习这样实现人脸的年龄检测

2.缩放

3.通道交换

等工作,主要对图片进行预处理,以便神经网络的学习分类

最后把图片的blob值放入神经网络,进行人脸的预测

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 + 10		cv2.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]来存放神经网络检测到的人脸,通过遍历这个list

来获取每个人脸的置信度,当置信度大于0.5时,我们认为是一个合格的人脸

, , endX, endY来获取人脸在图片中的坐标

有了人脸的坐标就可以把人脸这部分单独提出来来计算人脸图片的blob值

把人脸blob值放入年龄检测模型中进行人脸年龄的检测preds

preds[0].把年龄段的每个概率进行对比,并提取最大概率的年龄段的index

age = [i] 便可以得到我们检测的人脸年龄

= preds[0][i] 人脸年龄的检测置信度

最后把检测到的数据呈现到图片上并显示图片

cv2.imshow("Image", image)cv2.waitKey(0)

文章中提供的模型,年龄检测是一个阶段的检测,若想得到更精确的年龄检测,需要大量的数据进行计算训练,当然,小伙伴们也可以使用人工智能研究所出品的:

wx小程序:AI人工智能工具

来进行人脸更多属性的检测

人脸检测

关于人脸性别的检测,我们下期分享!

对感兴趣的小伙伴们可以买本属于自己的书籍进行参考学习

3计算机视觉:语言实现(原书第2版)

¥39.2

购买

【手环数据线】便携数据线 手环数据线 苹果安卓数据线

¥19.9

购买

本文到此结束,希望对大家有所帮助。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至81118366@qq.com举报,一经查实,本站将立刻删除。发布者:简知小编,转载请注明出处:https://www.jianzixun.com/97104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

相关推荐

软文友链广告合作联系站长qq81118366