python代码总体框架怎么写_mtcnn python 开源代码详细图解

本文介绍了MTCNN在Python中的应用,分享了两周学习的感悟和整体架构。首先概述了参考架构,接着详细描述了代码流程,包括构建计算图、初始化模型、检测人脸框等步骤。文章提到了关键函数如imresample、rerec和pad的作用,并展示了部分代码示例。虽然没有深入细节,但提供了理解MTCNN整体框架的起点。
摘要由CSDN通过智能技术生成

感觉自己陷入了代码细节误区,本着时间紧任务重的理念,加上本人能力有限,暂时无法完成细节代码图解,但是可以简单写一下自己两周以来的学习感悟,和整体架构!

首先总体架构参考如下博客:https://zhuanlan.zhihu.com/p/38520597

代码部分总的执行流程如下:

代码结构截图:

代码实现模型的初始化,首先是构建mtcnn的tensorflow计算图,然后载入训练好的模型参数,细节是分别调用pnet,rnet,onet组装成mtcnn。里面涉及python装饰器的内容,首先写了一个基本的层,然后用装饰器分别实现神经网络各种层,感觉有点类似caffe的工厂模式。

代码实现最终的检测道德人脸框的四个点坐标和5个点的包括双眼,鼻尖,两个嘴角的坐标。

这是官方训练好的模型文件。

这里会对检测到的人脸框和五点位置进一步处理,最终得到我们想要的结果。

这里是代码的核心了,首先得到图像金字塔,参考博文。https://blog.csdn.net/poem_qianmo/article/details/26157633

然后输入pnet,返回值输入框的初始化,然后nms,然后rect实现正方形框输出,然后因为预测的框会超过原图边界,所以会涉及像素填充调用pad函数,然后输入到rnet,图像缩放、像素值归一化,归一化就是等比例缩放数值,如下图所示:

后面的也会有nms,等函数的调用就不一一细说了,先理解整体框架,具体代码实现讲解后面补充。

下面列出pro:net的网络结构图。

pnet 人脸得分 conv4-1, 人脸框对应 conv4-2,

rnet 人脸得分 conv5-1, 人脸框对应 conv5-2,

onet 人脸得分 conv6-1, 人脸框对应 conv6-2, 和 五点conv6-3 对应

代码解释:detect_face.py

1、def imresample(img, sz):函数主要功能对图片进行缩小放大。

im_data = cv2.resize(img, (sz[1], sz[0]), interpolation=cv2.INTER_AREA)

img 输入图片

sz[1], sz[0] resiz的尺寸

利用python opencv中的 cv.Resize(源,目标,变换方法)就可以实现变换为想要的尺寸了

源文件:就不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值