Computer Vision for Faces

Become an expert in Computer Vision for faces in just 12 weeks with this practical course for building applications using OpenCV + Dlib (C++ & Python)

   Watch Promo

This course is not open for enrollment

Email me when the course opens

Why join this course?

Short answer - AI is fun, and it pays very well!

Want to start a career in the exciting field of Computer Vision, Machine Learning, and Artificial Intelligence? This course is an excellent start. Yes, AI jobs pay a LOT more than regular programming jobs!

Want to build your own applications for faces? This is the perfect course for in-depth education and practical training.

Are you the tinkerer who loves experimenting with new technology? This course will add amazingly cool tools to your arsenal.

Are you an expert in Computer Vision? This course will expand your expertise and help you quickly start with our sample code.

Become a Face Processing Expert in 12 weeks!

Join us in this course to learn about an important field of Computer Vision quickly and apply the knowledge widely. In just twelve weeks, we will deconstruct the mystery behind many face processing algorithms using easy to follow tutorials and code written in both C++ and Python.

We will use OpenCV and Dlib to provide you with the education and training needed to use cutting edge algorithms in your own applications.

We will also cover an introduction to Deep Learning and use Deep Learning for Face Recognition and Emotion Recognition.

Why Faces?

  1. Faces are everywhere: A vast majority of photos and videos contain faces. Processing and analyzing faces is an area rich with applications, jobs, and opportunities. Trust me, Snapchat filters are just a start!
  2. Face processing touches many areas of Computer Vision: Even before "selfie" was a word, a vast number of Computer Vision and Machine Learning (CVML) algorithms were developed for and applied to human faces.

    Face processing trains you for object detection, face recognition, emotion recognition, landmark detection, computational photography, augmented reality and much more.
  3. The world rewards expertise: CVML is a vast area. Mastering every aspect of CVML will takes months, if not years, of hard work. This course will help you build expertise in a short period of time by focussing on an extremely important field of Computer Vision. The motto of this course is

    Think big. Start small. Act Now!

  4. Instant gratification: A short course is incredibly motivating when you are starting something new. You know the journey is short, sweet, guided and extremely rewarding.

What topics will we cover?

The course is very application-oriented. Everything I teach will be tied to a cool application. We will include enough theory to give you an excellent understanding of how things work, but we will not go over tedious mathematical details. Sorry, this course is not for scientists!

Let's take a look!

Build a Face Recognition system (OpenCV and Deep Learning)

Face Recognition

Ever wondered how Facebook and other photo applications like iPhoto automatically know who is in the picture? These applications have learned to recognize you in pictures after analyzing photos you were tagged in.

In this course, I will not only help you understand Face Recognition algorithms; I will provide step by step instructions on how to train such a system. You will be able to enroll new people in the system using their images and videos.

Hey, you can even build your own security system that identifies family members and alerts you when a stranger is knocking at your front door!

We will be building two different systems

  1. OpenCV based: We will train a face recognition system using OpenCV.
  2. Deep Learning based: A Deep Learning based system for advanced users. We will use Amazon AWS services for training the Deep Learning system.

Object Detector & Tracking

Object Detection and Tracking Do you know the fundamental difference between Image Processing and Computer Vision? In Image Processing, the input is an image, and the output is a processed image. In Computer Vision, the input is an image, and the output is information! A face detector is a classic example -- the input is an image, and the output is the location (x, y, width, height) of faces in that image.

Most people who have used OpenCV know how to use the OpenCV Face Detector. But won't it be cool if you understood the concepts behind object detection and how could you train your object detector from scratch?

You can apply the techniques you learn to build a face detector to build your object detector (e.g. a vehicle detector or an eye detector).

We will also show how to use face detection in conjunction with face tracking to improve robustness.

Train your own Facial Landmark Detector ( with eye centers!)

In this course, we will also learn how to accurately locate the features of the face ( e.g. eyes, nose, lips, eyebrows ) in real time using a facial landmark detector.

Not only will we learn how to use a facial landmark detector included in Dlib, but we will also learn how to train one from scratch.

To train a facial landmark detector, we need the landmarks hand-marked on a couple of thousand images. This data is fed to a training algorithm that learns how to locate these landmarks on a new image. Dlib's landmark detector does not contain the center of the eyes, but ours will!

