All Projects → peiyunh → Tiny

peiyunh / Tiny

Licence: other
Tiny Face Detector, CVPR 2017

Programming Languages

matlab
3953 projects

Projects that are alternatives of or similar to Tiny

Jeelizfacefilter
Javascript/WebGL lightweight face tracking library designed for augmented reality webcam filters. Features : multiple faces detection, rotation, mouth opening. Various integration examples are provided (Three.js, Babylon.js, FaceSwap, Canvas2D, CSS3D...).
Stars: ✭ 2,042 (+89.25%)
Mutual labels:  face-detection, detection
timeline
Timeline - A photo organizer
Stars: ✭ 39 (-96.39%)
Mutual labels:  detection, face-detection
Dockerface
Face detection using deep learning.
Stars: ✭ 173 (-83.97%)
Mutual labels:  face-detection, detection
Catt
Detecting the temperature from an infrared image
Stars: ✭ 60 (-94.44%)
Mutual labels:  face-detection, detection
jeelizGlanceTracker
JavaScript/WebGL lib: detect if the user is looking at the screen or not from the webcam video feed. Lightweight and robust to all lighting conditions. Great for play/pause videos if the user is looking or not, or for person detection. Link to live demo.
Stars: ✭ 68 (-93.7%)
Mutual labels:  detection, face-detection
Cnn Paper2
🎨 🎨 深度学习 卷积神经网络教程 :图像识别,目标检测,语义分割,实例分割,人脸识别,神经风格转换,GAN等🎨🎨 https://dataxujing.github.io/CNN-paper2/
Stars: ✭ 77 (-92.86%)
Mutual labels:  face-detection, detection
MVDet
[ECCV 2020] Codes and MultiviewX dataset for "Multiview Detection with Feature Perspective Transformation".
Stars: ✭ 123 (-88.6%)
Mutual labels:  detection, detector
Extd pytorch
Official EXTD Pytorch code
Stars: ✭ 177 (-83.6%)
Mutual labels:  face-detection, detection
ARFaceFilter
Javascript/WebGL lightweight face tracking library designed for augmented reality webcam filters. Features : multiple faces detection, rotation, mouth opening. Various integration examples are provided (Three.js, Babylon.js, FaceSwap, Canvas2D, CSS3D...).
Stars: ✭ 72 (-93.33%)
Mutual labels:  detection, face-detection
face-mask-detection-tf2
A face mask detection using ssd with simplified Mobilenet and RFB or Pelee in Tensorflow 2.1. Training on your own dataset. Can be converted to kmodel and run on the edge device of k210
Stars: ✭ 72 (-93.33%)
Mutual labels:  detection, face-detection
East icpr
Forked from argman/EAST for the ICPR MTWI 2018 CHALLENGE
Stars: ✭ 154 (-85.73%)
Mutual labels:  detector, detection
Imagedetect
✂️ Detect and crop faces, barcodes and texts in image with iOS 11 Vision api.
Stars: ✭ 286 (-73.49%)
Mutual labels:  face-detection, detector
Detectem
detectem - detect software and its version on websites.
Stars: ✭ 152 (-85.91%)
Mutual labels:  detector, detection
Sod
An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)
Stars: ✭ 1,460 (+35.31%)
Mutual labels:  face-detection, detection
Ssd Pytorch
SSD: Single Shot MultiBox Detector pytorch implementation focusing on simplicity
Stars: ✭ 107 (-90.08%)
Mutual labels:  detector, detection
brfv4 android examples
Android Studio project (Java)
Stars: ✭ 43 (-96.01%)
Mutual labels:  detection, face-detection
brfv4 win examples
Windows C++ examples utilizing OpenCV for camera access and drawing the face tracking results.
Stars: ✭ 13 (-98.8%)
Mutual labels:  detection, face-detection
Brfv4 javascript examples
BRFv4 - HTML5/Javascript - examples project. Reference implementation for all other platform example packages.
Stars: ✭ 460 (-57.37%)
Mutual labels:  face-detection, detection
Facekit
Implementations of PCN (an accurate real-time rotation-invariant face detector) and other face-related algorithms
Stars: ✭ 1,028 (-4.73%)
Mutual labels:  face-detection
Facemask
Realtime face and mask detection
Stars: ✭ 51 (-95.27%)
Mutual labels:  face-detection

