news 2026/3/23 4:36:18

基于 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/3/20 12:18:35

招聘时间管理神器:Boss Show Time让你的求职效率翻倍

招聘时间管理神器&#xff1a;Boss Show Time让你的求职效率翻倍 【免费下载链接】boss-show-time 展示boss直聘岗位的发布时间 项目地址: https://gitcode.com/GitHub_Trending/bo/boss-show-time 还在为找不到最新招聘信息而苦恼吗&#xff1f;每天刷遍各大招聘平台&a…

作者头像 李华
网站建设 2026/3/19 23:55:29

Qwen2.5-7B多模态体验:云端免配置,10分钟出图

Qwen2.5-7B多模态体验&#xff1a;云端免配置&#xff0c;10分钟出图 引言&#xff1a;为什么选择云端方案&#xff1f; 作为自媒体创作者&#xff0c;你是否经常遇到这样的困扰&#xff1a;精心构思的图文内容&#xff0c;却因为本地电脑性能不足导致生成图片卡死&#xff1…

作者头像 李华
网站建设 2026/3/18 5:17:53

5个关键步骤让AMD ROCm在Windows 11上火力全开

5个关键步骤让AMD ROCm在Windows 11上火力全开 【免费下载链接】ROCm AMD ROCm™ Software - GitHub Home 项目地址: https://gitcode.com/GitHub_Trending/ro/ROCm 想要在Windows 11系统上释放AMD显卡的深度学习潜力&#xff1f;AMD ROCm平台为Windows用户提供了完整的…

作者头像 李华
网站建设 2026/3/19 18:39:53

第五人格登录神器:idv-login终极使用指南

第五人格登录神器&#xff1a;idv-login终极使用指南 【免费下载链接】idv-login idv-login is an IdentityV login tool. 项目地址: https://gitcode.com/gh_mirrors/idv/idv-login 第五人格登录工具idv-login是一款专为《第五人格》玩家设计的强大辅助软件&#xff0c…

作者头像 李华
网站建设 2026/3/19 8:43:45

Boss直聘时间显示插件:提升求职效率的终极工具

Boss直聘时间显示插件&#xff1a;提升求职效率的终极工具 【免费下载链接】boss-show-time 展示boss直聘岗位的发布时间 项目地址: https://gitcode.com/GitHub_Trending/bo/boss-show-time 还在为招聘信息的时间模糊而烦恼吗&#xff1f;Boss Show Time这款免费的招聘…

作者头像 李华
网站建设 2026/3/22 21:26:03

Sketch Constraints 终极指南:告别手动调整的智能布局神器

Sketch Constraints 终极指南&#xff1a;告别手动调整的智能布局神器 【免费下载链接】sketch-constraints &#x1f4cf; A plugin that integrates constraints in Sketch to lay out layers. 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-constraints 还在为…

作者头像 李华