.. vim: set fileencoding=utf-8 : .. Tiago de Freitas Pereira .. Fri 17 Jul 02:49:53 2016 CEST .. _bob.ip.mtcnn: ==================================================== Bob interface for mtcnn face and landmark detection ==================================================== This package binds the face and landmark detection from the paper: @ARTICLE{7553523, author={K. Zhang and Z. Zhang and Z. Li and Y. Qiao}, journal={IEEE Signal Processing Letters}, title={Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks}, year={2016}, volume={23}, number={10}, pages={1499-1503}, keywords={Benchmark testing;Computer architecture;Convolution;Detectors;Face;Face detection;Training;Cascaded convolutional neural network (CNN);face alignment;face detection}, doi={10.1109/LSP.2016.2603342}, ISSN={1070-9908}, month={Oct},} User guide ========== Face Detection and Landmark detection ------------------------------------- The most simple face detection task is to detect a single face in an image. This task can be achieved using a single command: >>> import bob.ip.mtcnn >>> import bob.io.base >>> import bob.io.base.test_utils >>> color_image = bob.io.base.load(bob.io.base.test_utils.datafile('testimage.jpg', 'bob.ip.facedetect')) >>> bounding_box, landmarks = bob.ip.mtcnn.FaceDetector().detect_single_face(color_image) >>> print(bounding_box.topleft) (64, 77) .. plot:: plot/plot_single_faces.py :include-source: False Multiple Face Detection ----------------------- The detection of multiple faces can be achieved with a single command: .. doctest:: mtcnntest >>> import bob.ip.mtcnn >>> import bob.io.base >>> import bob.io.base.test_utils >>> color_image = bob.io.base.load(bob.io.base.test_utils.datafile('multiple-faces.jpg', 'bob.ip.mtcnn')) >>> bounding_box, landmarks = bob.ip.mtcnn.FaceDetector().detect_all_faces(color_image) >>> print ((bounding_box[0].topleft, bounding_box[0].bottomright)) ((28, 189), (102, 244)) .. plot:: plot/plot_multiple_faces.py :include-source: False Landmark detection ------------------ The detection of landmarks can be done as the following: .. doctest:: mtcnntest >>> import bob.ip.mtcnn >>> import bob.io.base >>> import bob.io.base.test_utils >>> color_image = bob.io.base.load(bob.io.base.test_utils.datafile('testimage.jpg', 'bob.ip.facedetect')) >>> bounding_box, landmarks = bob.ip.mtcnn.FaceDetector().detect_single_face(color_image) >>> print (landmarks['leye']) (174, 219) Face genometric normalization ----------------------------- The detection of landmarks can be done as the following: .. doctest:: mtcnntest >>> import bob.ip.mtcnn >>> import bob.io.base >>> import bob.io.base.test_utils >>> color_image = bob.io.base.load(bob.io.base.test_utils.datafile('testimage.jpg', 'bob.ip.facedetect')) >>> color_image_norm = bob.ip.mtcnn.FaceDetector().detect_crop(color_image, final_image_size=(224, 224)) >>> color_image_norm_align = bob.ip.mtcnn.FaceDetector().detect_crop_align(color_image, final_image_size=(224, 224)) .. plot:: plot/plot_align_faces.py :include-source: False Python API ========== .. toctree:: :maxdepth: 2 py_api references