news 2026/10/4 14:16:49

基于 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/10/4 10:31:47

Mac微信增强工具全面解析

Mac微信增强工具全面解析 【免费下载链接】WeChatTweak-macOS A dynamic library tweak for WeChat macOS - 首款微信 macOS 客户端撤回拦截与多开 &#x1f528; 项目地址: https://gitcode.com/gh_mirrors/we/WeChatTweak-macOS 还在为错过重要消息而懊恼&#xff1f;…

作者头像 李华
网站建设 2026/10/3 6:21:07

传统VS现代:AI让FREESWITCH配置效率提升10倍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成两份对比代码&#xff1a;1) 传统手动编写的FREESWITCH会议室系统配置 2) AI自动生成的同等功能配置。要求包含&#xff1a;a) 会议室创建与管理 b) 参会密码验证 c) 录音功…

作者头像 李华
网站建设 2026/10/4 11:15:58

Kokoro语音合成革命:打造个性化声音的终极指南

Kokoro语音合成革命&#xff1a;打造个性化声音的终极指南 【免费下载链接】kokoro https://hf.co/hexgrad/Kokoro-82M 项目地址: https://gitcode.com/gh_mirrors/ko/kokoro 在数字内容爆炸式增长的时代&#xff0c;语音合成技术正经历着前所未有的变革。Kokoro-82M作为…

作者头像 李华
网站建设 2026/10/3 14:25:41

3步搞定国产化文件预览:kkFileView在飞腾/海光平台的实战部署

3步搞定国产化文件预览&#xff1a;kkFileView在飞腾/海光平台的实战部署 【免费下载链接】kkFileView Universal File Online Preview Project based on Spring-Boot 项目地址: https://gitcode.com/GitHub_Trending/kk/kkFileView 在信创国产化浪潮中&#xff0c;如何…

作者头像 李华