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?
- 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!
- 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.
- 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!
- 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)
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
- OpenCV based: We will train a face recognition system using OpenCV.
- 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
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
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
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
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
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)
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 --
- 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.
- Entrepreneurs who want to quickly build expertise to write their own applications or start a new company to bring their AI idea to life.
- Students who are evaluating their career options in Computer Vision and Machine Learning.
- Hobbyists who love building fun stuff; who can learn by reading but prefer to learn by doing.
- CVML folks who have worked in other areas of CVML and want to expand their expertise in the domain of Face Processing.
Curriculum
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-5.5-Deformation-Based-Filters |
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.
Certificate
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 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 LearnOpenCV.com -- a popular computer vision and machine learning blog.

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 www.learnopencv.com.
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 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.
Editor

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.