当前位置: 首页 > news >正文

基于深度学习神经网络MTCNN的人脸检测系统源码

一. mtcnn概述

MTCNN,英文全称是Multi-task convolutional neural network,中文全称是多任务卷积神经网络,该神经网络将人脸区域检测与人脸关键点检测放在了一起。

二. mtcnn的网络结构

mtcnn从整体上划分分为P-Net、R-Net、和O-Net三层网络结构。各层的作用直观上感受如下图所示:

其网络结构:

三. mtcnn的网络结构代码

import tensorflow as tf class PNet(tf.keras.Model): def __init__(self): super().__init__() self.conv1 = tf.keras.layers.Conv2D(10, 3, 1, name='conv1') self.prelu1 = tf.keras.layers.PReLU(shared_axes=[1,2], name="PReLU1") self.conv2 = tf.keras.layers.Conv2D(16, 3, 1, name='conv2') self.prelu2 = tf.keras.layers.PReLU(shared_axes=[1,2], name="PReLU2") self.conv3 = tf.keras.layers.Conv2D(32, 3, 1, name='conv3') self.prelu3 = tf.keras.layers.PReLU(shared_axes=[1,2], name="PReLU3") self.conv4_1 = tf.keras.layers.Conv2D(2, 1, 1, name='conv4-1') self.conv4_2 = tf.keras.layers.Conv2D(4, 1, 1, name='conv4-2') def call(self, x, training=False): out = self.prelu1(self.conv1(x)) out = tf.nn.max_pool2d(out, 2, 2, padding="SAME") out = self.prelu2(self.conv2(out)) out = self.prelu3(self.conv3(out)) score = tf.nn.softmax(self.conv4_1(out), axis=-1) boxes = self.conv4_2(out) return boxes, score class RNet(tf.keras.Model): def __init__(self): super().__init__() self.conv1 = tf.keras.layers.Conv2D(28, 3, 1, name='conv1') self.prelu1 = tf.keras.layers.PReLU(shared_axes=[1,2], name="prelu1") self.conv2 = tf.keras.layers.Conv2D(48, 3, 1, name='conv2') self.prelu2 = tf.keras.layers.PReLU(shared_axes=[1,2], name="prelu2") self.conv3 = tf.keras.layers.Conv2D(64, 2, 1, name='conv3') self.prelu3 = tf.keras.layers.PReLU(shared_axes=[1,2], name="prelu3") self.dense4 = tf.keras.layers.Dense(128, name='conv4') self.prelu4 = tf.keras.layers.PReLU(shared_axes=None, name="prelu4") self.dense5_1 = tf.keras.layers.Dense(2, name="conv5-1") self.dense5_2 = tf.keras.layers.Dense(4, name="conv5-2") self.flatten = tf.keras.layers.Flatten() def call(self, x, training=False): out = self.prelu1(self.conv1(x)) out = tf.nn.max_pool2d(out, 3, 2, padding="SAME") out = self.prelu2(self.conv2(out)) out = tf.nn.max_pool2d(out, 3, 2, padding="VALID") out = self.prelu3(self.conv3(out)) out = self.flatten(out) out = self.prelu4(self.dense4(out)) score = tf.nn.softmax(self.dense5_1(out), -1) boxes = self.dense5_2(out) return boxes, score class ONet(tf.keras.Model): def __init__(self): super().__init__() self.conv1 = tf.keras.layers.Conv2D(32, 3, 1, name="conv1") self.prelu1 = tf.keras.layers.PReLU(shared_axes=[1,2], name="prelu1") self.conv2 = tf.keras.layers.Conv2D(64, 3, 1, name="conv2") self.prelu2 = tf.keras.layers.PReLU(shared_axes=[1,2], name="prelu2") self.conv3 = tf.keras.layers.Conv2D(64, 3, 1, name="conv3") self.prelu3 = tf.keras.layers.PReLU(shared_axes=[1,2], name="prelu3") self.conv4 = tf.keras.layers.Conv2D(128, 2, 1, name="conv4") self.prelu4 = tf.keras.layers.PReLU(shared_axes=[1,2], name="prelu4") self.dense5 = tf.keras.layers.Dense(256, name="conv5") self.prelu5 = tf.keras.layers.PReLU(shared_axes=None, name="prelu5") self.dense6_1 = tf.keras.layers.Dense(2 , name="conv6-1") self.dense6_2 = tf.keras.layers.Dense(4 , name="conv6-2") self.dense6_3 = tf.keras.layers.Dense(10 , name="conv6-3") self.flatten = tf.keras.layers.Flatten() def call(self, x, training=False): out = self.prelu1(self.conv1(x)) out = tf.nn.max_pool2d(out, 3, 2, padding="SAME") out = self.prelu2(self.conv2(out)) out = tf.nn.max_pool2d(out, 3, 2, padding="VALID") out = self.prelu3(self.conv3(out)) out = tf.nn.max_pool2d(out, 2, 2, padding="SAME") out = self.prelu4(self.conv4(out)) out = self.dense5(self.flatten(out)) out = self.prelu5(out) score = tf.nn.softmax(self.dense6_1(out)) boxes = self.dense6_2(out) lamks = self.dense6_3(out) return boxes, lamks, score

