5th Workshop on Maritime Computer Vision (MaCVi)

MaCVi @ WACV 2027

Challenges / EURS

EURS: Embedded Underwater Restoration and Segmentation

Underwater imagery is degraded by color distortion, light scattering, and low visibility, which makes downstream perception tasks — like identifying and localizing marine life — substantially harder than on clean images. EURS combines two coupled tasks into a single challenge: restoring a degraded underwater image, and segmenting it into marine-relevant classes.

EURS pipeline: a degraded underwater image is restored, then segmented into background, coral, fish, elasmobranch, and other classes.

Track 1: Public Dev-Set Leaderboard

Quick links: Dataset download Submit Leaderboard Ask for help

Overview

Both restoration and segmentation are scored against the same Dev-split ground truth, so a submission needs to get both the pixel-level restoration and the semantic understanding right. This leaderboard runs entirely server-side against the public Dev split, with no device or power constraints and no submission limit beyond a daily cap — use it to iterate while developing. It does not require any special hardware and carries less weight than Track 2 towards final standings.

Task

Given a degraded underwater image, participants must produce two outputs for it:

Dataset

The dataset consists of real underwater scenes, each provided as one clean ground-truth image/mask pair and multiple synthetically degraded versions of that scene (simulating different water conditions and depths). The Dev split — the split scored by this leaderboard — is available as a direct download:

Download the EURS Dev-split dataset

Evaluation Metrics

This leaderboard's primary ranking metric is the same composite score used by Track 2:

composite = 0.6 × Qseg + 0.3 × (0.45 × PSNRnorm + 0.45 × SSIM + 0.10 × sharpness_ratio) + 0.1 × NRquality

where Qseg = F1 × mIoU × coverage_penalty rewards submissions that get both segmentation coverage (F1) and per-class accuracy (mIoU) right, and NRquality is the mean of UIQM/UCIQE/CCF, each normalized over an empirically-observed range (see Track 2's Evaluation Metrics for the full rationale, including why that no-reference group is capped at a small combined weight). The full set of metrics reported:

Submission Zipfile Preparation Guidelines

Participate

To participate in the challenge follow these steps:

  1. Download the EURS Dev-split dataset.
  2. Train a model (or pipeline) that restores the degraded input and predicts a per-pixel class mask. You may use additional publicly available training data, but must disclose it at submission time.
  3. Generate restored/ and seg_masks/ outputs for every Dev-split image, following the format above.
  4. Run resize_for_submission.py on your outputs — this is mandatory, not optional; the evaluator rejects any output whose size doesn't exactly match what it expects, and this script is the supported way to get that right without computing it yourself.
  5. Package both resized folders into a single .zip with restored/ and seg_masks/ at the archive root (no extra nesting).
  6. Upload your .zip file on the upload page. You'll need to register to submit.
    • Evaluation runs on the server and typically takes 10–20 minutes for a full Dev-split submission. Refresh the dashboard page to see results; it will also show details on any failed submission (hover over the error icon).
    • You may submit at most 10 times per day to public leaderboard. Failed submissions still count towards this limit, so double-check your archive format before uploading.

Terms and Conditions


Track 2: Embedded (Jetson AGX Orin)

Quick links: Submit Leaderboard Self-check your model's GFLOPs/params Ask for help

Overview

Track 2 runs your submitted ONNX model itself — not pre-computed prediction images — directly on our judging hardware: a Jetson AGX Orin, locked to JetPack/L4T 7.2.1 (r39.2.1), stock nvpmodel MODE_30W, with a 16GB memory cap. The same environment and thresholds apply to every submission, published here so everyone targets the same bar. The exact model you submit produces the restored/ and seg_masks/ outputs used for accuracy scoring and is the thing timed and power-measured for the efficiency metrics — this ties both scores to the same artifact, so a fast dummy model paired with offline-computed predictions can't game the efficiency numbers. Accuracy is scored on a private, held-out Test split (never used by Track 1's Dev-split leaderboard), so repeated Track 1 iteration can't leak information about Track 2's scoring data.

Because evaluation involves compiling and running your model on real physical hardware, results are not immediate — a submission typically takes 15–20 minutes to come back (engine compile, a sustained-load measurement window, then real inference over the full Test split). Refresh the dashboard to see results once ready.

Submission Format

Design-Space Cap (checked before your model ever touches the hardware)

Your submitted graph's total compute and parameter count are checked statically, before anything runs on the Jetson:

Run the same check yourself locally, on your own machine — wherever you already exported the ONNX file — before submitting, so you don't spend a submission slot on a model that would fail this stage: download check_submission_flops.py, install its one dependency (pip install onnx), then run python check_submission_flops.py --onnx your_model.onnx (defaults already match the locked caps above). It's a plain static analysis of the ONNX graph — no GPU, no Jetson, and no server round-trip needed to use it. A local PASSED only means your model clears this one design-space gate — it doesn't run your model, so it can't tell you anything about accuracy or real-hardware speed/energy. Those only come back from an actual Track 2 submission.

Evaluation Pipeline

Every submission goes through the same stages, in order, stopping at the first failure:

  1. Static compute/parameter check — the GFLOPs/params cap above. Fails fast, before your model ever reaches the Jetson.
  2. TensorRT engine compile on the judging hardware — fails if your ONNX graph doesn't compile for the target TensorRT version.
  3. Quick throughput check — a short sanity pass.
  4. Sustained-load measurement — throughput and energy-per-frame under continuous real load, not a single burst.
  5. Real inference over the private Test split's degraded images, run directly on the Jetson.
  6. Accuracy scoring of those on-device outputs against ground truth.
  7. A combined result is returned: either full scores, or a rejection naming the exact stage and reason.

Evaluation Metrics

Track 2's primary ranking metric is the composite score:

composite = 0.6 × Qseg + 0.3 × (0.45 × PSNRnorm + 0.45 × SSIM + 0.10 × sharpness_ratio) + 0.1 × NRquality

where Qseg = F1 × mIoU × coverage_penalty (the same per-class IoU floor as Track 1 — drives Qseg to exactly 0 if any present class is essentially ignored), PSNRnorm normalizes PSNR over a 15–35dB window, and NRquality is the mean of UIQM/UCIQE/CCF, each normalized over an empirically-observed range. This no-reference group is deliberately capped at a small combined weight: no-reference image quality metrics are known to be gameable (e.g. via contrast/saturation stretching) without reflecting genuine restoration quality — confirmed on our own data, where CCF actually scores higher on degraded inputs than on an honestly restored image. The full set of metrics reported:

Participate

  1. Train your model as for Track 1, then export it to a single self-contained .onnx file with a static input shape.
  2. Run check_submission_flops.py locally and confirm it prints PASSED.
  3. Upload the .onnx file directly on the upload page. You'll need to register to submit.
    • You may submit at most once per day per team to this track — it runs on a single physical judging device, so slots are scarce by design. Failed submissions still count towards this limit, so self-check locally first.
    • Results are asynchronous and typically take 15–20 minutes. Refresh the dashboard page to see them; it will also show the failing stage and reason for any rejected submission.

Terms and Conditions

In case of any questions regarding the challenge dataset or submission, please join the MaCVi Support forum.

This Challenge is hosted by Center for Visual Intelligence, KLE Technological University, Hubballi, INDIA in collaboration with University of Tuebingen and Manipal Academy of Higher Education, Bengaluru
kletech kletech unituebingen mahe