Skip to content

v0.2.17 — retinal-layer segmentation tool

Choose a tag to compare

@belkassaby belkassaby released this 25 Sep 14:32
· 843 commits to main since this release
9044aff

Released 2026-08-09.

Added

  • Retinal-layer segmentation — a toolbar tool, a parameter dialog, and ISemanticSegmenter / SEMANTIC_SEGMENTER, backed by jax-ai-js.

    A third segmentation port rather than a reuse of the other two, because the output is a genuinely different shape: cellpose separates touching instances of one class, YOLO returns overlapping classified objects with a confidence each, and this returns layers that tile the image, never overlap, and where two disconnected patches of a class are one finding rather than two objects. There is no per-object confidence and no NMS because there are no objects.

    Only the VNet checkpoint is enabled. Against the ground-truth masks shipped with them, VNet scores mIoU 0.9061 and the three ResUNet-a variants 0.27–0.31. That is not quantization damage — each ONNX export reproduces its own Keras original exactly. They disagree with the masks, folding ground-truth class 1 into their class 2 and class 3 into background, and no relabelling rescues them (the best of all 24 permutations reaches 0.36). Their weights are unpublished pending that question, so their registry entries carry an empty modelUrl and a specific reason. They are listed rather than deleted so a host can show them as unavailable instead of pretending the server's choice does not exist.

    WebGPU only, with no fallback: ORT-Web's WASM EP dies with std::bad_alloc on these graphs at 512², at every precision. WebGpuRequiredError is re-thrown unchanged so a host can show a real unsupported-browser message.

    An empty result distinguishes "found nothing" from "was unsure everywhere" — the second is the signature of the wrong magnification or wrong preprocessing, and reported as a plain empty result a misconfiguration is indistinguishable from an empty field.


npm: @jax-data-science/sci-image-visualizer@0.2.17
Full diff: v0.2.16...v0.2.17