What it does
Given a CT and an aorta mask, Devar finds every artery leaving the aorta directly, assigns each one an instance ID, and reports its origin, direction and radius in physical coordinates. One command, one JSON per case, and it never crashes: any failure just logs and returns an empty list. We also built an offline viewer that unrolls the aorta into a clock face, the way a surgeon actually thinks about it, with an interactive 3D view and a Slicer-compatible overlay.
How we built it
The mask isn't just a search anchor. It's a sample of exactly the blood we're looking for, so every threshold calibrates itself per scan instead of being fixed. From there we clean the noise clinging to the mask's surface, group what's left into candidate branches using the brief's own definition of an instance (separate at the wall means separate branches), locate each origin, and walk a short distance down each branch to get its seed, direction and radius in one pass. No training, no GPU, just NumPy, SciPy and scikit-image, built test first with every constant justified in one config file so nothing gets tuned to flatter a single case.
Challenges we ran into
The dev set mixes sharp and coarse scans, so every distance had to live in millimetres, not voxels, or a threshold tuned on one acquisition would quietly fail on the other. Deciding when something counts as one branch versus two took longer than we expected: real anatomy doesn't respect the tidy textbook diagram. We also learned not to trust our own false positives. Several, once we actually looked at the CT, turned out to be real arteries the draft references had simply missed.
Accomplishments that we're proud of
Every rejection rule traces back to a specific line in the brief, so the filtering stage reads as an implementation of the task rather than a pile of tuned heuristics. It runs in about a second a case with plenty of memory to spare, gives the same output every time it runs, and has never crashed on any dev case. Devar itself turned into a viewer we'd genuinely want a clinician to open.
What we learned
Treating the mask as a live source of information about the scan, not just a region to crop, is what let the pipeline generalise across two very different acquisitions. And a false positive is only really a mistake once you've looked and confirmed there's nothing there.
What's next for Devar
We want to run our existing perturbation and coarse-resolution checks against the hidden test set, ship a fully offline install once we know the target platform, and, if it comes into scope, extend the same wall-contact instance definition down to the iliac division.

Log in or sign up for Devpost to join the conversation.