Skip to main content

MTCNN

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

Implementation of the MTCNN face detector for Keras in Python3.4+. It is written from scratch, using as a reference the implementation of MTCNN from David Sandberg (FaceNet’s MTCNN) in Facenet. It is based on the paper Zhang, K et al. (2016) [ZHANG2016].

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

INSTALLATION

Currently it is only supported Python3.4 onwards. It can be installed through pip:

$ pip install mtcnn

This implementation requires OpenCV>=4.1 and Keras>=2.0.0 (any Tensorflow supported by Keras will be supported by this MTCNN package). If this is the first time you use tensorflow, you will probably need to install it in your system:

$ pip install tensorflow

or with conda

$ conda install tensorflow

Note that tensorflow-gpu version can be used instead if a GPU device is available on the system, which will speedup the results.

USAGE

The following example illustrates the ease of use of this package:

>>> from mtcnn import MTCNN
>>> import cv2
>>>
>>> img = cv2.cvtColor(cv2.imread("ivan.jpg"), cv2.COLOR_BGR2RGB)
>>> detector = MTCNN()
>>> 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
    }
]

The detector returns a list of JSON objects. Each JSON object contains three main keys: ‘box’, ‘confidence’ and ‘keypoints’:

  • The bounding box is formatted as [x, y, width, height] under the key ‘box’.

  • The confidence is the probability for a bounding box to be matching a face.

  • The keypoints are formatted into a JSON object with the keys ‘left_eye’, ‘right_eye’, ‘nose’, ‘mouth_left’, ‘mouth_right’. Each keypoint is identified by a pixel position (x, y).

Another good example of usage can be found in the file “example.py.” located in the root of this repository. Also, you can run the Jupyter Notebook “example.ipynb” for another example of usage.

BENCHMARK

The following tables shows the benchmark of this mtcnn implementation running on an Intel i7-3612QM CPU @ 2.10GHz, with a CPU-based Tensorflow 1.4.1.

  • Pictures containing a single frontal face:

Image size

Total pixels

Process time

FPS

460x259

119,140

0.118 seconds

8.5

561x561

314,721

0.227 seconds

4.5

667x1000

667,000

0.456 seconds

2.2

1920x1200

2,304,000

1.093 seconds

0.9

4799x3599

17,271,601

8.798 seconds

0.1

  • Pictures containing 10 frontal faces:

Image size

Total pixels

Process time

FPS

474x224

106,176

0.185 seconds

5.4

736x348

256,128

0.290 seconds

3.4

2100x994

2,087,400

1.286 seconds

0.7

MODEL

By default the MTCNN bundles a face detection weights model.

The model is adapted from the Facenet’s MTCNN implementation, merged in a single file located inside the folder ‘data’ relative to the module’s path. It can be overriden by injecting it into the MTCNN() constructor during instantiation.

The model must be numpy-based containing the 3 main keys “pnet”, “rnet” and “onet”, having each of them the weights of each of the layers of the network.

For more reference about the network definition, take a close look at the paper from Zhang et al. (2016) [ZHANG2016].

LICENSE

MIT License.

REFERENCE

[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.

Release files for mtcnn 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mtcnn 0.1.1
File Size Uploaded
mtcnn-0.1.1.tar.gz 2.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for mtcnn 0.1.1
File Interpreter ABI Platform
mtcnn-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 4.5 MB

Release files / mtcnn-0.1.1.tar.gz

Download URL mtcnn-0.1.1.tar.gz
Size 2.3 MB
Tags Source
SHA-256 checksum
How to use checksums
d0957274584be62cb83d4a089041f8ee3cf3b1893e45f01ed3356f94a381302b
BLAKE2b-256 checksum
How to use checksums
ef11d549caa104ac2a03b6ef32bfca841ebb04c99ddf704b197c272bcdec054d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.5

Release files / mtcnn-0.1.1-py3-none-any.whl

Download URL mtcnn-0.1.1-py3-none-any.whl
Size 2.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
fd69d2f4dd10647dd7481a53b9586e805f35a17c61ac78ba472a7f53766eb86e
BLAKE2b-256 checksum
How to use checksums
09d12a4269e387edb97484157b872fa8a1953b53dcafbe4842a1967f549ac5ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.5

Release history Release notifications | RSS feed

1.0.0

2 release files

This release

0.1.1 This release

2 release files

0.1.0

3 release files

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page