Face Emoji Week 2

    Face Emoji Week 2

    Week 2 content of Face Emoji project

    By AI Club on 2/17/2025
    0

    Week 2: Face Detection with MediaPipe

    Hello! Welcome to Week 2 of our Face-Emoji project. Last week, we set up our development environment and got a basic camera feed working. This week, we're taking a big step forward by implementing face detection using Google's MediaPipe library!

    What We'll Learn Today

    • Setting up a Python virtual environment

    • Understanding face detection and its importance

    • Introduction to Google's MediaPipe library

    • How to detect faces in real-time video

    • Setting up the foundation for future emotion detection

    file you'll need:
    week2_code.py

    Important: Python Version Compatibility

    MediaPipe is currently only compatible with Python versions up to 3.12.9. Since Python 3.13 is the latest version and many of you might have it installed, we need to manage our Python version carefully. For Windows users, we'll use Miniconda3, which makes Python version management much easier!

    Setting Up Your Environment (Windows Users)

    Miniconda3 is a minimal installer for Conda, a powerful package and environment management system. It helps you create isolated environments with specific Python versions and packages, making it perfect for our needs.

    1. Download Miniconda3 for Windows: https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe

    2. Install Miniconda3:

      • Run the installer

      • Select "Install for all users" if you want it system-wide

      • Use default options for everything else

      • Important: At the end, let it initialize Miniconda3

    3. After installation:

      • Open "Anaconda Powershell Prompt" from your Start Menu

      • This special prompt is just like your regular terminal but with Conda powers!

    4. Navigate to your project directory: cd path\to\your\face-emoji

    5. Create a new Conda environment with Python 3.12.9:

      conda create -n face-emoji python==3.12.9

    6. Activate the environment: conda activate face-emoji

    7. Install required packages: pip install mediapipe opencv-python

    When you're done working on the project, you can deactivate the environment: conda deactivate

    Some helpful Conda commands to remember:

    • conda activate face-emoji - Activates your project environment

    • conda deactivate - Exits the current environment

    • conda env list - Shows all your Conda environments

    • conda list - Shows all packages in current environment

    Remember: Always activate your environment (conda activate face-emoji) before working on the project!

    Setting Up Your Environment (Mac Users)

    For Mac users, we'll use Homebrew to install Python 3.12:

    1. Install Python 3.12 using Homebrew: brew install python@3.12

    2. Install MediaPipe using the Python 3.12 pip: python3.12 -m pip install mediapipe opencv-python

    That's it! You're ready to go. When running the code, make sure to use python3.12 instead of just python.

    Introduction to MediaPipe

    MediaPipe is an amazing framework developed by Google that provides ready-to-use ML solutions. It's particularly great for computer vision tasks like face detection, facial landmarks, pose estimation, and much more. We'll be using MediaPipe throughout this project because:

    • It's highly accurate and fast

    • Works great in real-time

    • Has excellent Python support

    • Provides detailed facial landmarks (which we'll use later!)

    • Is actively maintained by Google

    • Has great documentation

    Understanding Face Detection

    Face detection is the first step in any face analysis system. It's different from face recognition - detection just finds where faces are in an image, while recognition tries to identify whose face it is.

    What makes MediaPipe special is that it can not only detect faces but also provide detailed information about facial landmarks - 468 points that map to specific facial features! While we won't use these landmarks today, they'll be crucial when we start detecting emotions in the coming weeks.

    Code Walkthrough

    Let's break down the code we'll be using today:

    1. Imports and Setup

    import cv2

    import mediapipe as mp

    mp_face_detection = mp.solutions.face_detection

    mp_drawing = mp.solutions.drawing_utils

    face_detection = mp_face_detection.FaceDetection( model_selection=0, min_detection_confidence=0.5 )

    This section imports the necessary libraries and initializes MediaPipe's face detection. The model_selection=0 parameter tells MediaPipe to use the close-range face detection model, which is perfect for webcam use.

    2. Camera Setup

    This part should look familiar from last week - we're setting up our camera feed.

    3. Main Processing Loop

    while True:

    ret, frame = cap.read()

    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    results = face_detection.process(rgb_frame)

    Here's where the magic happens! We:

    1. Read a frame from the camera

    2. Convert it to RGB (MediaPipe expects RGB, while OpenCV uses BGR)

    3. Process the frame to detect faces

    4. Drawing Detections

    if results.detections:

    for detection in results.detections:

    mp_drawing.draw_detection(frame, detection)

    This code draws boxes around detected faces and includes some key points like eyes and nose. We've also added confidence scores to show how sure the model is about each detection.

    What We Learned Today

    • How to set up and use Python virtual environments

    • Using MediaPipe for face detection

    • Basic concepts of computer vision processing

    • How to process video frames in real-time

    • How to visualize detection results

    Looking Ahead

    Next week, we'll dive deeper into MediaPipe's capabilities by exploring facial landmarks. These landmarks will be crucial for emotion detection, as they'll help us understand:

    • Eye positions and shapes

    • Mouth configurations

    • Eyebrow positions

    • Overall facial expressions

    The landmarks we'll learn about next week will form the foundation for our emotion detection system. They'll serve as the input features for our machine learning model, which will help us map facial expressions to emotions and, ultimately, to emojis!

    Keep experimenting with this week's code - try adjusting the confidence threshold, see how the detection works in different lighting conditions, and get comfortable with the real-time processing concepts. These skills will be essential as we move forward with the project!

    See you next week! 😊

    Comments