Bird
Raised Fist0
Computer Visionml~20 mins

Human pose estimation concept in Computer Vision - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - Human pose estimation concept
Problem:We want to teach a computer to find key points on a human body in images, like elbows, knees, and wrists. Our current model can find these points on training images very well but does poorly on new images.
Current Metrics:Training accuracy: 95%, Validation accuracy: 65%
Issue:The model is overfitting. It learns training images too well but does not generalize to new images.
Your Task
Reduce overfitting so that validation accuracy improves to at least 80%, while keeping training accuracy below 90%.
You can only change model architecture and training settings.
Do not change the dataset or add more data.
Hint 1
Hint 2
Hint 3
Solution
Computer Vision
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# Define data augmentation
train_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True,
    validation_split=0.2
)

# Validation data generator without augmentation
val_datagen = ImageDataGenerator(
    rescale=1./255,
    validation_split=0.2
)

# Load training and validation data
train_generator = train_datagen.flow_from_directory(
    'data/train',
    target_size=(128, 128),
    batch_size=32,
    class_mode='categorical',
    subset='training'
)
validation_generator = val_datagen.flow_from_directory(
    'data/train',
    target_size=(128, 128),
    batch_size=32,
    class_mode='categorical',
    subset='validation'
)

# Build model with dropout
model = models.Sequential([
    layers.Conv2D(32, (3,3), activation='relu', input_shape=(128,128,3)),
    layers.MaxPooling2D(2,2),
    layers.Dropout(0.25),
    layers.Conv2D(64, (3,3), activation='relu'),
    layers.MaxPooling2D(2,2),
    layers.Dropout(0.25),
    layers.Flatten(),
    layers.Dense(128, activation='relu'),
    layers.Dropout(0.5),
    layers.Dense(17, activation='softmax')  # 17 keypoints classes
])

# Compile with lower learning rate
model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=0.0005),
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

# Train model
history = model.fit(
    train_generator,
    epochs=30,
    validation_data=validation_generator
)
Added dropout layers after convolution and dense layers to reduce overfitting.
Applied data augmentation to training images to increase variety.
Lowered learning rate from default 0.001 to 0.0005 for smoother training.
Results Interpretation

Before: Training accuracy 95%, Validation accuracy 65% (overfitting)

After: Training accuracy 88%, Validation accuracy 82% (better generalization)

Adding dropout and data augmentation helps the model not memorize training data too much. Lower learning rate helps the model learn more carefully. Together, these reduce overfitting and improve performance on new images.
Bonus Experiment
Try using a pre-trained model like MobileNet or ResNet as a starting point for pose estimation.
💡 Hint
Use transfer learning by freezing early layers and training only the last layers on your dataset.

Practice

(1/5)
1. What is the main goal of human pose estimation in computer vision?
easy
A. To find the positions of body joints in images or videos
B. To classify objects into categories
C. To detect faces in images
D. To enhance image resolution

Solution

  1. Step 1: Understand the task of human pose estimation

    Human pose estimation aims to locate key body joints like head, shoulders, elbows, and knees in images or videos.
  2. Step 2: Compare with other computer vision tasks

    Unlike object classification or face detection, pose estimation focuses on joint positions, not categories or faces.
  3. Final Answer:

    To find the positions of body joints in images or videos -> Option A
  4. Quick Check:

    Pose estimation = joint positions [OK]
Hint: Pose estimation locates body joints, not objects or faces [OK]
Common Mistakes:
  • Confusing pose estimation with object classification
  • Thinking it detects faces only
  • Assuming it enhances image quality
2. Which of the following is a correct output format for a human pose estimation model?
easy
A. A list of keypoints with (x, y) coordinates for body joints
B. A single label indicating the person's activity
C. A bounding box around the entire person
D. A grayscale image highlighting edges

Solution

  1. Step 1: Identify typical model outputs in pose estimation

    Pose estimation models output keypoints representing body joint coordinates, usually as (x, y) pairs.
  2. Step 2: Eliminate other output types

    Labels, bounding boxes, or edge images are outputs for other tasks, not pose estimation.
  3. Final Answer:

    A list of keypoints with (x, y) coordinates for body joints -> Option A
  4. Quick Check:

    Output = keypoints coordinates [OK]
Hint: Pose estimation outputs joint coordinates, not labels or boxes [OK]
Common Mistakes:
  • Choosing bounding boxes as output
  • Confusing with activity recognition labels
  • Thinking output is an image
3. Consider this simplified output of a pose estimation model for one person: {'nose': (100, 150), 'left_eye': (90, 140), 'right_eye': (110, 140)}. What does this output represent?
medium
A. Bounding box corners of the face
B. Pixel intensity values of the face region
C. Coordinates of detected facial keypoints
D. Labels for facial expressions

Solution

  1. Step 1: Analyze the output dictionary keys and values

    The keys are body parts (nose, left_eye, right_eye) and values are (x, y) coordinates, typical for keypoints.
  2. Step 2: Understand what these coordinates mean

    They represent positions of facial keypoints detected by the model, not bounding boxes or pixel values.
  3. Final Answer:

    Coordinates of detected facial keypoints -> Option C
  4. Quick Check:

    Keypoints dictionary = facial coordinates [OK]
Hint: Keypoints dictionary means joint coordinates, not boxes or labels [OK]
Common Mistakes:
  • Thinking these are bounding box coordinates
  • Confusing coordinates with pixel intensities
  • Assuming these are expression labels
4. You have a pose estimation model that outputs keypoints as a list of tuples, but the order of keypoints is inconsistent across images. What is a likely problem and how to fix it?
medium
A. The input images are low resolution; fix by increasing image size
B. The model output is corrupted; fix by retraining with more data
C. The model uses wrong activation functions; fix by changing them
D. The model lacks a fixed keypoint order; fix by defining a consistent keypoint index mapping

Solution

  1. Step 1: Identify the cause of inconsistent keypoint order

    Inconsistent order means the model or post-processing does not assign fixed indices to keypoints.
  2. Step 2: Fix by defining a consistent keypoint index mapping

    Assign each keypoint a fixed position in the output list so order is always the same.
  3. Final Answer:

    The model lacks a fixed keypoint order; fix by defining a consistent keypoint index mapping -> Option D
  4. Quick Check:

    Consistent keypoint order = fixed index mapping [OK]
Hint: Fix keypoint order by assigning fixed indices [OK]
Common Mistakes:
  • Assuming retraining fixes order issues
  • Blaming image resolution for order problems
  • Changing activation functions unrelated to order
5. In a multi-person pose estimation system, what is a common challenge and a typical solution?
hard
A. Challenge: low image contrast; Solution: apply histogram equalization
B. Challenge: overlapping people; Solution: use part affinity fields to group keypoints by person
C. Challenge: slow model inference; Solution: reduce image resolution drastically
D. Challenge: missing keypoints; Solution: ignore incomplete detections

Solution

  1. Step 1: Understand multi-person pose estimation challenges

    When multiple people overlap, keypoints can be confused between individuals.
  2. Step 2: Use part affinity fields to group keypoints correctly

    Part affinity fields help link keypoints belonging to the same person, solving overlap issues.
  3. Final Answer:

    Challenge: overlapping people; Solution: use part affinity fields to group keypoints by person -> Option B
  4. Quick Check:

    Overlap challenge = part affinity fields solution [OK]
Hint: Use part affinity fields to separate overlapping people [OK]
Common Mistakes:
  • Confusing image contrast with multi-person grouping
  • Reducing resolution harms accuracy more than helps
  • Ignoring missing keypoints loses useful data