基于tensorflow的多任务级联卷积神经网络人脸检测

mtcnn的Python项目详细描述


MTCNN

https://badge.fury.io/py/mtcnn.svghttps://travis-ci.org/ipazc/mtcnn.svg?branch=master

python3.4+中张量流mtcnn人脸检测的实现。它是从头开始编写的,使用 来自facenet中david sandberg(FaceNet’s MTCNN)的mtcnn。这是基于论文zhang,k等人。(2016年)[ZHANG2016]

https://github.com/ipazc/mtcnn/raw/master/result.jpg

安装

目前只支持python3.4以后的版本。它可以通过pip安装:

$ pip3 install mtcnn

此实现需要在系统中安装opencv>;=3.2和tensorflow>;=1.4.0,并绑定python3。

它们可以通过PIP安装(如果PIP版本>;=9.0.1):

$ pip3 install tensorflow==1.4.1 opencv-contrib-python==3.2.0.8

或者直接从源代码(OpenCV3Tensorflow)编译。

请注意,如果系统上有可用的GPU设备,则可以使用TensorFlow GPU版本,这将加快结果的速度。它可以与pip一起安装:

$ pip3 install tensorflow-gpu\>=1.4.0

用法

下面的示例演示了此软件包的易用性:

>>>frommtcnn.mtcnnimportMTCNN>>>importcv2>>>>>>img=cv2.imread("ivan.jpg")>>>detector=MTCNN()>>>print(detector.detect_faces(img))[{'box':[277,90,48,63],'keypoints':{'nose':(303,131),'mouth_right':(313,141),'right_eye':(314,114),'left_eye':(291,117),'mouth_left':(296,143)},'confidence':0.99851983785629272}]

检测器返回一个json对象列表。每个json对象包含三个主键:“box”、“confidence”和“keypoints”:

  • 边框的格式为[x,y,width,height],位于“box”键下。
  • 置信度是边界框匹配面的概率。
  • 这些关键点被格式化为一个json对象,其中有“left-eye”、“right-eye”、“nose”、“mouth-left”、“mouth-right”键。每个关键点由像素位置(x,y)标识。

另一个很好的用法示例可以在这个存储库根目录中的文件“example.py”中找到。

基准

下表显示了这个mtcnn实现在Intel i7-3612QM CPU @ 2.10GHz上运行的基准,它基于cputensorflow 1.4.1。

  • Pictures containing a single frontal face:
Image sizeTotal pixelsProcess timeFPS
460x259119,1400.118 seconds8.5
561x561314,7210.227 seconds4.5
667x1000667,0000.456 seconds2.2
1920x12002,304,0001.093 seconds0.9
4799x359917,271,6018.798 seconds0.1
  • Pictures containing 10 frontal faces:
Image sizeTotal pixelsProcess timeFPS
474x224106,1760.185 seconds5.4
736x348256,1280.290 seconds3.4
2100x9942,087,4001.286 seconds0.7

型号

默认情况下,mtcnn捆绑了一个人脸检测权重模型。

该模型改编自facenet的mtcnn实现,合并到一个单独的文件中,该文件位于相对 到模块的路径。它可以通过在实例化期间将其注入mtcnn()构造函数来重写。

模型必须是基于numpy的,包含3个主要键“pnet”、“rnet”和“onet”,每个键都具有网络各层的权重。

有关网络定义的更多参考,请仔细阅读来自zhang等人的论文。(2016年)[ZHANG2016]

许可证

MIT License

参考值

[ZHANG2016](1, 2) Zhang, K., Zhang, Z., Li, Z., and Qiao, Y. (2016). Joint face detection and alignment using multitask cascaded convolutional networks. IEEE Signal Processing Letters, 23(10):1499–1503.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
解组时找不到java类   java如何使用生成器模式实现类的Parcelable   java找不到元素“webflow:flowbuilderservices”的声明   java无法使用JexcelAPI写入excel文件   Java反射:如何获得评论?   机器学习Java Weka获取具有给定属性值的所有实例   ant任务将属性文件复制到java构建目录中相应的位置   将指数方程转换为Java代码时出现问题   多线程Java锁定结构最佳模式   java我需要一些关于这些公式实现的帮助   java使用截击在片段上显示图像   数组需要帮助解决Java中的ArrayIndexOutOfBounds异常   java我有时会出错,有时不会?   java改造如何从json对象获取响应   java如何读取Android崩溃日志?   类获取java中的超级接口   java Tomcat连接池配置:数据源类型和“连接太多”错误   java BroadcastReceiver OnReceive无法正常工作   基于JDK8/JRE8+eclipseluna的java-Google应用程序引擎开发   java JSwing简单按钮/JFXPanel布局