{
  "fetched_at": "2026-10-25T02:12:41Z",
  "source_url": "https://www.kaggle.com/competitions/aml-project-task-3-copy/data",
  "pages": [
    {
      "name": "data-description",
      "content": "The data for this task consists of the following files:\n\n**train.pkl** - the training data with the videos, bounding boxes, labels and information about the data source.\n**test.pkl** - the test data with the videos where the MV should be segmented.\n**sample.pkl** - a sample submission file in the correct format.\n**task3.ipynb** - a helper notebook containing functions for reading and saving the pickle (*.pkl) files.\n\nThe training data (train.pkl) is a list of dictionaries containing the following keys: *name, video, box, label, frames, dataset*. A single dictionary has the following structure:\n\n`\n{\n  'name': 'AC8ASN45B9',\n  'video': array([...], dtype='uint8'),\n  'box': array([...], dtype='bool'),\n  'label': array([...], dtype='bool'),\n  'frames': [41, 65, 167],\n  'dataset': 'amateur'\n}\n`\n\nThe shape of the *video* is (height, width, number of frames), the *box* has shape (height, width) and the *label* has the same shape as the *video*. The *frames* is a list of indices (starting at zero), indicating which frames are labeled. The *dataset* key describes if the video was labeled by amateurs or experts.\n\nThe test set file (test.pkl) has the same structure but with the labels removed:\n\n`\n{\n  'name': 'CX86SA56S9',\n  'video': array([...], dtype='uint8')\n}\n`",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "The samples originate from two different data sets: One data set was labeled by experienced cardiologist and consists of high resolution videos, and the other was labeled by amateurs and has relatively low resolution. While the training data consists of videos from both data sets the test videos (where you need to make the predictions) are evaluated based on expert labels only. It is up to you to decide to which extend you want to use the amateur labeled videos for the training of your model.\n\nThe data for this task consists of the following files:\n\n**train.pkl** - the training data with the videos, bounding boxes, labels and information about the data source.\n**test.pkl** - the test data with the videos where the MV should be segmented.\n**sample.pkl** - a sample submission file in the correct format.\n**task3.ipynb** - a helper notebook containing functions for reading and saving the pickle (*.pkl) files.\n\nThe training data (train.pkl) is a list of dictionaries containing the following keys: *name, video, box, label, frames, dataset*. A single dictionary has the following structure:\n\n`\n{\n  'name': 'AC8ASN45B9',\n  'video': array([...], dtype='uint8'),\n  'box': array([...], dtype='bool'),\n  'label': array([...], dtype='bool'),\n  'frames': [41, 65, 167],\n  'dataset': 'amateur'\n}\n`\n\nThe shape of the *video* is (height, width, number of frames), the *box* has shape (height, width) and the *label* has the same shape as the *video*. The *frames* is a list of indices (starting at zero), indicating which frames are labeled. The *dataset* key describes if the video was labeled by amateurs or experts.\n\nThe test set file (test.pkl) has the same structure but with the labels removed:\n\n`\n{\n  'name': 'CX86SA56S9',\n  'video': array([...], dtype='uint8')\n}\n`\n\n## Submission format\n\nFor your convenience, we further provide a sample submission file (sample.pkl). It provides the structure you need to follow in order to create a **valid** submission file. The predictions must be stored as list of dictionaries with an individual dictionary having the following structure:\n\n`\n{\n  'name': 'CX86SA56S9',\n  'prediction': array([...], dtype='bool')\n}\n`\n\nNote that for each video in the test data (test.pkl) you need to predict all frames. The *name* describes the video name of the test data to which the *prediction* belongs to. **Important:** The *prediction* array needs to have the **same** shape as the corresponding test video and needs to be of **boolean** type, i.e. the entries \"True\" describe the pixels where the mitral valve is located and \"False\" describe the background. The list of dictionaries must be saved as a gzip compressed(!) pickle file and the file size **must not exceed 5Mb**. The helper notebook (task3.ipynb) provides the helper functions to create a valid submission file.\n\n`\n  import pickle\n  import gzip\n  \n  def save_zipped_pickle(obj, filename):  # obj are the predictions provided as a list of dictionaries.\n      with gzip.open(filename, 'wb') as f:\n          pickle.dump(obj, f, 2)\n`\n\nPlease keep in mind that, as a group, you have a limited number of submissions as stated on the submissions page. For this task you will only have 50 submissions in total.\n\n## Important\n\nYou are not allowed to manually segment the mitral valves (neither for training nor during test time)! Dishonest conduct will have the failure of the course as consequence and will be reported.\n\nMake sure that you properly hand in the task, otherwise you may obtain zero points for this task.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "The evaluation metric for this task is the **median [Jaccard Index (IoU)](https://en.wikipedia.org/wiki/Jaccard_index)** calculated over all test videos.\n\nMathematically, the formula for the IoU is:\n\n$$IoU(A, B) = \\frac{|A \\cap B|}{|A \\cup B|}$$\n\nwhere A is the set describing the ground truth segmentation pixels and B is the set of predicted pixels.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "You are not allowed to manually segment the mitral valves (neither for training nor during test time)! Dishonest conduct will have the failure of the course as consequence and will be reported.\n\nMake sure that you properly hand in the task, otherwise you may obtain zero points for this task.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "abstract",
      "content": "The mitral valve is the largest valve of the heart and regulates the blood flow between the left atrium and the left ventricle. It is composed by two leaflets, the anterior and the posterior leaflet, that are attached to a fibrous ring known as the mitral annulus. In healthy patients, the left atrium contracts during diastole and the blood flows through the open MV into the left ventricle while it is dilating.\n\nEchocardiography is a medical imaging technique that produces 2D pictures and videos of the heart using ultrasound waves generated by a transducer, scattered and reflected by biological tissues and read by a detector. Echocardiography is the standard imaging tool in the clinical routine to perform the diagnosis of most of heart diseases and dysfunctions, including MV diseases.\n\nMitral valve segmentation specifies a crucial first step to establish a machine learning pipeline that can support practitioners in performing multiple tasks including the diagnosis of mitral valve diseases, surgical planning, and intra-operative procedures. **Therefore, this task will be concerned with the segmentation of the mitral valve in echocardiography videos.**\n\nThe training set consists of 65 videos in which the mitral valve is labeled in three different frames in each video. Additionally, a bounding box surrounding the mitral valve is provided for each video. The test set consists of 20 videos. For each video in the test set the mitral valve should be segmented for **all** frames. ",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "FAQs",
      "content": "#### Frequently asked questions\n\n##### Which programming language am I supposed to use? What tools am I allowed to use?\nYou are free to choose any programming language and use any software library.\n\n##### Can you help me solve the task? Can you give me a hint?\nAs the tasks are a graded part of the class, **we cannot help you solve them**. However, we will try to address general aspects during the project tutorials. Moreover, feel free to ask general questions about the course material during or after the exercise sessions.\n\n##### Can you give me a deadline extension?\nWe can not grant deadline extensions, except in extraordinary cases (e.g. military service). However, we will require official confirmation of your problem (e.g. certificate of illness).\n\n##### Can I post on Piazza as soon as I have a question?\nThis is highly discouraged. Instead,\n- Read the details of the task thoroughly.\n- Review the frequently asked questions.\n- If there is another team that solved the task, try again.\n- Discuss with your team mates.\n\nIf you still consider that you should contact the TAs, you can post a **private** question on Piazza. Remember that collaboration with other teams beyond (general discussions) is prohibited.\n\n##### Are I allowed to use ideas from published papers and use their code?\n\nYou are allowed to search for any material that presents how to train models for related tasks (e.g. articles in conferences, repositories, etc...). However, you must re-implement the code by yourself. You are **NOT** allowed to copy code.\n\n##### When will I receive the private scores? And the project grades?\nWe will publish the private scores before the exam the latest.\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}