Stabilize points: For video applications, we will learn how to use point trackers to stabilize the points.

Batteries included! : The best part is that you don't even have to collect your data. My data collection team will do the tedious work for you!

More than a facial landmark detector: The detector we learn for facial landmark detector is a general purpose tool that can be used for locating other shapes ( e.g. the four corners of a book ) when trained with the right data!

Blink and Drowsy Driver Detection

Blink Detection

A blink lasts anywhere between 100 ms and 400 ms. Fortunately, even your webcam is fast enough to gather a few frames during a blink that can be analyzed to detect a blink!

Why do you need to detect blinks? Some systems developed for physically disabled people interact with computers are based on blinks. If you are constantly looking at a computer screen and not blinking enough, you may develop an eye ailment called the Computer Vision Syndrome. Ironically, you can build a Computer Vision application based on blink analysis to prevent Computer Vision Syndrome!

The movement of the eyelids provides crucial information in systems for detecting drowsy drivers. The tools we will develop during the course will help you solve both the problems.

Snapchat filters are easy!

This course will not help you figure out why Snap Inc. is worth billions of dollars. But, it will teach you how to build some of their filters. You will be amazed how combining some simple ideas you will learn in this course can be used to make sophisticated and fun applications. You can scare anyone by putting on that mustache on a friend; especially if your friend is a woman!

Skin Detection & Smoothing for Faces

The human skin tone lies in a relatively narrow range in the color spectrum. It is possible to automatically detect pixels in an image that are close to human skin tone. In applications related to faces, we have even more information. We know the structure of the face, and this additional information is used to improve the accuracy of facial skin detection algorithms.

An obvious application of facial skin detection is smooth the picture to make beautiful pictures!

Make your machine Recognize Emotions

We laugh. We cry. We smile. We are sad. We are disgusted.

Emotions make us human. We want the machines of the future to have empathy. Let's teach them how to read our emotions!

In this course, we will teach a machine -- your computer -- to recognize your emotional state and prevent you from sending that angry email to your girlfriend, boyfriend or spouse! Just kidding. It will let you send that email so you can spend more time on this course! Again, we will be training a Deep Learning based system using Tensorflow to achieve this.

Build your own Instagram with cool Photo Filters

If you knew how to create these filters, you would have built Instagram over a weekend. Of course, I am exaggerating, but you will learn some tips and tricks for building some very cool filters for your next photo applications.

Face Morphing

Face Morphing The special effects industry has used morphing for a few decades to create stunning visual effects. Once you know the underlying principles, implementing your own algorithm for morphing using tools available in OpenCV are easy. With our guidance, you will learn the process in easy, gentle steps in a language of your choice.

We will also learn that the fundamental problem in morphing is establishing point correspondences. If you have a way to establish point correspondences, morphing is not limited to faces; you can morph any object to any other object.

Build your own Spot Healing tool

Spot Healing Tool using OpenCV

Have you ever used the spot healing tool in Photoshop? You click on a blemish on the face, and it magically disappears! Now imagine having the knowledge and the tools to build your own spot healing tool. Well, we will teach you how to build this application in less than 100 lines of code.

Face Averaging

Face Averaging

Wouldn't it be cool if you could click photos of your friends and see what the average looks like? Whether you like it or not, the average face is probably going to be better looking than all of you!

Basic Image Processing and Computer Vision

In this course, we do not expect you to have any prior knowledge of image processing and computer vision. We will cover many basic algorithms in image processing and computer vision at the beginning of the course. For example, you will start by examples showing how to read images, and after the first two weeks you will have a solid idea about filtering, color transforms, alpha blending, affine transforms, image warping and much more.

Facial Landmark Detection on iOS (Plus and Premium)

Facial Landmark Detection for iOS

If you purchase the Plus or Premium versions of this course, you will get access to the code for Facial Landmark Detection on iOS. The code will contain a sample application that displays landmarks on the face and a toggle button to turn the display on or off.

With this starter code, you will be one big step closer to using some of the skills you have acquired in this course to make an iPhone app. We will provide instructions on how to download code and set up your project.

