Search This Blog

LFW (Labeled Faces in the Wild): Face Recognition in the Real World

 

๐Ÿ˜Ž LFW (Labeled Faces in the Wild): Face Recognition in the Real World

The Labeled Faces in the Wild (LFW) dataset is a well-known benchmark for face recognition and face verification in unconstrained environments. Created by researchers at the University of Massachusetts Amherst, it was among the first large-scale datasets that captured faces in everyday, "in-the-wild" scenarios—far from studio-controlled settings.


๐Ÿง  What is LFW?

LFW contains thousands of face images collected from news articles on the web, representing over 5,700 individuals. The dataset’s main goal is to evaluate algorithms for:

  • Face Verification – Are two faces the same person?

  • ๐Ÿงญ Face Recognition – Who is the person in the image?


๐Ÿ“Š Dataset Overview

Feature Details
๐Ÿ–ผ️ Total Images 13,233 face images
๐Ÿ‘ค Individuals 5,749 people
๐Ÿ‘ฅ People with >1 image 1,680
๐ŸŒ Source News websites via Google Image Search
๐Ÿ“ Image Size 250×250 pixels (centered, cropped)
๐Ÿ“ Format JPEG

๐Ÿ”ข How is LFW Organized?

There are two formats:

  1. LFW Funneled – Images are aligned using a commercial face alignment tool for easier benchmarking.

  2. LFW Raw – Original cropped faces without alignment.

  3. LFW DeepFunneled – Higher-quality alignment using deep learning.

Each file is named like:

[Person_Name]/[Person_Name]_[Image_Number].jpg

Example:

George_W_Bush/George_W_Bush_0001.jpg

๐Ÿ” Evaluation Protocols

LFW provides multiple evaluation setups:

1. Face Verification (default)

  • Compares pairs of faces.

  • 6,000 face pairs (3,000 matching, 3,000 non-matching).

  • Commonly used to report accuracy.

2. Unrestricted with Labeled Outside Data

  • Allows training with external datasets (like VGGFace or MS-Celeb-1M).


๐Ÿงช Face Verification with LFW in Python

Load the Dataset Using sklearn

from sklearn.datasets import fetch_lfw_people
import matplotlib.pyplot as plt

lfw = fetch_lfw_people(min_faces_per_person=70, resize=0.4)

print("Images shape:", lfw.images.shape)
print("Target names:", lfw.target_names)

# Show some sample faces
fig, axes = plt.subplots(1, 5, figsize=(12, 4))
for i, ax in enumerate(axes):
    ax.imshow(lfw.images[i], cmap='gray')
    ax.set_title(lfw.target_names[lfw.target[i]])
    ax.axis('off')

๐Ÿง  Models Trained or Evaluated on LFW

LFW has been used as a benchmark for many face recognition models:

Model Accuracy (%) Year
Eigenfaces + PCA ~60% 2003
LBP (Local Binary Pattern) ~78% 2007
DeepFace (Facebook) 97.35% 2014
FaceNet (Google) 99.63% 2015
ArcFace (InsightFace) 99.83%+ 2019

Many of these models use embedding-based architectures and triplet loss or angular margin loss.


๐Ÿ”— Resources


๐Ÿงต Summary

Feature Value
Total Images 13,233
Unique People 5,749
Faces per Person (min) 1 (1,680 people have ≥2 images)
Evaluation Face verification (6,000 pairs)
Focus Real-world face recognition

The LFW dataset was a game-changer for face recognition research. Even though newer and larger datasets like VGGFace2, MS-Celeb-1M, and CASIA-WebFace now dominate, LFW remains a lightweight, reliable benchmark—perfect for testing models and learning the basics of facial recognition.

Cityscapes Dataset: Urban Scene Understanding at Its Best

 

๐Ÿ™️ Cityscapes Dataset: Urban Scene Understanding at Its Best

The Cityscapes dataset is a large-scale, richly annotated dataset focused on semantic understanding of urban street scenes. It’s widely used in computer vision for tasks like semantic segmentation, instance segmentation, depth estimation, and scene parsing—particularly in autonomous driving and smart city applications.


๐ŸŒ† What is Cityscapes?

