To perform face detection and recognition in MATLAB, you can use built-in tools from the Computer Vision and Deep Learning Toolboxes. Face detection identifies regions in an image containing faces, while recognition matches detected faces to known identities. MATLAB provides both traditional computer vision methods and deep learning approaches for these tasks, allowing flexibility depending on your project requirements.
For face detection, the vision.CascadeObjectDetector is a common starting point. This uses the Viola-Jones algorithm to detect faces by analyzing Haar-like features. First, read an image using imread
, then create the detector with detector = vision.CascadeObjectDetector;
. Use bbox = detector(image)
to get bounding box coordinates for detected faces. For better accuracy, adjust parameters like MinSize
to filter small false positives or switch classifiers (e.g., 'FrontalFaceCART'
for profile faces). Example code:
img = imread('group_photo.jpg');
detector = vision.CascadeObjectDetector('FrontalFaceCART');
bbox = detector(img);
detectedImg = insertShape(img, 'Rectangle', bbox);
imshow(detectedImg);
For real-time detection, use the webcam
function with a loop to process video frames.
Face recognition typically involves training a model on labeled face data. A traditional approach uses eigenfaces (Principal Component Analysis) with the pca function. Extract facial features by flattening detected face regions into vectors, reduce dimensionality with PCA, then train a classifier like SVM using fitcecoc. For deep learning, use pre-trained networks like AlexNet or ResNet-50 (via imageDatastore and activations) to extract features from face regions, then train a classifier on these features. Example workflow:
net = alexnet;
features = activations(net, preprocessedFaces, 'fc7');
To combine both steps, create a pipeline: detect faces first, then pass each cropped face region to your recognition model. For practical use, ensure consistent face alignment (e.g., resizing to 227x227 for AlexNet) and handle lighting variations with preprocessing like histogram equalization. MATLAB’s batch function can help process large datasets efficiently. Debug using tools like the Image Labeler app to verify detection accuracy before training recognition models.
Zilliz Cloud is a managed vector database built on Milvus perfect for building GenAI applications.
Try FreeLike the article? Spread the word