For iOS 11 or later, we will use the native Facial Landmark Detector. For iOS 10, we will use a port of Dlib's Facial Landmark Detector. Dlib's Facial Landmark model is 100 MB in size! For a mobile application, the model size is very large. We will also share a much smaller model with fewer landmark points. Of course, you can build your own model with the skills you acquire in this course!

Disclaimer: We expect most of the C++ code shared in this course to run on iOS, but iOS is not officially supported as part of this course. We will guarantee the starter code works on iOS, but cannot guarantee that all examples shared in this course will compile or run smoothly on a mobile device.

Who is this course for?

Short answer: It is for people who invest in themselves!

This course is for creative people, like yourself, who have the itch to learn something new and build something awesome. It is for --

  1. Programmers and Engineers looking to make a move into the exciting new world of Artificial Intelligence with better-paying jobs and opportunities. You may have tinkered with OpenCV, run a few demos, but now you want to dig deeper and get better.
  2. Entrepreneurs who want to quickly build expertise to write their own applications or start a new company to bring their AI idea to life.
  3. Students who are evaluating their career options in Computer Vision and Machine Learning.
  4. Hobbyists who love building fun stuff; who can learn by reading but prefer to learn by doing.
  5. CVML folks who have worked in other areas of CVML and want to expand their expertise in the domain of Face Processing.


The curriculum is listed below. This represents the approximate order in which the course will progress.

Module 0: Getting Started
Module 0.1 : Install OpenCV + Dlib on MacOS ( C++ & Python )
Module 0.2a : Install OpenCV + Dlib on Ubuntu 16 ( C++ & Python )
Module 0.2b : Install OpenCV + Dlib on Ubuntu 18 ( C++ & Python )
Module 0.3 : Install OpenCV on Windows using Script ( C++ & Python )
Module 0.4 : How to use CMake ( Theory )
Module 0.5 :Using the CV4Faces Docker Image ( Optional )
Module 0.6 - Install OpenCV on MacOS ( PythonOnly )
Module 0.7 : Install OpenCV on Ubuntu ( Python only )
Module 0.8 : Install OpenCV on Windows ( Python Only )
Module 1: OpenCV Basics
Module 1.1: Photos and Color
Module 1.2.1: Introduction to Mat Class (C++)
Module 1.2.2: Introduction to NumPy ( Python )
Module 1.3: Basic Image Operations
Module 1.4: Read, Write and Display Videos
Module 1.5: Binary Image Processing
Module 1.6: Introduction to OpenCV GUI
Module 1.7: Geometric Transformations
Module 2: Image Processing & Instagram Filters
Face Processing : Applications & Opportunities
Module 2.1: Color Spaces
Module 2.2: Image Enhancement
Module 2.3.1: Image Filtering - Convolution And Blur
Module 2.3.1: [ Video ] What is Convolution?
Module 2.3.2: Image Filtering - Gradients
Module 2.3.3: Edge Detection
Module 2.3.3 [Video] Canny Edge Detection Parameters
Module 2.4: Contours
Module 2.5: Instagram Filters
Module 3: Facial Landmark Detection
Introduction to Dlib
Module 3.1 Facial Landmark Detection Applications and Usage
Module 3.1B - Facial Landmark Application - Face Alignment
[ Video ] Module 3.2 How to Speed Up Facial Landmark Detection
Module 3.2 How to Speed Up Facial Landmark Detection
Module 3.3 Stabilizing Landmark Points in Videos
[ Video ] Module 3.3 Landmark Stabilization Demo
[ Video ] Module 3.4 Machine Learning : Decision Tree, Bagging, Boosting & Gradient Boosting
Module 3.4 Machine Learning : Decision Tree, Bagging, Boosting & Gradient Boosting
Module 3.5 Theory of Facial Landmark Detection
Module 3.6 How to Train a Custom Facial Landmark Detector
Module 4: Applications of Landmark Detection
Module-4.1 Alpha Blending
Module-4.2 Warping Triangles
Module-4.3 Delaunay Triangulation
Module-4.4 Face Averaging
[ Video ] Module 4.5 Face Morphing
Module-4.5 Face Morphing
Module-4.6 Blink Drowsy Detection
Module-4.7 Bug Eyes
Module-4.8 Head Pose Estimation
Module 5: SnapChat Filters
Module-5.1 Seamless Cloning
Module-5.2 FaceSwap
Module-5.3 Beard Filter
Module-5.4 Aging Filter
Module 6: Skin Processing
Module 6.1 : Blemish Removal
Module 6.2 : Skin Detection - Basic approaches
Module 6.3 - Skin Detection ML based
Module 6.4 : Skin Detection and Smoothing - Grabcut
[ Video ] GrabCut Demo
[ Video ] GrabCut Theory
Module 6.5 : Grabcut Theory
Module 7: Image Classification and Object Detection
Module 7.1 :Introduction to Image Classification and Object Detection
Module 7.2: Image Classification using HOG + SVM
Module 7.2B : OpenCV Deep Learning Module and Object Recognition
Module 7.3: Object Detection using HOG + SVM
Module 7.3B : Deep Learning based Object Detection in OpenCV
Module 7.4: HAAR Cascades based Object Detection
Module 7.5 : Deep Learning based Face Detection and Comparison
Module 7.6: Local Binary Patterns
Module 8: Object Tracking
Module 8.1 Overview of Object Tracking
Module 8.2 - Tracking using Kalman Filter
Module 8.3 - Tracking using Meanshift and Camshift
[ Video ] Module 8.4 : OpenCV Object Tracking API
Module 8.4 : OpenCV Object Tracking API
Module 8.5A - MIL Tracker Theory
Module 8.5B : GOTURN Tracker Theory
Module 8.6 - Multiple Object Tracking
Module 9: Face Recognition
Module 9.1 : Face Recognition using Eigen Faces
Module 9.2 : Face Recognition using Fisher Faces
Module 9.3 : Face Recognition in OpenCV
Module 9.4 : Introduction to Deep Learning
Module 9.5 : Deep Learning based Face Recognition using OpenCV
Module 9.6 : Deep Learning based Face Recognition using Dlib
Module 10: Deep learning using Tensorflow
Module 10.1 :Tensorflow Installation on Windows, Linux and Mac
Module 10.2 : Introduction to Tensorflow
Module 10.3: Convolutional Neural Networks ( Theory and Application )
Module 10.4: Troubleshooting Techniques in Deep Learning
Module 11: Emotion Recognition
Module 11.1 : Backpropagation [Video]
Module 11.2: Amazon Web Services (AWS) setup
Module 11.3: Emotion Recognition using Dlib
Module 11.4: Emotion Recognition using Deep Learning
Bonus Material : Transforms & Deep Learning with Caffe
Module B1.1 : Creating Simple Panoramas
Module B1.2 : Panorama from Multiple Images
Module B1.3 : How to use FREE GPUS on Google Colaboratory - Tutorial
Module B1.4 : Training an Image Classifier in CAFFE
Module B1.5 : Use cases and Examples using Deep Learning in OpenCV
Module B1.6 : Deep Learning based Object Detection using YOLOv3

