人脸算法系列:MTCNN人脸检测详解.docx

上传人:安*** 文档编号:73274790 上传时间:2023-02-17 格式:DOCX 页数:9 大小:19.15KB
返回 下载 相关 举报
人脸算法系列:MTCNN人脸检测详解.docx_第1页
第1页 / 共9页
人脸算法系列:MTCNN人脸检测详解.docx_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《人脸算法系列:MTCNN人脸检测详解.docx》由会员分享,可在线阅读,更多相关《人脸算法系列:MTCNN人脸检测详解.docx(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、人脸算法系列:MTCNN人脸检测详解来源|AI算法与图像处理封图|CSDN付费下载于视觉中国本文的内容预览人脸检测的概念人脸检测是一种在多种应用中使用的计算机技术可以识别数字图像中的人脸。人脸检测还指人类在视觉场景中定位人脸的经过。人脸检测可以视为目的检测的一种特殊情况。在目的检测中任务是查找图像中给定类的所有对象的位置以及大小。例如行人以及汽车。人脸检测例如在人脸检测中应用较广的算法就是MTCNNMulti-taskCascadedConvolutionalNetworks的缩写。MTCNN算法是一种基于深度学习的人脸检测以及人脸对齐方法它可以同时完成人脸检测以及人脸对齐的任务相比于传统的算

2、法它的性能更好检测速度更快。本文目的不是为了强调MTCNN模型的训练而是怎样使用MTCNN提取人脸区域以及特征点为后续例如人脸识别以及人脸图片预处理做铺垫。接下来介绍MTCNN的使用让大众对其有一个直观的感受再深化解析其原理。MTCNN的使用Paper地址s:/kpzhang93.github.io/MTCNN_face_detection_alignment/github链接s:/github/kpzhang93/MTCNN_face_detection_alignment其他版本s:/github/AITTSMD/MTCNN-Tensorflow是基于caffe实现的因为本人配置了屡次都失

3、败了因此尝试了其他框架的采用mxnet框架当然也附上了pytorch版本的。本次使用的工程链接s:/github/YYuanAnyVision/mxnet_mtcnn_face_detection其他参考pytorch版本s:/github/TropComplique/mtcnn-pytorch第一步将工程克隆下来gitclones:/github/YYuanAnyVision/mxnet_mtcnn_face_detection当然很有可能会中途失败我自己也是尝试屡次都没搞定又慢又老是不行。不过之前共享过一个妙招假如看过的小伙伴一定知道怎样解决。这里附上文章链接完美解决Github上下载工程

4、失败或者速度太慢的问题第二步配置好所需的环境mxnet的安装非常容易这里以我的电脑为例安装GPU版本的mxnet只需一行代码即可完成安装首先查询自己所安装cuda的版本并输入对应的指令即可#例如我的电脑是cuda9.0的pipinstallmxnet-cu90这里有补充讲明s:/pypi.org/project/mxnet-cu90/更多内容可以百度搜索解决。第三步运行代码该工程已经有预训练模型了直接运行main.py即可。但是你一运行就会发现哦豁报错了。这是因为该工程是用python2写的所以存在一些需要修改的地方。问题一ImportError:cannotimportnameizip报错文

5、件mtcnn_detector.py解决方案python3中的zip就相当于python2itertools里的izip因此只需要做以下修改即可在mtcnn_detector.py将报错的fromitertoolsimportizip注释掉下面加一行试试看。详细操作在main.py中找到fromitertoolsimportizip并修改成下面即可。#fromitertoolsimportizipizipzip解决了之后在运行一次main.py卧槽又不行了问题2TypeError:floatobjectcannotbeinterpretedasaninteger类型错误“float对象不能解释

6、为整数解决方法将报错的地方存在的“/都修改成“/即可同类报错一样的解决方法。python2以及python3中运算符的区别。python3中/运算的结果是含有浮点数的。而python2中/是等价于python3中的/python3中/表示向下取整的除法。#举个例子在python3中/print(3/2,3/2)#输出1.51历经千辛万苦最终展示效果到这里我们已经可以检测到人脸了对于自己的图片只需要修改main.py中读入的图片途径即可。更多自定义操作例如批量处理以及保存可以根据自己的需求来添加。MTCNN的原理对于如此经典的网络仅仅掌握其使用还是不够的因此接下来将详细的讲明一下其内在的原理。图

7、片来源与论文原文从上图可以知道主要包括四个操作三个步骤。1、图像金字塔对图片进展Resize操作将原始图像缩放成不同的尺度生成图像金字塔。然后将不同尺度的图像送入到这三个子网络中进展训练目的是为了可以检测到不同大小的人脸进而实现多尺度目的检测。图像金字塔是图像中多尺度表达的一种。对于图像金字塔的详细原理这里不详细展开有兴趣可以参考这篇文章s:/zhuanlan.zhihu/p/80362140三个子网络图2、P-NetProposalNetwork论文原文对P-Net的描绘该网络构造主要获得了人脸区域的候选框以及边界框的回归向量。然后基于预测边界框回归向量对候选框进展矫正。在这之后我们采用NM

8、S来合并重叠率高的候选框。P-Net是一个人脸区域的候选网络该网络的输入一个12x12x3的图像通过3层的卷积之后判断这个12x12的图像中是否存在人脸并且给出人脸框的回归以及人脸关键点。网络的第一局部输出是用来判断该图像是否存在人脸输出向量大小1x1x2也就是两个值。网络的第二局部给出框的准确位置一般称为框回归。P-Net输入的1212的图像块可能并不是完美的人脸框的位置如有的时候人脸并不正好为方形有可能1212的图像偏左或者偏右因此需要输出当前框位置相对完美的人脸框位置的偏移。这个偏移大小为114即表示框左上角的横坐标的相对偏移框左上角的纵坐标的相对偏移、框的宽度的误差、框的高度的误差。网

9、络的第三局部给出人脸的5个关键点的位置。5个关键点分别对应着左眼的位置、右眼的位置、鼻子的位置、左嘴巴的位置、右嘴巴的位置。每个关键点需要两维来表示因此输出是向量大小为1110。3、R-NetRefineNetwork论文原文对P-Net的描绘P-Net的所有候选框都输入到R-Net中该网络构造还是通过边界框回归以及NMS来去掉大量的false-positive区域。从网络图可以看到只是由于该网络构造以及P-Net网络构造有差异多了一个全连接层所以会获得更好的抑制false-positive的作用。在输入R-Net之前都需要缩放到24x24x3网络的输出与P-Net是一样的R-Net的目的是为

10、了去除大量的非人脸框。4、O-NetOutputNetwork论文原文对O-Net的描绘这个阶段类似于第二阶段但是在这个阶段在此阶段我们目的通过更多的监视来识别面部区域。十分是网络将输出五个面部关键点的位置。从网络图可以看到该层比R-Net层有多了一层卷积层所以处理的结果会更加精细。输入的图像大小48x48x3输出包括N个边界框的坐标信息score和关键点位置。总结从P-Net到R-Net再到最后的O-Net网络输入的图像越来越大卷积层的通道数越来越多网络的深度层数也越来越深因此识别人脸的准确率应该也是越来越高的。对各个网络结果的作用理解之后我们深化解析一下其所采用的损失函数。MTCNN的损失函数针对人脸识别问题直接使用穿插熵代价函数对于框回归以及关键点定位使用L2损失。最后把这三局部的损失各自乘以自身的权重累加起来形成最后的总损失。1、人脸识别损失函数cross-entryloss2、回归框的损失函数Euclideanloss3、关键点的损失函数Euclideanloss4、总损失详细的各个公式的含义大众应该都明白这里强调一下最后的总损失前添加了一个权重即损失函数所对应的权重是不一致的。详细设置可以参看论文原文。【end】有奖征文

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 工程图纸

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com