====== Challenge: Personalized Age Estimation ====== ===== Info ====== **📅 Deadline:** day.month.2026 21:59 **🏦 Points:** X (beating baseline) + Y (leader-board) We provide the facial images as pre-extracted features shared by all students. You can not train your own backbone. This is done in order to ensure a level playing field for all the students. **All of the features as well as the metadata (identities, ages, movie ids) are available to you in the "student_dataset" folder within the template.** This page outlines the course challenge on [[https://cw.felk.cvut.cz/brute/student/course/BECM33MLF/challenge1|Personalized Age Estimation]]. This project is intended for students interested in exploring the course topics in greater depth through a practical application. Participation is optional and **does not contribute to the mandatory homework point total**. However, successful completion provides a more direct and easier path to achieving a final grade of **A** or **B**. The challenge is to implement a model for **personalized age estimation**. The objective is to improve the age prediction for an individual by leveraging reference images of the same person with known ages. The prediction problem is defined as follows: Given **face 1** of a person, and additional images, **face 2**, **face 3**, ..., **face N**, of the same person, as well as corresponding **age 2**, **age 3**, ..., **age N**; the task is to predict **age 1**. For instance, using the first image of Zdeněk Svěrák and his known age, the task is to predict his age in the second image. {{:courses:be4m33ssu:challenges:158153273_70810f.jpg?direct&400 | Reference Image: Age is known}} {{ :courses:be4m33ssu:challenges:162667470_7d6846.jpg?direct&400 | Target Image: Predict this age }} ===== Rules ===== * **You can only use the provided data** * **The solution must finish under 15 minutes on BRUTE** * **You must work independently**. Discussions are encouraged, however, everyone must submit their own unique submission ===== Provided Resources ===== A {{ :courses:becm33mlf:mlf_challenge_template_25_02_2026.zip | template (.zip)}} is provided, containing the dataset and a baseline solution. Try to train a basic model and submit the solution to see the leader-board. You need to run train.py, then ZIP the python files and the trained model weights (ZIP the provided files without the dataset). Submit the ZIP to the BRUTE evaluation server. ==== Dataset ==== The dataset is partitioned into `train`, `val`, and `test` sets. * You are **only permitted to use the provided data**. * You may use the data splits as you see fit (e.g., merge them for training, create a new validation split, etc.). * The template code demonstrates the data loading procedure and structure. * We evaluate your solutions on a hidden test set, which is not available to you. ==== Baseline Model and Solution ==== The baseline script implements a simple offset-based approach: # Calculate the prediction error on the reference image offset = true_age_1 - prediction(face1) # Adjust the target prediction using half of the calculated error final_prediction_face_2 = prediction(face2) + (offset / 2) The objective of the challenge is to design and implement a method that improves upon this baseline. In order to run the baseline, you must first train a prediction head in order to predict the age from the features. To this end, you can run *train.py* unmodified, then submit the Zipped python files and the weights produced by train into the BRUTE evaluation. ===== Grading and Evaluation ===== Solutions will be evaluated based on **Mean Absolute Error (MAE)** on a hidden test set. * **X points** are awarded for achieving **MAE of TODO or better**. The provided baseline achieves MAE of ~TODO. * **Up to Y additional points** will be awarded to the top-performing solutions on the leaderboard. * To be eligible for any points from the challenge, participants must submit a very short PDF that briefly explains their approach (a single paragraph is enough) along with the training code. This requirement is in place to ensure that no additional data was used during training and so that we can learn something from your solutions. The exact point distribution for the top solutions will be determined based on the final standings. We will likely interpolate between the top contender and the baseline to assign the points. You can see the leader-board after submitting a solution and clicking the **AE Result** button. {{:courses:be4m33ssu:challenges:leaderboard.png?direct&400|}} {{:courses:be4m33ssu:challenges:leaderboard2.png?direct&400|}} ===== Submission and Testing Procedures ===== ==== Local Testing ==== After implementing your solution, you can test it locally using the provided public test cases: python main.py test-cases/public/instances/test_instances.json ==== Submission ==== * Submit your completed code as a single **.zip** file via the [[https://cw.felk.cvut.cz/brute/student/course/BECM33MLF/challenge1|BRUTE]] system. * The evaluation will be performed automatically. Ensure that all Python files are located in the root of the submitted .zip archive. ===== Environment ===== The evaluation is performed using Python in a Docker environment with GPU support: [[https://hub.docker.com/r/brute/brute_pytorch_gpu|BRUTE PyTorch GPU Docker]]. ===== Support and Contact ===== For any questions or issues, please contact **Jakub Paplhám** at . He will not be available in person for most of the semester due to an internship abroad.