Course Format and Timeline

The course will be dripped weekly! At the start of every week, one week's worth of content will unlock. This gradual unrolling of the course will allow you to absorb the concepts better.

We will have quizzes at the end of each section. To receive a certification, we will need to do a short project.


You will receive a digital certificate of completion that you can embed in your LinkedIn profile! All you have to do is complete all the quizzes and submit a video demo of a project. The project should consume 40 hours or less of work.


Your Instructor

Satya Mallick, PhD.
Satya Mallick, PhD.

Satya is an entrepreneur who loves Computer Vision and Machine Learning. He has more than a dozen years of experience (and a Ph.D.) in the field. Recently Satya was named among the top 30 AI influencers to follow on Twitter by IBM's AI Blog.

Right out of school, Satya co-founded TAAZ Inc, a computer vision company in the beauty and fashion industry. The technology he and his team built has reached more than 100M users. He has been featured in numerous online articles on sites like TechCrunch, IBM, HuffingtonPost and WSJ to name a few.

Today, Satya runs a successful consulting company that helps companies solve complex problems in wide ranging areas like document analysis, face recognition, surveillance, object detection and classification, medical image processing and vision applications in retail.

Satya is also the principal author of -- a popular computer vision and machine learning blog.

Sunita Nayak
Sunita Nayak, PhD.

Sunita is a Computer Vision and Machine Learning expert with more than a dozen years of experience in the industry, both in start-ups and large corporations. She completed her Ph.D. from University of South Florida in 2008.