Demo result

Finding Tiny Faces

By Peiyun Hu and Deva Ramanan at Carnegie Mellon University.

Introduction

We develop a face detector (Tiny Face Detector) that can find ~800 faces out of ~1000 reportedly present, by making use of novel characterization of scale, resolution, and context to find small objects. Can you confidently identify errors?

Tiny Face Detector was initially described in an arXiv tech report.

In this repo, we provide a MATLAB implementation of Tiny face detector, including both training and testing code. A demo script is also provided.

Citing us

If you find our work useful in your research, please consider citing:

@InProceedings{Hu_2017_CVPR,
  author = {Hu, Peiyun and Ramanan, Deva},
  title = {Finding Tiny Faces},
  booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
  month = {July},
  year = {2017}
}

Installation

Clone the repo recursively so you have my fork of MatConvNet.

git clone --recursive [email protected]:peiyunh/tiny.git

Compile MatConvNet by running following commands in MATLAB (see Installing - MatConvNet for more details):

>> cd matconvnet/;
>> addpath matlab/; 
>> vl_compilenn('enableImreadJpeg', true, 'enableGpu', true, 'cudaRoot', [cuda_dir],...
                'cudaMethod', 'nvcc', 'enableCudnn', true, 'cudnnRoot', [cudnn_dir]);
>> vl_testnn('gpu', true);  % vl_testnn('gpu', false) for cpu-only 

Compile our MEX function in MATLAB and test if it works as expected:

>> cd utils/;
>> compile_mex;
>> test_compute_dense_overlap;

Download WIDER FACE and unzip data and annotation files to data/widerface such that:

$ ls data/widerface
wider_face_test.mat   wider_face_train.mat    wider_face_val.mat
WIDER_test/           WIDER_train/            WIDER_val/

Demo

We provide a minimal demo tiny_face_detector.m that runs our detector on an single input image and output face detections:

function bboxes = tiny_face_detector(image_path, output_path, prob_thresh, nms_thresh, gpu_id)

Here is a command you can run to reproduce our detection results on the world's largest selfie:

>> bboxes = tiny_face_detector('data/demo/selfie.jpg', './selfie.png', 0.5, 0.1, 1)

The demo script will start by downloading an off-the-shelf ResNet101-based model, if it does not find one. Models based on other architecture are also available below:

Training

To train a ResNet101-based Tiny Face Detector, run following command in MATLAB:

>> hr_res101('train');           % which calls cnn_widerface.m

After training, run the following command to test on the validation set:

>> hr_res101('test');            % which calls cnn_widerface_test_AB.m 

Finally, run the following command to evaluate the trained models:

>> hr_res101('eval');            % which calls cnn_widerface_eval.m

Please refer to scripts/hr_res101.m for more details on how training/testing/evaluation is configured.

Clustering

We derive canonical bounding box shapes by K-medoids clustering (cluster_rects.m). For reproducibility, we provide our clustering results in data/widerface/RefBox_N25.mat. We also provide the version after template resolution analysis in data/widerface/RefBox_N25_scaled.mat (Fig. 8 in our paper).

Evaluation

We provide both our own version of evaluation script (cnn_widerface_eval.m) and official evaluation script (eval_tools/). Our implementation runs much faster and is easier to customize. However, our version produces slightly lower numbers comparing to the official one. We use our evaluation script only for prototyping. All numbers in the paper are based on the official evaluation script.

FAQ

How do I train it on my own datasets?

Training a tiny-X-detector on your own dataset takes just a little bit of coding and it is certainly doable. I would suggest start from the script named cnn_setup_imdb.m. The script produces a imdb.mat file which contains information about the path of images and the ground truth bounding boxes. Try modifying cnn_setup_imdb.m to make sure such information of your dataset goes into imdb.mat.

Third-party re-implementations

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].