一、背景
MTCNN是一种经典的人脸检测方法,通过三个阶段的深度卷积网络级联,实现“由粗到精”的检测过程,最终能够输出一幅图像中的人脸框坐标与每个人脸的5个特征点坐标。网络上有关该论文与方法的解读有很多,在最后的参考中我会放上自己觉得不错的几篇链接。这篇文章主要给出Python中调用训练好的MTCNN模型做正向推理的过程,其中大部分参考自https://blog.csdn.net/BEYONDldh/article/details/105221244,感谢这位博主的无私分享。我会给出所有阶段的实现代码,并在必要部分结合论文做注释说明。
二、实现
1、运行环境搭建
我使用的是基于win10的64bit系统,安装Python,和tf2、opencv。
2、模型的建立
上图是MTCNN论文中的模型部分介绍,总共三个模型,其中基本由卷积层、池化层、全连接层组成,网络结构比较简单。 链接中提供了训练好的三个网络权重,这里我们只需要建立模型后加载权重信息。相关代码如下
# 构造PNET
def