基于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如何使用dasein API连接Azure云(blob存储)   java如何将Jframe cardlayout中的“card”从属于card的Jpanel更改为另一个类?   java如何在单个消息框中显示循环的所有迭代?   java如何设置netbeans保存项目的操作?   java网站的某些选项在web视图中不起作用   java如何在安卓中打开从右到左的菜单滑动条   java更容易反转由静态方法(函数接口)内联创建的比较器?   映射Java HashMap。获取(键)和树形图。获取equals和compareTo方法的(键)用法   java Health endpoints只显示“status:up”,不显示敏感信息   java当我一直按back按钮登录时,字段显示以前插入的用户数据   JTable单元中的java图像显示   go Java vs.Golang for HOTP(rfc4226)   java使用函数链减少分支和清理代码,这有意义吗   java我应该为每个查询创建一个新的DB连接吗?   java推荐的函数调用方法(是否使用CompiledScript?)   java截断分区和地板分区有什么区别?   没有spring引导的java Profile特定属性文件?   异常如何在java中从控制台读取密码?