She has worked on a wide range of computer vision and machine learning applications including gesture recognition, image classification, object detection, virtual makeovers, and medical image processing. She has authored several papers in top vision and machine learning conferences and journals, and has authored many popular blog posts at

Vikas Gupta
Vikas Gupta

Vikas is a Computer Vision Researcher with a Master's in this domain from one of India's premier institutes - Indian Institute of Science. His research interests are in the field of Machine Perception, Scene Understanding, Deep Learning and Robotics.

He has been working in this field in various roles including a Lecturer, Software Engineer and a Data Scientist. He is passionate about teaching and sharing knowledge. He has spent 3 years teaching Computer Vision, Embedded Systems and Robotics to undergraduate students and over 3 years working on various projects involving Deep Learning and Computer Vision.

Vaibhaw Singh Chandel
Vaibhaw Singh Chandel

Vaibhaw started his career in data analytics after completing B.Tech. - M.Tech. dual degree program from IIT Kanpur. He worked on various interesting data science problems during his stint at Retail analytics and Sports analytics startups such as customer profiling, optimizing store layout, live prediction of winning odds of sports teams (soccer & tennis).

Then he joined a Computer Vision startup (iLenze) as a core team member and worked on image retrieval, object detection, automated tagging and pattern matching problems for the fashion and furniture industry.

Vaibhaw currently works as an independent Computer Vision consultant. When he is not working on computer vision problems, he spends time exploring NLP, Speech Recognition, history and behavioral economics.


Minakshi Das
Minakshi Das

Minakshi is a Embedded Systems and Computer Vision engineer with a Bachelor’s degree in Electronics Engineering.

She currently works as a freelance technical content writer and editor. In addition, she drives in-depth code testing and quality assurance for this course.

Frequently Asked Questions

What if I have questions?
You can ask questions in the course forums which will be shared with you. Our team tracks the questions posted on the forums and you should be able to get your query resolved within 24 hours max!
How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.
Is there a student discount?
We give a 30% discount to a small number of students every month. To request a student discount, you have to email a picture of your student id to [email protected] We will send you a link that expires in 3 days. If you miss this deadline, the discount will be offered to the next student in line.
Can I get the entire course on week 1?
No. In the beginning of each week we will unlock the material for that week. This allows us to have focussed Q/A in the forum and also incorporate your feedback in future weeks. However, If you still opt for getting the entire material upfront, you will not be eligible for the 30 day refund.
When does the course start and finish?
It is a completely self-paced online course, and you can take as much time as you need to finish it. However, to receive a certificate you will need to complete the course within 1 year. You can complete the course in 12 weeks with an effort of about 4 hours a week. We will be actively involved in course forums until 16 weeks after the start of the course.
What are the prerequisites for the course?
You need an intermediate level of knowledge in C++ or Python. You do not need to have any prior experience with OpenCV or Dlib. If you are an absolute beginner, allow yourself more time to complete the course.
Are all lessons available in C++ and Python?
Most lessons will be available in both C++ and Python. Some Deep Learning based lessons may be limited to Python only.
Is the price likely to go up?
The course price does go up every few months.
Can I use the code shared in this course in my commercial application?
In certain cases, we will use code shared in opencv_contrib module. It is not clear if all code inside opencv_contrib is free from patents. For parts of the code written by Big Vision LLC (i.e. my team), please contact [email protected] for an enterprise license if you plan to build a commercial application. I will be happy to provide a license free of charge to individuals. Companies will need to pay a small licensing fee. Similarly, consultants working for other companies will need to pay the licensing fee. You are not permitted to share this code publicly.
Will you support Visual Studio?
We will use CMake to compile the C++ code for Windows, Linux, and OSX. However, we will not be adhering a to any specific IDE like Visual Studio. Students can choose any IDE they are comfortable with.
Will Deep Learning be covered in depth?
We will provide an overview of Deep Learning, specifically Convolutional Neural Networks and explain the architectures we use for the specific applications. We will also cover the basics of TensorFlow. 3 out of 12 modules will use Deep Learning. However, bear in mind this is not a Deep Learning course.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days after the launch of the course and we will give you a full refund.

This course is closed for enrollment.