Cityscapes contains high-resolution images of street scenes collected from 50 European cities across different seasons, weather conditions, and times of day. The focus is on pixel-level semantic annotation, especially for objects relevant to urban mobility like roads, pedestrians, cars, traffic signs, and sidewalks.


๐Ÿ“Š Key Statistics

Feature Description
๐Ÿ–ผ️ Number of Images 5,000 finely annotated + 20,000 coarsely labeled
๐Ÿ™️ Resolution 2048×1024 pixels
๐Ÿ›ฃ️ Cities Covered 50 European cities
๐Ÿง  Classes 30+ (19 commonly used for training/benchmarking)
๐Ÿงต Annotations Fine + Coarse annotations, with instance-level masks
๐Ÿ“ Formats Available JSON + PNG masks

๐Ÿงพ Annotation Types

Cityscapes supports multiple types of annotations:

  1. Semantic Segmentation – Per-pixel labeling of 19 urban object classes.

  2. Instance Segmentation – Differentiates between multiple instances of the same object class.

  3. Panoptic Segmentation – Combines semantic and instance segmentation.

  4. Depth Maps – Stereo image pairs provide disparity for depth estimation.

  5. Bounding Boxes – For object detection tasks.

  6. Video Sequences – Available for temporal analysis (e.g., tracking, segmentation over time).


๐ŸŽฏ 19 Key Semantic Classes

The most commonly used subset of classes (for benchmarking) includes:

  • Flat: road, sidewalk

  • Human: person, rider

  • Vehicle: car, truck, bus, train, motorcycle, bicycle

  • Construction: building, wall, fence

  • Object: pole, traffic light, traffic sign

  • Nature: vegetation, terrain

  • Sky: sky

These are color-coded in ground truth masks for easy visualization.


๐Ÿงช Common Tasks & Applications

Task Purpose
Semantic Segmentation Label each pixel with an object class
Instance Segmentation Identify and separate multiple instances of objects
Depth Estimation Reconstruct 3D scene geometry from stereo images
Panoptic Segmentation Combine object detection + pixel-wise labeling
Autonomous Driving Real-time scene understanding for navigation

๐Ÿ’ป Using Cityscapes with Python

๐Ÿงฐ Dataset Structure (Simplified)

cityscapes/
├── leftImg8bit/
│   ├── train/
│   ├── val/
│   └── test/
├── gtFine/
│   ├── train/
│   ├── val/
│   └── test/

๐Ÿ–ผ️ Visualizing Sample Image + Mask

import matplotlib.pyplot as plt
from PIL import Image

img_path = "leftImg8bit/train/cologne/cologne_000000_000019_leftImg8bit.png"
mask_path = "gtFine/train/cologne/cologne_000000_000019_gtFine_labelIds.png"

img = Image.open(img_path)
mask = Image.open(mask_path)

plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.imshow(img)
plt.title("Input Image")

plt.subplot(1, 2, 2)
plt.imshow(mask)
plt.title("Segmentation Mask")

plt.show()

๐Ÿง  Models Trained on Cityscapes

Many state-of-the-art semantic segmentation models are trained or benchmarked on Cityscapes:

Model Mean IoU (19 classes) Notes
DeepLabv3+ ~82% Uses atrous convolutions
PSPNet ~81% Pyramid Scene Parsing
HRNet ~81%+ High-resolution network
SegFormer ~82%+ Transformer-based segmentation
Swin Transformer ~83%+ Vision Transformer variant

You can find pre-trained weights for many of these models via TorchHub, MMsegmentation, and Hugging Face.


๐Ÿ”— Download and Resources


๐Ÿงต Summary

Feature Value
Total Images 25,000+ (Fine + Coarse)
Resolution 2048×1024
Number of Classes 30+ (19 used for evaluation)
Key Tasks Segmentation, Depth, Panoptic, Video
Focus Urban street scenes
License Non-commercial research

Cityscapes is the go-to dataset for urban scene understanding. Whether you're building an autonomous driving system or training models for street-level scene parsing, Cityscapes offers the rich annotations and real-world diversity needed for high-quality semantic learning.

Popular Posts