{
  "fetched_at": "2026-10-19T06:36:53Z",
  "source_url": "https://www.kaggle.com/competitions/aibt-hackathon-2025-image-retrieval-public/data",
  "pages": [
    {
      "name": "data-description",
      "content": "## Description  \nTime-series patches are provided for training. The goal is to determine which series a future patch belongs to. Test queries are transformed (rotation, erasure, etc.), so your model must be invariant to these augmentations and rethink the problem beyond standard classification.\n\n## Data  \n- **Time-series database**  \n  5 000 sequences of 8 Sentinel-2 patches (224 × 224 × 3 PNG)  \n- **Test patches**  \n  4 per sequence, each transformed (rotation, flip, contrast jitter, occlusion)\n\n## Submission  \n- **File**: `sample_submission.csv`  \n- **Columns**:  \n  | Column    | Description                                                                |\n  |-----------|----------------------------------------------------------------------------|\n  | file_name | Query patch filename                                                       |\n  | label     | Space-separated list of **20** time-series IDs (ranked most → least likely)|\n\n_Example_:\n\n```csv\nfile_name,label\n000123.png,45 12 67 … 89\n```\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "# Hackathon 2025\n\n# Description\n\nGiven a set of satellite image time series (i.e. images acquired at the same location but at different dates) and a query image, we aim to identify the time series where the query image belongs to. Even though the problem scenario seems straightforward, the solution is not! It is worth noting that several factors can make this problem more complicated such as atmospheric conditions, seasonal changes, occlusions produced by clouds. Additionaly, we performed some transformations on the query image to make the problem more challenging :)\n\nAn example of time series retrieval is provided in the figure below. An image displaying the San Francisco's coast has been transformed by applying a 90-degree rotation and a brightness level change. Ideally, the proposed model should be able to predict that the query image belongs to the time series 1. To do so, the proposed model should be invariant to this kind of transformations (e.g. rotation, horizontal/vertically flip, random contrast jitter, occlusions, etc).\n\n![Alt text](https://user-images.githubusercontent.com/24889239/109431366-841fc880-7a06-11eb-99b1-96f2cbb1641b.png)\n\n# Data\nDuring this Hackathon, you will work with Sentinel-2 image time series. For the sake of simplicity, data is provided in png format along with a pandas dataframe. We selected 42 tiles (i.e. 100km x 100km areas on the Earth's surface) containing several regions of interest such as the Amazon rainforest, the Dead Sea, the city of Los Angeles, the Great Sandy Desert, circular fields in Saudi Arabia, among others.\n\nFrom these tiles, we extracted 5000 time series each of which consists of 12 images whose shape is 224 x 224 x 3 (height x width x number of channels). Each time series is split into two time series: one containing 8 images and the other one keeping the remaining 4 images. These 8-image-length time series are collected to create a time series dataset. On the other hand, the remaining images are transformed via a data augmentation function (e.g. rotation, horizontal/vertically flip, random contrast jitter, etc). As explained previously, the main goal is to find the time series ID where these transformed images belong to. Therefore, the time series dataset consists of 5000 time series and the image dataset consists of 20000 images.\n\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "\nSubmissions are scored using **Mean Average Precision at 20 (MAP@20)**.  \nFor each query image (one ground-truth time series), you submit up to 20 ranked time-series IDs. The AP@20 for each query is the precision at each rank where the true ID appears, averaged over that query (with k = 20), and **MAP@20** is the mean of those AP@20 values across all queries.  \n\n_For a deeper dive into MAP@k and its computation, see this [Kaggle notebook on MAP@k](https://www.kaggle.com/code/nandeshwar/mean-average-precision-map-k-metric-explained-code/notebook)._  \n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "Have fun and smash the leaderboard!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}