Skip to main content

Evaluation and adaption method for the UNICORN Challenge

Project description

🧪 UNICORN Evaluation Toolkit

Welcome to the official evaluation repository for the UNICORN Challengea benchmark for foundation models in pathology, radiology, and medical language processing. This repository provides:

  • The official UNICORN Challenge evaluation code
  • A growing library of adaptors used to turn frozen features into predictions in vision tasks.

PyPI version Docker Version

🚀 Challenge Overview

The UNICORN Challenge evaluates how well foundation models generalize across multiple modalities with minimal task-specific supervision:

  • 🧠 Language and Vision-Language tasks: algorithm directly outputs predictions — no adaptor required
  • 👁️ Vision tasks: algorithms outputs frozen features, these are passed through adaptors — lightweight models - to generate predictions.

We provide a few built-in adaptors, but you're highly encouraged to propose your own!
We maintain the full list of adaptors available on the Supported Adaptors page.

📦 Adaptors vs. Algorithms: What's the Difference?

In vision tasks, submissions consist of:

  • A feature extractor (your algorithm)
  • An adaptor (used to turn features into predictions)

You can experiment with different adaptors on top of the same algorithm without using up your submission slots.
Want to try a different adaptor? Email us using the provided template (see below) — we’ll run it for you on existing features.

In language and vision-language tasks, the algorithm outputs predictions directly, so no adaptor is needed.

🧩 Contributing a Custom Adaptor

Have a better idea for how to turn features into predictions?

You’re welcome to contribute a custom adaptor! Here's how:

  1. Add your adaptor to src/unicorn_eval/adaptors/.
  2. Inherit from one of the base adaptor classes in base.py.
  3. Open a pull request with:
    • Your adaptor code
    • A short README.md that covers:
      • A clear description of your method
      • A list of tasks, or task types your method is designed for
    • A unique name (we will include your team name in the adaptor name to ensure you receive credit). When naming your method, please be as specific as possible — for example, indicate details like the number of layers or specific settings — so that related methods with different configurations can be distinctly named.
    • Any additional dependencies in a requirements.txt (details on adding new requirements below)

✅ Once accepted, your adaptor becomes selectable at submission time — and your team gets full recognition when it’s used!

💡 Keep in mind: we prioritize originality. If your adaptor is too similar to an existing one, it may not be accepted — so submit early and make it your own!

Implementation requirements for contributing a new adaptor

  • Your adaptor method must be implemented as a standalone function, following the baseline template base.py
  • It must complete within the allowed time limit of 1h
  • It must run on CPU
  • Submissions will be evaluated for correctness, efficiency, and compliance with the challenge policies
  • 🚨 Important: Pre-trained adaptors are not allowed! Be original — you can use the few-shots, for example, for fitting or training your adaptor, but don’t rely on pre-trained solutions

Dependencies

  • Each method must be able to run in the provided isolated environment
  • Additional dependencies can be requested, but:
    • Approval of new dependencies is not guaranteed, dependencies will be evaluated based on compatibility with other packages
    • Organizers reserve the right to modify the list of dependencies over time, though we aim to maintain compatibility with existing adaptors
    • When specifying dependencies, use the least restrictive version (e.g., package>=1.0.0) to ensure flexibility

💬 Teams are encouraged to share ideas and discuss approaches on the Grand Challenge forum. Support and Q&A will also be available through the forum.

📤 Requesting New Adaptor Runs

You can request us to apply additional adaptors to your existing vision submission without impacting your submission limit.

📧 Submission Instructions

  1. Go to your submission URL: https://unicorn.grand-challenge.org/evaluation/<leaderboard-specific-number>/submissions/<your-submission-id>/
    (Use only this format — not other links)

  2. For each submission that you want to rerun with a new adaptor, specify:

    • The full submission link
      Example: https://unicorn.grand-challenge.org/evaluation/30/submissions/bc9b9fe2-1f8d-4b9e-af7b-0edb87b127a4/
    • The new adaptor(s) you want to apply (chosen from the Supported Adaptors).
      ⚠️ Responsible use: You’re welcome to submit additional adaptor run requests over time. However, to ensure fair access for all participants, we ask that each request remains targeted and minimal (e.g., max 2 adaptors per leaderboard per request). Bulk or unfocused requests may be deprioritized.
  3. Email your request to support@unicorn-challenge.com containing the following template:

Submission: https://unicorn.grand-challenge.org/evaluation/<leaderboard-specific-number>/submissions/your-submission-id/
Adaptors:
- teamname_adaptorX_v1
- teamname_adaptorY_v2

[Repeat for other submissions if needed]

Summary

Modality What You Submit Are Adaptors Used? Submission Limit Applies To
👁️ Vision Algorithm (feature extractor) + Adaptor ✅ Yes Algorithm only
🧠 Language Algorithm (predictive) ❌ No Algorithm
🧠 Vision-Language Algorithm (predictive) ❌ No Algorithm

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unicorn_eval-2.3.2.tar.gz (85.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unicorn_eval-2.3.2-py3-none-any.whl (108.2 kB view details)

Uploaded Python 3

File details

Details for the file unicorn_eval-2.3.2.tar.gz.

File metadata

  • Download URL: unicorn_eval-2.3.2.tar.gz
  • Upload date:
  • Size: 85.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for unicorn_eval-2.3.2.tar.gz
Algorithm Hash digest
SHA256 236da348c628b90e780280d15a9ef072f0e3be1ca5546fe167ce756fbcff07d7
MD5 2e790f1085f26a672de141966f09d665
BLAKE2b-256 3a2fade49e70eeaa0c1fc104bc608634ebdd6914970e59d1cc41df2401e64761

See more details on using hashes here.

File details

Details for the file unicorn_eval-2.3.2-py3-none-any.whl.

File metadata

  • Download URL: unicorn_eval-2.3.2-py3-none-any.whl
  • Upload date:
  • Size: 108.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for unicorn_eval-2.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 886a03d57a6cfd86934de0563b58b872d9468174da7fc847fd9655ed9a780b07
MD5 69293eeb02e9172b4fe6eae6fbb0e3a1
BLAKE2b-256 43b9fe6caa1d478ebab21f695f87533c48a98753f9c8521d00011e4e7afac851

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page