news 2026/4/18 10:55:44

基于 ResNet-50 + 多任务学习 TensorFlow 中实现高效人脸多属性识别 CNN卷积网络的人脸识别 age,gender, race三部分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 ResNet-50 + 多任务学习 TensorFlow 中实现高效人脸多属性识别 CNN卷积网络的人脸识别 age,gender, race三部分

CNN卷积网络的人脸识别,自己搭建的深度卷积网络,基于resnet搭建的环境是tensorflow版本,可以实现人脸多属性识别(包括age,gender, race三部分)
可以提供检测单一图片的代码和摄像头实时检测人脸属性
1

1

🧠 基于 ResNet 的自定义 CNN 深度网络实现人脸多属性识别(年龄、性别、种族)

✅ 使用 TensorFlow 2.x 构建
✅ 模型结构:ResNet-50 + 多任务头(Age, Gender, Race)
✅ 支持单张图片检测摄像头实时推理
✅ 输出:Gender,Age Range,Race(如图所示)


📦 一、项目目标

功能描述
✅ 单图预测输入一张人脸图像,输出性别、年龄范围、种族
✅ 实时摄像头检测打开摄像头,实时框出人脸并标注属性
✅ 自定义 ResNet 模型基于 ResNet-50 构建多任务分类器
✅ TensorFlow 实现使用 Keras API 搭建模型

🖼️ 示例输出(如图):

FEMALE Gender Certainty:100.0 Age:20–29 Race:White

🔧 二、环境安装

pipinstalltensorflow opencv-python numpy matplotlib pillow dlib

✅ 推荐使用 Python 3.8+,TensorFlow 2.10+


🏗️ 三、构建自定义 ResNet 多任务模型

脚本:model.py

# model.pyimporttensorflowastffromtensorflow.keras.applicationsimportResNet50fromtensorflow.keras.layersimportDense,GlobalAveragePooling2D,Inputfromtensorflow.keras.modelsimportModelimportnumpyasnpdefcreate_multitask_model(input_shape=(224,224,3)):# 加载预训练 ResNet50(不包含顶层)base_model=ResNet50(weights='imagenet',include_top=False,input_shape=input_shape)base_model.trainable=False# 冻结主干网络# 输入层inputs=Input(shape=input_shape)# 主干网络x=base_model(inputs)x=GlobalAveragePooling2D()(x)# 分支1:性别分类(2类)gender_output=Dense(64,activation='relu')(x)gender_output=Dense(1,activation='sigmoid',name='gender')(gender_output)# 0=Female, 1=Male# 分支2:年龄分类(7类:0-19, 20-29, ..., 60+)age_output=Dense(64,activation='relu')(x)age_output=Dense(7,activation='softmax',name='age')(age_output)# 分支3:种族分类(5类:Asian, Black, White, Indian, Middle Eastern)race_output=Dense(64,activation='relu')(x)race_output=Dense(5,activation='softmax',name='race')(race_output)# 创建多任务模型model=Model(inputs=inputs,outputs=[gender_output,age_output,race_output])returnmodel# 创建模型model=create_multitask_model()# 编译模型(每个分支独立损失)model.compile(optimizer='adam',loss={'gender':'binary_crossentropy','age':'categorical_crossentropy','race':'categorical_crossentropy'},metrics={'gender':'accuracy','age':'accuracy','race':'accuracy'})print("✅ 模型已创建!")

🎯 四、人脸检测(使用 Dlib 或 MTCNN)

安装 Dlib(推荐用于高精度人脸检测)

pipinstalldlib

脚本:face_detector.py

# face_detector.pyimportcv2importdlibimportnumpyasnpfromPILimportImageimportos# 加载 dlib 人脸检测器detector=dlib.get_frontal_face_detector()defdetect_faces(image):gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)faces=detector(gray)returnfaces

🖼️ 五、单张图片预测代码

脚本:predict_single_image.py

# predict_single_image.pyimportcv2importnumpyasnpfromPILimportImagefrommodelimportmodel# 导入上面的模型defpreprocess_image(image_path,target_size=(224,224)):"""预处理图像"""img=Image.open(image_path)img=img.resize(target_size)img_array=np.array(img)img_array=img_array.astype(np.float32)/255.0# 归一化img_array=np.expand_dims(img_array,axis=0)# (1, H, W, C)returnimg_arraydefpredict_attributes(model,image_path):# 预处理图像img_array=preprocess_image(image_path)# 预测gender_pred,age_pred,race_pred=model.predict(img_array)# 解码结果gender="FEMALE"ifgender_pred[0][0]<0.5else"MALE"gender_certainty=float(gender_pred[0][0]*100)ifgender=="FEMALE"elsefloat((1-gender_pred[0][0])*100)age_labels=["0-19","20-29","30-39","40-49","50-59","60-69","70+"]age_idx=np.argmax(age_pred[0])age_range=age_labels[age_idx]race_labels=["Asian","Black","White","Indian","Middle Eastern"]race_idx=np.argmax(race_pred[0])race=race_labels[race_idx]return{"gender":gender,"gender_certainty":gender_certainty,"age":age_range,"race":race}# 使用示例if__name__=="__main__":result=predict_attributes(model,"test_face.jpg")print(f"Gender:{result['gender']}")print(f"Gender Certainty:{result['gender_certainty']:.1f}%")print(f"Age:{result['age']}")print(f"Race:{result['race']}")

