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-1.4.9.tar.gz (59.9 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-1.4.9-py3-none-any.whl (66.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for unicorn_eval-1.4.9.tar.gz
Algorithm Hash digest
SHA256 64714ed798e90c31d5701227635232a263e04a4a08879965a271586fcbe3bb35
MD5 cfaedba29a2f67c8a12324e337434c0e
BLAKE2b-256 6dc8326af5dea9da2ce61bc9b20e431e0ae358186f0ba295421e2169b8cfc6c1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for unicorn_eval-1.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 53a1571e123fd7b62f232f24e56060a286e4bc68d0b7292a531200c6e0c8e32f
MD5 04e96d4327fe44d4e1012c0d125ac9b6
BLAKE2b-256 a8c70f876fabf7071ed6166a5e39f9e1140413a56fbac8ba962d3ee34e022d0e

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