news 2026/5/19 19:11:34

基于 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/5/15 20:38:20

UR5机器人抓取放置仿真终极指南

UR5机器人抓取放置仿真终极指南 【免费下载链接】UR5-Pick-and-Place-Simulation Simulate the iteration of a UR5 robot with Lego bricks 项目地址: https://gitcode.com/gh_mirrors/ur/UR5-Pick-and-Place-Simulation 想要掌握机器人仿真技术&#xff1f;这个基于RO…

作者头像 李华
网站建设 2026/5/13 11:42:44

Cursor Pro免费额度一键重置指南:突破AI编程助手的限制

Cursor Pro免费额度一键重置指南&#xff1a;突破AI编程助手的限制 【免费下载链接】cursor-free-everyday 完全免费, 自动获取新账号,一键重置新额度, 解决机器码问题, 自动满额度 项目地址: https://gitcode.com/gh_mirrors/cu/cursor-free-everyday 在AI编程助手日益…

作者头像 李华
网站建设 2026/5/19 1:54:18

Qwen3-VL部署教程:教育领域图解试题生成

Qwen3-VL部署教程&#xff1a;教育领域图解试题生成 1. 引言 1.1 教育场景中的多模态需求 在现代教育技术中&#xff0c;自动化解题与图解生成已成为提升教学效率的关键能力。尤其是在数学、物理等STEM学科中&#xff0c;学生常需面对包含图表、几何图形、函数图像的复杂题目…

作者头像 李华
网站建设 2026/4/30 11:22:16

AnimeGarden开源动漫聚合平台:一站式BT资源解决方案

AnimeGarden开源动漫聚合平台&#xff1a;一站式BT资源解决方案 【免费下载链接】AnimeGarden 動漫花園 3-rd party mirror site and Anime Torrent aggregation site 项目地址: https://gitcode.com/gh_mirrors/an/AnimeGarden AnimeGarden作为動漫花園的第三方镜像站点…

作者头像 李华
网站建设 2026/5/13 13:26:49

如何快速配置SadTalker:音频驱动面部动画的终极指南

如何快速配置SadTalker&#xff1a;音频驱动面部动画的终极指南 【免费下载链接】SadTalker 项目地址: https://gitcode.com/gh_mirrors/sad/SadTalker 想要让静态图片开口说话&#xff0c;让照片中的人物随着音频节奏自然地动起来吗&#xff1f;SadTalker音频驱动面部…

作者头像 李华
网站建设 2026/5/2 18:49:27

Oracle OpenJDK 25容器化部署终极指南:快速构建Java应用容器

Oracle OpenJDK 25容器化部署终极指南&#xff1a;快速构建Java应用容器 【免费下载链接】docker-images docker-images&#xff1a;这是一个包含 Docker 镜像的仓库。它提供了一些常见的 Docker 镜像&#xff0c;包括 Oracle 数据库、MySQL 数据库等。使用方法是在 Docker 官方…

作者头像 李华