📹 六、摄像头实时检测人脸属性

脚本:realtime_detection.py

# realtime_detection.pyimportcv2importdlibimportnumpyasnpfromPILimportImagefrommodelimportmodel# 导入模型fromface_detectorimportdetect_faces# 导入人脸检测defpreprocess_image(image,target_size=(224,224)):"""预处理图像"""img=Image.fromarray(image)img=img.resize(target_size)img_array=np.array(img)img_array=img_array.astype(np.float32)/255.0img_array=np.expand_dims(img_array,axis=0)returnimg_arraydefpredict_attributes(model,image):img_array=preprocess_image(image)gender_pred,age_pred,race_pred=model.predict(img_array)gender="FEMALE"ifgender_pred[0][0]<0.5else"MALE"gender_certainty=float(gender_pred[0][0]*100)ifgender=="FEMALE"elsefloat((1-gender_pred[0][0])*100)age_labels=["0-19","20-29","30-39","40-49","50-59","60-69","70+"]age_idx=np.argmax(age_pred[0])age_range=age_labels[age_idx]race_labels=["Asian","Black","White","Indian","Middle Eastern"]race_idx=np.argmax(race_pred[0])race=race_labels[race_idx]returngender,gender_certainty,age_range,race# 主程序cap=cv2.VideoCapture(0)# 打开摄像头whileTrue:ret,frame=cap.read()ifnotret:break# 人脸检测faces=detect_faces(frame)forfaceinfaces:x,y,w,h=face.left(),face.top(),face.width(),face.height()face_roi=frame[y:y+h,x:x+w]# 预测属性try:gender,certainty,age,race=predict_attributes(model,face_roi)# 绘制框和文本cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)text=f"{gender}\nGender Certainty:{certainty:.1f}\nAge:{age}\nRace:{race}"cv2.putText(frame,text,(x,y-10),cv2.FONT_HERSHEY_SIMPLEX,0.7,(0,255,0),2)exceptExceptionase:print(f"Prediction error:{e}")# 显示画面cv2.imshow("Face Detector",frame)ifcv2.waitKey(1)&0xFF==ord('q'):breakcap.release()cv2.destroyAllWindows()

🚀总结
本系统基于ResNet-50 + 多任务学习架构,在 TensorFlow 中实现了高效的人脸多属性识别。
可轻松部署为安防监控、智能门禁、用户画像分析等场景的 AI 模块。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:35:46

Qwen3-VL-WEBUI性能分析:CPU与GPU资源占用平衡策略

Qwen3-VL-WEBUI性能分析&#xff1a;CPU与GPU资源占用平衡策略 1. 引言 随着多模态大模型在视觉理解、语言生成和交互式任务中的广泛应用&#xff0c;Qwen3-VL-WEBUI作为阿里云开源的前沿视觉-语言推理平台&#xff0c;正迅速成为开发者和研究者关注的焦点。该系统内置 Qwen3…

作者头像 李华
网站建设 2026/4/18 5:39:11

Sketch Constraints智能布局插件深度解析

Sketch Constraints智能布局插件深度解析 【免费下载链接】sketch-constraints &#x1f4cf; A plugin that integrates constraints in Sketch to lay out layers. 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-constraints 还在为每次设计变更手动调整元素位…

作者头像 李华
网站建设 2026/4/12 0:55:57

SUBSTRING()实战:5个真实业务场景应用解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个案例演示项目&#xff0c;包含5个业务场景&#xff1a;1) 电商订单号截取 2) 身份证信息提取 3) 日志时间戳处理 4) 金融卡号脱敏 5) URL参数解析。每个案例需有&#xff…

作者头像 李华
网站建设 2026/4/18 7:59:51

快速验证设计:用POSTCSS-PX-TO-VIEWPORT秒建响应式原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个设计原型快速生成器&#xff0c;输入Sketch/Figma设计稿的尺寸和主要元素尺寸&#xff0c;自动生成使用POSTCSS-PX-TO-VIEWPORT的HTML/CSS原型代码。支持&#xff1a;1) 拖…

作者头像 李华
网站建设 2026/4/18 5:38:47

Qwen3-VL知识图谱:视觉实体关系抽取案例

Qwen3-VL知识图谱&#xff1a;视觉实体关系抽取案例 1. 引言&#xff1a;从多模态理解到知识图谱构建 随着大模型技术的演进&#xff0c;视觉-语言模型&#xff08;VLM&#xff09;已不再局限于简单的图文匹配或描述生成。以阿里最新开源的 Qwen3-VL 为代表的先进多模态系统&…

作者头像 李华
网站建设 2026/4/18 8:07:34

Qwen3-VL部署实战:金融票据识别处理系统

Qwen3-VL部署实战&#xff1a;金融票据识别处理系统 1. 引言&#xff1a;为何选择Qwen3-VL构建金融票据识别系统&#xff1f; 在金融行业&#xff0c;票据识别是一项高频且关键的任务&#xff0c;涉及发票、支票、合同、保单等多种文档类型。传统OCR方案在复杂版式、模糊图像…

作者头像 李华