基于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如何显示因用户而异的SQLite存储数据?   转换java。sql。将映射传递给Jackon的valueToTree方法时StringNode的时间戳   从java中的列表json获取值   unicode Java字符存储在什么编码中?   java如何让Spring数据存储库中的默认方法命中缓存?   java使用readClassDescriptor()和resolveClass()来允许序列化版本控制   数组通过另一个矩阵的一部分填充矩阵   如果包含使用正则表达式的字符串,则替换父XML标记的java   java清除SharedReference中的单个变量   java将变量值从一个jsp页面传输到另一个jsp页面   java JDBC+SQLite:DriveManager不加载所需的驱动程序   相同源代码的java Kotlin构建生成不同的二进制文件   Java中的元组枚举