# mtcnn **Repository Path**: phyzy/mtcnn ## Basic Information - **Project Name**: mtcnn - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Introduction this repository is the implementation of MTCNN in MXnet * `core`: core routines for MTCNN training and testing. * `tools`: utilities for training and testing * `data`: Refer to `Data Folder Structure` for dataset reference. Usually dataset contains `images` and `imglists` * `model`: Folder to save training symbol and model * `prepare_data`: scripts for generating training data for pnet, rnet and onet ## Useful information You're required to modify mxnet/src/regression_output-inl.h according to mxnet_diff.patch before using the code for training. * Dataset format The images used for training are stored in ./data/dataset_name/images/ The annotation file is placed in ./data/dataset_name/imglists/ * For training: Each line of the annotation file states a training sample. The format is: [path to image] [cls_label] [bbox_label] cls_label: 1 for positive, 0 for negative, -1 for part face. bbox_label are the offset of x1, y1, x2, y2, calculated by (xgt(ygt) - x(y)) / width(height) An example would be `12/positive/28 1 -0.05 0.11 -0.05 -0.11`. Note that all the strings are seperated by space. * For testing: Similar to training but only path-to-image is needed. * Data Folder Structure (suppose root is `data`) ``` cache (created by imdb) -- name + image set + gt_roidb -- results (created by detection and evaluation) mtcnn # contains images and anno for training mtcnn -- images ---- 12 (images of size 12 x 12, used by pnet) ---- 24 (images of size 24 x 24, used by rnet) ---- 48 (images of size 48 x 48, used by onet) -- imglists ---- train_12.txt ---- train_24.txt ---- train_48.txt custom (datasets for testing) -- images -- imglists ---- image_set.txt ``` * Scripts to generate training data(from wider face dataset) * run wider_annotations/transform.m (or transform.py) to get the annotation file of the format we need. * gen_pnet_data.py: obtain training samples for pnet * gen_hard_example.py: prepare hard examples. you can set test_mode to "pnet" to get training data for rnet, or set test_mode to "rnet" to get training data for onet. * gen_imglist.py: ramdom sample images generated by gen_pnet_data.py or gen_hard_example.py to form training set. ## Results ![image](https://github.com/Seanlinx/mtcnn/blob/master/fddb_result.png) ## License MIT LICENSE ## Reference Kaipeng Zhang, Zhanpeng Zhang, Zhifeng Li, Yu Qiao , " Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks," IEEE Signal Processing Letter