Submission Guidelines¶
Algorithms are submitted to the PRISM-AI Challenge as inference containers on the Grand Challenge platform. This page describes the requirements and how to get from a trained model to a valid submission.
At a glance¶
| Submission format | Docker container (Grand Challenge algorithm) |
| Input | Stacked .mha files, one stack per view (CC-L, CC-R, MLO-L, MLO-R), with matching stacked .json files holding the DICOM header information |
| Output | Breast cancer probability score; 5-year risk is the primary outcome |
| Runtime limit | 3 minutes per case |
| GPU | Optional — NVIDIA T4 (16 GB VRAM) |
| Internet access | None. Containers run fully offline |
| Example scripts | [TO CONFIRM: add GitHub link] |
What is an inference container?¶
An inference container is a Docker container that encapsulates your trained AI algorithm (architecture + model weights) together with everything needed to:
- load a mammographic examination,
- generate predictions: for example, 5-year future breast cancer risk, and
- store the corresponding output file for evaluation.
To help participants prepare their algorithm for submission, a demo inference container is available on GitHub, which you can adapt to your needs.
It may also be helpful to consult general Grand Challenge documentation, including but not limited to:
Example scripts¶
The example repository contains the files that together form a minimal working submission. Key files are:
inference.py¶
The main inference script for running an algorithm on the Grand Challenge platform. It reads the stacked mammograms and their header information, runs a prediction per participant, and writes the output file. The example algorithm predicts breast cancer risk at multiple time points (years 1–5), based on the four views per participant.
Helper code is included to convert the stacked .mha files to
individual DICOM files and to populate the required DICOM header fields
from the .json files. If your algorithm expects DICOM input, this is
the part to reuse; if it works directly on pixel arrays, you can read
from the stacks and skip the conversion.
Dockerfile¶
Defines the Docker container used for deployment on Grand Challenge. All required system and Python dependencies are installed during the image build, so no separate local Python or conda environment is needed.
See the following pages for documentation on how to build and test the Docker image (and this page to set things up on Windows), and how to upload your algorithm.
Input interface¶
Each case is a screening examination consisting of the four standard
views, in MetaImage (.mha) format, accompanied by the relevant
DICOM header information. Examinations are not passed to your container
one at a time:
- Mammograms are provided as stacked
.mhafiles, with separate stacks for each of the four standard views: CC-L, CC-R, MLO-L and MLO-R. - DICOM header information is provided as stacked
.jsonfiles, again with separate stacks per view, synchronized with the mammograms: the n-th entry of a metadata stack belongs to the n-th image of the corresponding image stack. - Each stack holds at most 100 images, so your container is called repeatedly (once for every stacked .mha file) to cover the full evaluation set.
Output interface¶
Your container writes a JSON file containing a breast cancer probability score:
- The score must be a probability between 0.0 and 1.0 (or between 0 and 100).
- The 5-year probability is the primary outcome of the Challenge and the basis for the leaderboards.
- Algorithms that additionally output 2-, 3- or 4-year probabilities are evaluated in secondary analyses.
Configuration¶
Before building or running the container, open inference.py and verify
the following paths:
| Variable | Description | Default |
|---|---|---|
INPUT_PATH |
Path to the input .mha stacks, with IMAGES_PATH = INPUT_PATH/"images". The .json files with header information are read from INPUT_PATH directly |
/input (keep for Grand Challenge) |
RESOURCE_PATH |
Path to resources such as model weights | /opt/algorithm/resources (see Dockerfile) |
OUTPUT_PATH |
Path where predictions are written | /output (keep for Grand Challenge) |
INPUT_PATH and OUTPUT_PATH must keep their default values: Grand
Challenge mounts the data at these locations. RESOURCE_PATH is yours
to change, as long as it matches the location your Dockerfile copies
the model weights to.
Compute and runtime¶
When you submit an algorithm, you can choose GPU or no GPU access. If GPU access is selected, the algorithm will have access to an NVIDIA T4 GPU (16 GB VRAM) instance. The runtime limit for processing a single case is three minutes.
Because all weights must be present inside the container and there is no internet access at runtime, load your model once at container start-up rather than once per case.
Testing your container locally¶
To test your algorithm locally before submission, run:
./do_test_run.sh
This script launches the Docker container, mounts the required input and
output directories, and runs inference.py inside the container. Input
is read from ./test/input and output is written to ./test/output.
Building and submitting your container¶
To build and export the Docker container for upload to Grand Challenge, run:
./do_save.sh
This produces a .tar.gz file that can be uploaded directly to Grand
Challenge. For more information on testing and submitting your
container, see the
this
and
this
documentation.
Trial run and debugging¶
Before making a final submission, it is possible to run your algorithm on a small set of mammograms on Grand Challenge to ensure it will run error-free. Most problems that surface at this stage are input-parsing issues that take minutes to fix and would otherwise invalidate a submission.
The Challenge is structured with two rounds:
- Initial submission — a first working version. The Challenge organizers review the logs of all submissions and report back on any errors.
- Final submission — the version that is evaluated on the hidden PRISMA set.
Evaluation¶
After submission and processing, performance metrics are computed automatically on Grand Challenge, based on the pre-defined and publicly available PRISM-AI evaluation scripts. No manual steps by the organizers sit between your predictions and the leaderboard.