{
  "fetched_at": "2026-10-19T08:01:44Z",
  "source_url": "https://www.kaggle.com/competitions/ai4imaging-hackathon-2024/data",
  "pages": [
    {
      "name": "data-description",
      "content": "The dataset comprises 150 MRI exams from patients, divided into training and testing sets. The training set consists of 100 patients, while the testing set includes 50 patients. Each patients has MRI data for two cardiac phases: diastolic and systolic. For each phase, there is one original 3D MRI image and a corresponding segmentation mask file that delineates the region of interest (ROI). Additionally, each patient in the training set is labeled with the disease diagnosis. The dataset is accessible via a provided link and can be used with Google Colab for training purposes.\nhttps://drive.google.com/drive/folders/1fQE2qf52oKyhx5ezoLKmClt0t4mdIMbP?usp=sharing\n\n# Task \nYour task is to build a multi-classification deep learning or radiomics model that is able to use two-frame of cardiac MRI to predict the category of heart disease.\n\n# Train Files\n(example of subject 'p0001')\n- **p0001_frame01.nii.gz** - the systolic frame of 3D MRI\n- **p0001_frame01_gt.nii.gz** - the segmentation mask of the systolic frame\n- **p0001_frame06.nii.gz** - the diastolic frame of 3D MRI\n- **p0001_frame06_gt.nii.gz** - the segmentation mask of the diastolic frame\n- **gt.txt** - the classification label, including '**NOR**', '**MINF**', '**DCM**', '**HCM**' and '**RV**'. You should encode the label into a one-hot representation by yourselves.\n\nNOR - Normal subjects\nMINF - Myocardial infarction\nDCM - Dilated cardiomyopathy\nHCM - Hypertrophic cardiomyopathy\nRV - Abnormal right ventricle\n\n# Test Files\n(example of subject 'p0101')\n- **p0101_frame01.nii.gz** - the systolic frame of 3D MRI\n- **p0101_frame01_gt.nii.gz** - the segmentation mask of the systolic frame\n- **p0101_frame14.nii.gz** - the diastolic frame of 3D MRI\n- **p0101_frame14_gt.nii.gz** - the segmentation mask of the diastolic frame\nNote: The test dataset does not include labels.\n\n# Explanation of the segmentation ROI\nThe segmentation mask, e.g., p0001_frame01_gt.nii.gz, utilizes non-zero integer (i.e., 1-3) to highlight different anatomical structures of the heart. The numbers 1, 2, and 3 represent the right ventricle, left ventricle, and myocardium, respectively.\n\n# Expected Model Input\nThe model should receive a batch of patient images as an input. The input tensor should be in the shape of [batch, channel, height, width, depth]. Please note that the channel number should be set to 2 due to the two-frame input setting. Also, image sizes may vary due to different acquisition settings.\n\n# Expected Model Output\nThe model output should be a five-class one-hot prediction after the Softmax layer.\n\n# Here are some tips:\n- How to read the training image?\n\n```\n# Please install nibabel by: !pip install nibabel\nimport nibabel as nib\nimage_frame_1 = nib.load(image_frame_1_path).get_fdata()\nimage_frame_1_gt = nib.load(image_frame_1_gt_path).get_fdata()\nimage_frame_2 = nib.load(image_frame_2_path).get_fdata()\nimage_frame_2_gt = nib.load(image_frame_2_gt_path).get_fdata()\n\n```\n\n- How to input the ROI together with an image?\nDespite there are many ways to integrate images with ROI, we recommend you multiply or concatenate the image and ROI.\n\n```\n# Multiplication\nimage_frame_ROI = image_frame1 * image_frame1_gt\n\n# Concatenation\nimport numpy as np\nprint(image_frame1.shape, image_frame1_gt.shape)\nimage_frame_ROI = np.stack((image_frame1, image_frame1_gt))\nprint(image_frame_ROI.shape)\n\n```\n\n- Please note that the sizes of images may vary between different subjects.\nask chatGPT:smile:\n\n- How to input two frames together?\nYou can put these two frames into two different channels of the input image, or you can build two separate networks and concatenate them later.\n\n```\nimport numpy as np\n# Concatenate images along the new first axis (channel dimension)\ncombined = np.concatenate((img1, img2), axis=0)\n\n```\n\n- Which kind of model can we use?\nMONAI package is recommended. e.d., monai.networks.nets.ResNet\n\n```\n# Please install MONAI by: !pip install monai\nfrom monai.networks.nets import ResNet\nmodel = ResNet(...)\n\n```\n\n# Citation\n1.  O. Bernard, A. Lalande, C. Zotti, F. Cervenansky, et al. \"Deep Learning Techniques for Automatic MRI Cardiac Multi-structures Segmentation and Diagnosis: Is the Problem Solved ?\" in IEEE Transactions on Medical Imaging, vol. 37, no. 11, pp. 2514-2525, Nov. 2018. doi: 10.1109/TMI.2018.2837502",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "Welcome to the AI4I 2024 - Hackathon - Cine Heart MRI Classification Challenge! This competition is a shuffled version of the open-source ACDC dataset. We invite you to develop a deep learning model that can accurately classify heart diseases based on Cine Heart Magnetic Resonance Images (MRI).",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "The evaluation metric for this competition is [Mean F1-Score](https://en.wikipedia.org/wiki/F-score). The F1 score, commonly used in information retrieval, measures accuracy using the statistics precision **p** and recall **r**. Precision is the ratio of true positives tp to all predicted positives **tp**+**fp**. Recall is the ratio of true positives **tp** to all actual positives **tp**+**fn**. The F1 score is given by: \n                                         F1=2 (p∙ r)/(p+ r)  where p=tp/(tp+ fp), r=tp/(tp+ fn)\nThe F1 metric weights recall and precision equally, and a good retrieval algorithm will maximize both precision and recall simultaneously. Thus, moderately good performance on both will be favored over extremely good performance on one and poor performance on the other.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "\n - Please form a team by yourself, with a maximum of 4 people per team\n - Have fun! :smile: ",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "abstract",
      "content": "\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}