Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

Image understanding and description in Prompt Engineering / GenAI - 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 - Image understanding and description
Problem:We want to build a model that looks at an image and writes a short sentence describing what it sees. Currently, the model is very good at describing training images but makes many mistakes on new images it has never seen.
Current Metrics:Training accuracy: 95%, Validation accuracy: 65%, Validation loss: 1.2
Issue:The model is overfitting. It performs very well on training images but poorly on validation images, showing it does not generalize well.
Your Task
Reduce overfitting so that validation accuracy improves to at least 80% while keeping training accuracy below 90%.
You cannot change the dataset or add more data.
You must keep the same model architecture type (CNN + RNN for image captioning).
Hint 1
Hint 2
Hint 3
Solution
Prompt Engineering / GenAI
import tensorflow as tf
from tensorflow.keras.applications import InceptionV3
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense, Embedding, LSTM, Dropout, Add
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.callbacks import EarlyStopping

# Load pre-trained CNN for image feature extraction
base_model = InceptionV3(weights='imagenet')
cnn_model = Model(base_model.input, base_model.layers[-2].output)

# Freeze CNN layers
for layer in cnn_model.layers:
    layer.trainable = False

# Define inputs
image_input = Input(shape=(299, 299, 3))
image_features = cnn_model(image_input)
image_features = Dropout(0.5)(image_features)  # Added dropout
image_features = Dense(256)(image_features)  # Project to match LSTM output dim

# Text input for captions
caption_input = Input(shape=(max_caption_length,))
caption_embedding = Embedding(input_dim=vocab_size, output_dim=256, mask_zero=True)(caption_input)
caption_lstm = LSTM(256)(caption_embedding)
caption_lstm = Dropout(0.5)(caption_lstm)  # Added dropout

# Combine image and caption features
decoder = Add()([image_features, caption_lstm])
outputs = Dense(vocab_size, activation='softmax')(decoder)

# Define model
model = Model(inputs=[image_input, caption_input], outputs=outputs)

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

# Early stopping callback
early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)

# Train model
model.fit(
    [train_images, train_captions], train_targets,
    epochs=20,
    batch_size=64,
    validation_data=([val_images, val_captions], val_targets),
    callbacks=[early_stop]
)
Added dropout layers after image feature extraction and LSTM layers to reduce overfitting.
Lowered the learning rate from 0.001 to 0.0001 for smoother training.
Added early stopping to stop training when validation loss stops improving.
Results Interpretation

Before: Training accuracy was 95%, validation accuracy was 65%, showing overfitting.

After: Training accuracy dropped to 88%, validation accuracy improved to 82%, and validation loss decreased, indicating better generalization.

Adding dropout and early stopping helps the model avoid memorizing training data and improves its ability to describe new images accurately.
Bonus Experiment
Try using data augmentation on the images to artificially increase dataset variety and see if validation accuracy improves further.
💡 Hint
Use simple image transformations like rotation, flipping, or zooming during training to help the model learn more robust features.

Practice

(1/5)
1.

What does image understanding mean in AI?

easy
A. Drawing a new picture from scratch
B. Writing a story about a picture
C. Changing the colors of a picture
D. Recognizing objects and details in a picture

Solution

  1. Step 1: Understand the term 'image understanding'

    Image understanding means the AI looks at a picture and finds what objects or details are inside it.
  2. Step 2: Compare options with the meaning

    Only Recognizing objects and details in a picture matches this meaning exactly, others talk about writing, coloring, or drawing which are different tasks.
  3. Final Answer:

    Recognizing objects and details in a picture -> Option D
  4. Quick Check:

    Image understanding = Recognizing objects [OK]
Hint: Image understanding means spotting things in a picture [OK]
Common Mistakes:
  • Confusing image understanding with image editing
  • Thinking it means writing about the image
  • Mixing it with creating new images
2.

Which of the following is the correct way to describe an image using AI?

"A cat sitting on a mat."
easy
A. A sentence describing what is in the image
B. A code to change image colors
C. A list of numbers representing pixels
D. A command to delete the image

Solution

  1. Step 1: Understand image description

    Image description means writing a sentence that tells what is seen in the picture.
  2. Step 2: Match options to this meaning

    A sentence describing what is in the image is a sentence describing the image, while others are about pixels, color changes, or deleting, which are unrelated.
  3. Final Answer:

    A sentence describing what is in the image -> Option A
  4. Quick Check:

    Image description = Sentence about image [OK]
Hint: Image description is a sentence about the picture [OK]
Common Mistakes:
  • Confusing description with pixel data
  • Thinking description changes the image
  • Mixing description with image deletion
3.

Given this Python code snippet using a simple AI model for image description, what will be the output?

def describe_image(image):
    if 'dog' in image:
        return 'A dog playing in the park.'
    else:
        return 'Unknown image.'

result = describe_image('photo of a dog')
print(result)
medium
A. A dog playing in the park.
B. Unknown image.
C. photo of a dog
D. Error: 'dog' not found

Solution

  1. Step 1: Check the input string for keyword

    The input string is 'photo of a dog', which contains the word 'dog'.
  2. Step 2: Follow the if condition in the function

    Since 'dog' is found, the function returns 'A dog playing in the park.'
  3. Final Answer:

    A dog playing in the park. -> Option A
  4. Quick Check:

    Keyword 'dog' found = Correct description [OK]
Hint: Check if 'dog' is in the input string [OK]
Common Mistakes:
  • Ignoring the if condition and choosing 'Unknown image.'
  • Confusing input string with output
  • Expecting an error when none occurs
4.

Find the error in this AI image description function and choose the fix:

def describe(image):
    if image.contains('cat'):
        return 'A cat on the sofa.'
    else:
        return 'No cat found.'
medium
A. Change return to print
B. Add a semicolon at the end of each line
C. Replace image.contains('cat') with 'cat' in image
D. Use image.has('cat') instead

Solution

  1. Step 1: Identify the error in method usage

    Strings in Python do not have a contains() method; membership is checked with in.
  2. Step 2: Choose the correct syntax for membership check

    Replacing image.contains('cat') with 'cat' in image fixes the error.
  3. Final Answer:

    Replace image.contains('cat') with 'cat' in image -> Option C
  4. Quick Check:

    Use 'in' for string membership in Python [OK]
Hint: Use 'in' to check if substring is in string [OK]
Common Mistakes:
  • Using non-existent string methods like contains()
  • Thinking print replaces return
  • Adding unnecessary semicolons
5.

You want to build an AI that looks at a photo and writes a short sentence describing it. Which approach is best?

hard
A. Manually write descriptions for every photo
B. Train a model to recognize objects and generate sentences about them
C. Use a model that only changes photo colors
D. Train a model to delete photos with no objects

Solution

  1. Step 1: Understand the goal of automatic image description

    The AI should identify objects in the photo and then create a sentence describing what it sees.
  2. Step 2: Evaluate the options for this goal

    Train a model to recognize objects and generate sentences about them describes training a model to do both recognition and sentence generation, which fits the goal best. Others are manual, unrelated, or destructive.
  3. Final Answer:

    Train a model to recognize objects and generate sentences about them -> Option B
  4. Quick Check:

    Recognition + sentence generation = Best approach [OK]
Hint: Combine object recognition with sentence generation [OK]
Common Mistakes:
  • Choosing manual description which is slow
  • Confusing color changes with description
  • Thinking deleting photos helps description