四. mtcnn的演示效果

五. 整个工程的内容

提供源代码,模型,提供GUI界面代码,主要使用方法可以参考里面的“文档说明_必看.docx”

项目完整文件下载请见演示与介绍视频的简介处给出:➷➷➷

https://www.bilibili.com/video/BV1rCU6Y1EbX/

http://www.jsqmd.com/news/235374/

相关文章:

  • Scarab模组管理器:革命性的一站式空洞骑士模组管理解决方案
  • 【计算机毕设选题推荐】基于Django+Spark健康风险预测数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
  • 【计算机毕业设计案例】基于python-深度学习的混凝土马路和泥地马路识别
  • 计算机深度学习毕设实战-基于python-CNN卷积神经网络的宠物行为训练识别
  • 深度学习毕设项目推荐-基于python-CNN卷积神经网络的鱼类识别
  • Zoplicate插件:彻底告别Zotero重复条目的终极解决方案
  • 大数据领域Hive在零售行业的数据处理应用
  • DeepSeek V4模型即将来袭,编程能力或将超越GPT与Claude
  • 深度学习毕设项目推荐-基于python-深度学习的混凝土马路和泥地马路识别
  • 论文AIGC率太高怎么办?10个让我论文AI率从82.5%降到5%的工具,亲测有效
  • 【计算机毕设推荐】健康饮食大数据分析系统,Python+Django+Spark技术栈 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
  • 吐血推荐!专科生毕业论文必备TOP9 AI论文网站
  • 从手动调参到多智能体编排:ChatDev 2.0 正在重构我们的开发范式
  • 【滤波跟踪】弹道目标状态估计仿真系统,通过扩展卡尔曼滤波EKF和无迹卡尔曼滤波UKF对含空气阻力的弹道目标(状态包括高度、速度、弹道系数)进行状态估计附Matlab代码
  • FramePack实战秘籍:3步攻克AI视频生成技术瓶颈
  • FramePack:让静态图片动起来的AI魔法棒
  • 深度学习毕设项目推荐-基于python-CNN卷积神经网络对猫是否疲劳识别
  • 30B小模型如何碾压1T大模型?MiroThinker推理能力实测,AI搜索新思路
  • OBS面部追踪插件替代方案终极指南:三步构建智能直播助手
  • 免费|不限速|不限流量|多架构|容器镜像服务---第3批同步:人工智能AI和机器学习领域的重要开源项目的超大43镜像仓库
  • Scarab模组管理器:空洞骑士玩家的终极管理解决方案
  • 空洞骑士模组管理器Scarab:让模组管理变得前所未有的简单
  • Zoplicate插件终极指南:彻底告别Zotero重复文献困扰
  • 【毕业设计】基于python-CNN卷积神经网络对猫是否疲劳识别
  • 无线数据通信技术【1.5】
  • Scarab空洞骑士模组管理器:终极安装与使用完整指南
  • 【毕业设计】基于python-CNN卷积神经网络的鱼类识别
  • FramePack智能视频生成:一键将静态图片变生动动画
  • 【课程设计/毕业设计】基于python-深度学习的混凝土马路和泥地马路识别
  • XGBoost生产环境部署实战:高效机器学习平台配置指南