@jax-data-science/sci-image-visualizer 0.2.14 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,6 +28,36 @@ const EYE_DEFAULTS = {
28
28
  overlapX: 0,
29
29
  overlapY: 0,
30
30
  };
31
+ /**
32
+ * The retina is an elongated band spanning the whole field, so it crosses tile
33
+ * seams wherever they fall.
34
+ *
35
+ * With no overlap the tiles butt together at fixed boundaries: a structure
36
+ * sitting across a seam is cut in half, each tile sees only a slice, and the
37
+ * slice often fails to clear the confidence threshold — so the object vanishes
38
+ * exactly where the seam lands. Observed as multi-thousand-pixel holes in the
39
+ * middle of an otherwise continuous retina, which closed once overlap was
40
+ * raised.
41
+ *
42
+ * An object of size `s` is guaranteed to sit wholly inside some tile only when
43
+ * the overlap is at least `s / tileSize`; at 60% that covers anything up to
44
+ * ~307px of a 512px tile. The server's own table uses 0 here and has the same
45
+ * blind spot — this deliberately diverges from it.
46
+ */
47
+ const RETINA_DEFAULTS = {
48
+ confidence: 0.6,
49
+ iouThreshold: 0.5,
50
+ // Cross-tile merging uses intersection-over-*smaller*, so at 0.3 a fragment is
51
+ // discarded once 30% of its own area is covered by a larger box — even when
52
+ // most of it lies outside. On a band detected as a chain of overlapping
53
+ // fragments that deletes the middle ones. Measured on one slide: 0.3 gave two
54
+ // boxes covering 75% of the band with a 3150px hole through it; 0.8 gave four
55
+ // boxes covering 100% with no hole, at the cost of two overlapping pairs.
56
+ // Matches the value jit-ui already sends the server for this checkpoint.
57
+ mergeThreshold: 0.8,
58
+ overlapX: 60,
59
+ overlapY: 60,
60
+ };
31
61
  // Embryos are large, touch each other, and are imaged at native scale — hence
32
62
  // the heavy overlap and the far looser merge thresholds.
33
63
  const EMBRYO_DEFAULTS = {
@@ -48,7 +78,7 @@ export const YOLO_MODELS = [
48
78
  id: 'yolov8x-seg-retina',
49
79
  label: 'Retina',
50
80
  modelUrl: `${HF}/yolov8x-seg-retina-onnx/resolve/main/model.fp16w.onnx`,
51
- defaults: { ...EYE_DEFAULTS },
81
+ defaults: { ...RETINA_DEFAULTS },
52
82
  },
53
83
  {
54
84
  id: 'yolov8x-seg-embryo-m2',
@@ -96,4 +126,4 @@ export function setDefaultYoloModel(id) {
96
126
  export function getDefaultYoloModelId() {
97
127
  return defaultModelId;
98
128
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1tb2RlbC1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1tb2RlbC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBc0JILE1BQU0sRUFBRSxHQUFHLGtDQUFrQyxDQUFDO0FBRTlDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLFVBQVUsRUFBRSxHQUFHO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsUUFBUSxFQUFFLENBQUM7SUFDWCxRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUseURBQXlEO0FBQ3pELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFVBQVUsRUFBRSxHQUFHO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUUsRUFBRTtDQUNiLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQW1CO0lBQ3pDO1FBQ0UsRUFBRSxFQUFFLHdCQUF3QjtRQUM1QixLQUFLLEVBQUUsYUFBYTtRQUNwQixRQUFRLEVBQUUsR0FBRyxFQUFFLDREQUE0RDtRQUMzRSxRQUFRLEVBQUUsRUFBRSxHQUFHLFlBQVksRUFBRTtLQUM5QjtJQUNEO1FBQ0UsRUFBRSxFQUFFLG9CQUFvQjtRQUN4QixLQUFLLEVBQUUsUUFBUTtRQUNmLFFBQVEsRUFBRSxHQUFHLEVBQUUsd0RBQXdEO1FBQ3ZFLFFBQVEsRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFO0tBQzlCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUJBQXVCO1FBQzNCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFFBQVEsRUFBRSxHQUFHLEVBQUUsMkRBQTJEO1FBQzFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsZUFBZSxFQUFFO0tBQ2pDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUJBQXVCO1FBQzNCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFFBQVEsRUFBRSxHQUFHLEVBQUUsMkRBQTJEO1FBQzFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsZUFBZSxFQUFFO0tBQ2pDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixDQUFDO0FBRTlELElBQUksY0FBYyxHQUFHLHFCQUFxQixDQUFDO0FBRTNDLDZFQUE2RTtBQUM3RSxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQVU7SUFDckMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCwyREFBMkQ7QUFDM0QsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQVU7SUFDekMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVSxFQUFFLElBQTZDO0lBQ3hGLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU87SUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztRQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1RCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUztRQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUMzRCxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxFQUFVO0lBQzVDLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUFFLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVnaXN0cnkgb2YgWU9MT3Y4LXNlZyBpbnN0YW5jZS1zZWdtZW50YXRpb24gbW9kZWxzLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIFNBTV9NT0RFTFN9OiBwdWJsaWMgSEYtaG9zdGVkIE9OTlggYnkgZGVmYXVsdCBzbyB0aGUgdG9vbCB3b3Jrc1xuICogb3V0IG9mIHRoZSBib3ggaW4gYW55IGhvc3QsIHJlcG9pbnRhYmxlIGF0IHByaXZhdGUgaG9zdGluZyB2aWFcbiAqIHtAbGluayBzZXRZb2xvTW9kZWxVcmxzfS5cbiAqXG4gKiBFYWNoIGVudHJ5IGNhcnJpZXMgdGhlIHBlci1tb2RlbCAqZGVmYXVsdHMqIHRoZSBzZXJ2ZXItc2lkZSB3b3JrZXIgdXNlcyBmb3JcbiAqIHRoYXQgY2hlY2twb2ludC4gVGhlc2UgYXJlIHByb3BlcnRpZXMgb2YgaG93IHRoZSBtb2RlbCB3YXMgdHJhaW5lZCAob2JqZWN0XG4gKiBzY2FsZSwgZXhwZWN0ZWQgY3Jvd2RpbmcpLCBub3QgVUkgcHJlZmVyZW5jZXMg4oCUIHRoZSBlbWJyeW8gbW9kZWxzIHdhbnQgaGVhdnlcbiAqIDYwJSB0aWxlIG92ZXJsYXAgYW5kIGxvb3NlIG1lcmdlIHRocmVzaG9sZHMgYmVjYXVzZSB0aGVpciBvYmplY3RzIGFyZSBsYXJnZVxuICogYW5kIHRvdWNoLCB3aGlsZSB0aGUgZXllIG1vZGVscyB3ZXJlIHRyYWluZWQgb24gc3BhcnNlLCBkb3duc2FtcGxlZCBmaWVsZHMuXG4gKiBLZWVwaW5nIHRoZW0gaGVyZSBtZWFucyBhIGhvc3QgdGhhdCBqdXN0IHBpY2tzIGEgbW9kZWwgZ2V0cyBzYW5lIGJlaGF2aW91clxuICogd2l0aG91dCBoYXZpbmcgdG8ga25vdyBhbnkgb2YgdGhhdC5cbiAqXG4gKiBXZWlnaHRzIHBvaW50IGF0IHRoZSBgbW9kZWwuZnAxNncub25ueGAgdmFyaWFudCBkZWxpYmVyYXRlbHkuIFRoZSBgLmZwMTZgXG4gKiB2YXJpYW50IGFjY3VtdWxhdGVzIGluIGhhbGYgcHJlY2lzaW9uIG9uIFdlYkdQVSBhbmQsIGF0IHRoZSB4LXNjYWxlIHRoZXNlXG4gKiBtb2RlbHMgdXNlLCBwcm9kdWNlcyBtYXRlcmlhbGx5IHdyb25nIGJveGVzOyBgZnAxNndgIHN0b3JlcyB3ZWlnaHRzIGluIGZwMTZcbiAqIGFuZCBjb21wdXRlcyBpbiBmcDMyLCBzbyBpdCBpcyBoYWxmIHRoZSBkb3dubG9hZCBhdCBpZGVudGljYWwgYWNjdXJhY3kuXG4gKlxuICogRXhwb3J0IHRvb2xpbmc6IHRoZSBzaWJsaW5nIGBicm93c2VyLW9ubngtdG9vbHNgIHByb2plY3QuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBZb2xvTW9kZWxEZWYge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVVJMIG9mIHRoZSBgLm9ubnhgIHdlaWdodHMuIEVtcHR5IGRpc2FibGVzIHRoZSBtb2RlbC4gKi9cbiAgbW9kZWxVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIFVSTCBvZiB0aGUgYG1vZGVsLmpzb25gIHNpZGVjYXIuIE9taXQgdG8gdXNlIGBtb2RlbC5qc29uYCBhbG9uZ3NpZGUgdGhlXG4gICAqIHdlaWdodHMsIHdoaWNoIGlzIGhvdyBldmVyeSBwdWJsaXNoZWQgcmVwbyBpcyBsYWlkIG91dC5cbiAgICovXG4gIG1ldGFVcmw/OiBzdHJpbmc7XG4gIC8qKiBQZXItbW9kZWwgZGVmYXVsdHMsIGZyb20gdGhlIHNlcnZlciB3b3JrZXIncyBtb2RlbCB0YWJsZS4gKi9cbiAgZGVmYXVsdHM6IHtcbiAgICBjb25maWRlbmNlOiBudW1iZXI7XG4gICAgaW91VGhyZXNob2xkOiBudW1iZXI7XG4gICAgbWVyZ2VUaHJlc2hvbGQ6IG51bWJlcjtcbiAgICBvdmVybGFwWDogbnVtYmVyO1xuICAgIG92ZXJsYXBZOiBudW1iZXI7XG4gIH07XG59XG5cbmNvbnN0IEhGID0gJ2h0dHBzOi8vaHVnZ2luZ2ZhY2UuY28vQmFsbG9uOTk5JztcblxuY29uc3QgRVlFX0RFRkFVTFRTID0ge1xuICBjb25maWRlbmNlOiAwLjYsXG4gIGlvdVRocmVzaG9sZDogMC41LFxuICBtZXJnZVRocmVzaG9sZDogMC4zLFxuICBvdmVybGFwWDogMCxcbiAgb3ZlcmxhcFk6IDAsXG59O1xuXG4vLyBFbWJyeW9zIGFyZSBsYXJnZSwgdG91Y2ggZWFjaCBvdGhlciwgYW5kIGFyZSBpbWFnZWQgYXQgbmF0aXZlIHNjYWxlIOKAlCBoZW5jZVxuLy8gdGhlIGhlYXZ5IG92ZXJsYXAgYW5kIHRoZSBmYXIgbG9vc2VyIG1lcmdlIHRocmVzaG9sZHMuXG5jb25zdCBFTUJSWU9fREVGQVVMVFMgPSB7XG4gIGNvbmZpZGVuY2U6IDAuNixcbiAgaW91VGhyZXNob2xkOiAwLjgsXG4gIG1lcmdlVGhyZXNob2xkOiAwLjgsXG4gIG92ZXJsYXBYOiA2MCxcbiAgb3ZlcmxhcFk6IDYwLFxufTtcblxuZXhwb3J0IGNvbnN0IFlPTE9fTU9ERUxTOiBZb2xvTW9kZWxEZWZbXSA9IFtcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctb3B0aWNuZXJ2ZScsXG4gICAgbGFiZWw6ICdPcHRpYyBuZXJ2ZScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1vcHRpY25lcnZlLW9ubngvcmVzb2x2ZS9tYWluL21vZGVsLmZwMTZ3Lm9ubnhgLFxuICAgIGRlZmF1bHRzOiB7IC4uLkVZRV9ERUZBVUxUUyB9LFxuICB9LFxuICB7XG4gICAgaWQ6ICd5b2xvdjh4LXNlZy1yZXRpbmEnLFxuICAgIGxhYmVsOiAnUmV0aW5hJyxcbiAgICBtb2RlbFVybDogYCR7SEZ9L3lvbG92OHgtc2VnLXJldGluYS1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FWUVfREVGQVVMVFMgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctZW1icnlvLW0yJyxcbiAgICBsYWJlbDogJ0VtYnJ5byAoTTIpJyxcbiAgICBtb2RlbFVybDogYCR7SEZ9L3lvbG92OHgtc2VnLWVtYnJ5by1tMi1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FTUJSWU9fREVGQVVMVFMgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctZW1icnlvLW0zJyxcbiAgICBsYWJlbDogJ0VtYnJ5byAoTTMpJyxcbiAgICBtb2RlbFVybDogYCR7SEZ9L3lvbG92OHgtc2VnLWVtYnJ5by1tMy1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FTUJSWU9fREVGQVVMVFMgfSxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1lPTE9fTU9ERUxfSUQgPSAneW9sb3Y4eC1zZWctb3B0aWNuZXJ2ZSc7XG5cbmxldCBkZWZhdWx0TW9kZWxJZCA9IERFRkFVTFRfWU9MT19NT0RFTF9JRDtcblxuLyoqIExvb2sgdXAgYSBtb2RlbCBkZWZpbml0aW9uIGJ5IGlkLiBSZXR1cm5zIHVuZGVmaW5lZCBmb3IgYW4gdW5rbm93biBpZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRZb2xvTW9kZWwoaWQ6IHN0cmluZyk6IFlvbG9Nb2RlbERlZiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBZT0xPX01PREVMUy5maW5kKChtKSA9PiBtLmlkID09PSBpZCk7XG59XG5cbi8qKiBXaGV0aGVyIGEgbW9kZWwgaGFzIGEgdXNhYmxlIHdlaWdodHMgVVJMIGNvbmZpZ3VyZWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNZb2xvTW9kZWxSZWFkeShpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG0gPSBnZXRZb2xvTW9kZWwoaWQpO1xuICByZXR1cm4gISFtICYmIG0ubW9kZWxVcmwudHJpbSgpLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogUmVwb2ludCBhIG1vZGVsIGF0IGRpZmZlcmVudCBob3N0aW5nIChlLmcuIGEgR0NTIGJ1Y2tldCBvciBhIHNhbWUtb3JpZ2luXG4gKiBwcm94eSkuIENhbGwgb25jZSBhdCBhcHAgaW5pdCwgYmVmb3JlIHRoZSBmaXJzdCBydW4uIEFuIGVtcHR5IGBtb2RlbFVybGBcbiAqIGRpc2FibGVzIHRoZSBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFlvbG9Nb2RlbFVybHMoaWQ6IHN0cmluZywgdXJsczogeyBtb2RlbFVybD86IHN0cmluZzsgbWV0YVVybD86IHN0cmluZyB9KTogdm9pZCB7XG4gIGNvbnN0IG0gPSBnZXRZb2xvTW9kZWwoaWQpO1xuICBpZiAoIW0pIHJldHVybjtcbiAgaWYgKHVybHMubW9kZWxVcmwgIT09IHVuZGVmaW5lZCkgbS5tb2RlbFVybCA9IHVybHMubW9kZWxVcmw7XG4gIGlmICh1cmxzLm1ldGFVcmwgIT09IHVuZGVmaW5lZCkgbS5tZXRhVXJsID0gdXJscy5tZXRhVXJsO1xufVxuXG4vKiogQ2hhbmdlIHdoaWNoIG1vZGVsIHJ1bnMgd2hlbiBhIGNhbGxlciBkb2VzIG5vdCBuYW1lIG9uZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0WW9sb01vZGVsKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGdldFlvbG9Nb2RlbChpZCkpIGRlZmF1bHRNb2RlbElkID0gaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0WW9sb01vZGVsSWQoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRlZmF1bHRNb2RlbElkO1xufVxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1tb2RlbC1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1tb2RlbC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBc0JILE1BQU0sRUFBRSxHQUFHLGtDQUFrQyxDQUFDO0FBRTlDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLFVBQVUsRUFBRSxHQUFHO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsUUFBUSxFQUFFLENBQUM7SUFDWCxRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLGVBQWUsR0FBRztJQUN0QixVQUFVLEVBQUUsR0FBRztJQUNmLFlBQVksRUFBRSxHQUFHO0lBQ2pCLCtFQUErRTtJQUMvRSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLHlFQUF5RTtJQUN6RSxjQUFjLEVBQUUsR0FBRztJQUNuQixRQUFRLEVBQUUsRUFBRTtJQUNaLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQztBQUVGLDhFQUE4RTtBQUM5RSx5REFBeUQ7QUFDekQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsVUFBVSxFQUFFLEdBQUc7SUFDZixZQUFZLEVBQUUsR0FBRztJQUNqQixjQUFjLEVBQUUsR0FBRztJQUNuQixRQUFRLEVBQUUsRUFBRTtJQUNaLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBbUI7SUFDekM7UUFDRSxFQUFFLEVBQUUsd0JBQXdCO1FBQzVCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFFBQVEsRUFBRSxHQUFHLEVBQUUsNERBQTREO1FBQzNFLFFBQVEsRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFO0tBQzlCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsb0JBQW9CO1FBQ3hCLEtBQUssRUFBRSxRQUFRO1FBQ2YsUUFBUSxFQUFFLEdBQUcsRUFBRSx3REFBd0Q7UUFDdkUsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFlLEVBQUU7S0FDakM7SUFDRDtRQUNFLEVBQUUsRUFBRSx1QkFBdUI7UUFDM0IsS0FBSyxFQUFFLGFBQWE7UUFDcEIsUUFBUSxFQUFFLEdBQUcsRUFBRSwyREFBMkQ7UUFDMUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFlLEVBQUU7S0FDakM7SUFDRDtRQUNFLEVBQUUsRUFBRSx1QkFBdUI7UUFDM0IsS0FBSyxFQUFFLGFBQWE7UUFDcEIsUUFBUSxFQUFFLEdBQUcsRUFBRSwyREFBMkQ7UUFDMUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFlLEVBQUU7S0FDakM7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUM7QUFFOUQsSUFBSSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFFM0MsNkVBQTZFO0FBQzdFLE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBVTtJQUNyQyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELDJEQUEyRDtBQUMzRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUFVLEVBQUUsSUFBNkM7SUFDeEYsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTztJQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1FBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTO1FBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzNELENBQUM7QUFFRCwrREFBK0Q7QUFDL0QsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEVBQVU7SUFDNUMsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQUUsY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZWdpc3RyeSBvZiBZT0xPdjgtc2VnIGluc3RhbmNlLXNlZ21lbnRhdGlvbiBtb2RlbHMuXG4gKlxuICogTWlycm9ycyB7QGxpbmsgU0FNX01PREVMU306IHB1YmxpYyBIRi1ob3N0ZWQgT05OWCBieSBkZWZhdWx0IHNvIHRoZSB0b29sIHdvcmtzXG4gKiBvdXQgb2YgdGhlIGJveCBpbiBhbnkgaG9zdCwgcmVwb2ludGFibGUgYXQgcHJpdmF0ZSBob3N0aW5nIHZpYVxuICoge0BsaW5rIHNldFlvbG9Nb2RlbFVybHN9LlxuICpcbiAqIEVhY2ggZW50cnkgY2FycmllcyB0aGUgcGVyLW1vZGVsICpkZWZhdWx0cyogdGhlIHNlcnZlci1zaWRlIHdvcmtlciB1c2VzIGZvclxuICogdGhhdCBjaGVja3BvaW50LiBUaGVzZSBhcmUgcHJvcGVydGllcyBvZiBob3cgdGhlIG1vZGVsIHdhcyB0cmFpbmVkIChvYmplY3RcbiAqIHNjYWxlLCBleHBlY3RlZCBjcm93ZGluZyksIG5vdCBVSSBwcmVmZXJlbmNlcyDigJQgdGhlIGVtYnJ5byBtb2RlbHMgd2FudCBoZWF2eVxuICogNjAlIHRpbGUgb3ZlcmxhcCBhbmQgbG9vc2UgbWVyZ2UgdGhyZXNob2xkcyBiZWNhdXNlIHRoZWlyIG9iamVjdHMgYXJlIGxhcmdlXG4gKiBhbmQgdG91Y2gsIHdoaWxlIHRoZSBleWUgbW9kZWxzIHdlcmUgdHJhaW5lZCBvbiBzcGFyc2UsIGRvd25zYW1wbGVkIGZpZWxkcy5cbiAqIEtlZXBpbmcgdGhlbSBoZXJlIG1lYW5zIGEgaG9zdCB0aGF0IGp1c3QgcGlja3MgYSBtb2RlbCBnZXRzIHNhbmUgYmVoYXZpb3VyXG4gKiB3aXRob3V0IGhhdmluZyB0byBrbm93IGFueSBvZiB0aGF0LlxuICpcbiAqIFdlaWdodHMgcG9pbnQgYXQgdGhlIGBtb2RlbC5mcDE2dy5vbm54YCB2YXJpYW50IGRlbGliZXJhdGVseS4gVGhlIGAuZnAxNmBcbiAqIHZhcmlhbnQgYWNjdW11bGF0ZXMgaW4gaGFsZiBwcmVjaXNpb24gb24gV2ViR1BVIGFuZCwgYXQgdGhlIHgtc2NhbGUgdGhlc2VcbiAqIG1vZGVscyB1c2UsIHByb2R1Y2VzIG1hdGVyaWFsbHkgd3JvbmcgYm94ZXM7IGBmcDE2d2Agc3RvcmVzIHdlaWdodHMgaW4gZnAxNlxuICogYW5kIGNvbXB1dGVzIGluIGZwMzIsIHNvIGl0IGlzIGhhbGYgdGhlIGRvd25sb2FkIGF0IGlkZW50aWNhbCBhY2N1cmFjeS5cbiAqXG4gKiBFeHBvcnQgdG9vbGluZzogdGhlIHNpYmxpbmcgYGJyb3dzZXItb25ueC10b29sc2AgcHJvamVjdC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFlvbG9Nb2RlbERlZiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBVUkwgb2YgdGhlIGAub25ueGAgd2VpZ2h0cy4gRW1wdHkgZGlzYWJsZXMgdGhlIG1vZGVsLiAqL1xuICBtb2RlbFVybDogc3RyaW5nO1xuICAvKipcbiAgICogVVJMIG9mIHRoZSBgbW9kZWwuanNvbmAgc2lkZWNhci4gT21pdCB0byB1c2UgYG1vZGVsLmpzb25gIGFsb25nc2lkZSB0aGVcbiAgICogd2VpZ2h0cywgd2hpY2ggaXMgaG93IGV2ZXJ5IHB1Ymxpc2hlZCByZXBvIGlzIGxhaWQgb3V0LlxuICAgKi9cbiAgbWV0YVVybD86IHN0cmluZztcbiAgLyoqIFBlci1tb2RlbCBkZWZhdWx0cywgZnJvbSB0aGUgc2VydmVyIHdvcmtlcidzIG1vZGVsIHRhYmxlLiAqL1xuICBkZWZhdWx0czoge1xuICAgIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgICBpb3VUaHJlc2hvbGQ6IG51bWJlcjtcbiAgICBtZXJnZVRocmVzaG9sZDogbnVtYmVyO1xuICAgIG92ZXJsYXBYOiBudW1iZXI7XG4gICAgb3ZlcmxhcFk6IG51bWJlcjtcbiAgfTtcbn1cblxuY29uc3QgSEYgPSAnaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9CYWxsb245OTknO1xuXG5jb25zdCBFWUVfREVGQVVMVFMgPSB7XG4gIGNvbmZpZGVuY2U6IDAuNixcbiAgaW91VGhyZXNob2xkOiAwLjUsXG4gIG1lcmdlVGhyZXNob2xkOiAwLjMsXG4gIG92ZXJsYXBYOiAwLFxuICBvdmVybGFwWTogMCxcbn07XG5cbi8qKlxuICogVGhlIHJldGluYSBpcyBhbiBlbG9uZ2F0ZWQgYmFuZCBzcGFubmluZyB0aGUgd2hvbGUgZmllbGQsIHNvIGl0IGNyb3NzZXMgdGlsZVxuICogc2VhbXMgd2hlcmV2ZXIgdGhleSBmYWxsLlxuICpcbiAqIFdpdGggbm8gb3ZlcmxhcCB0aGUgdGlsZXMgYnV0dCB0b2dldGhlciBhdCBmaXhlZCBib3VuZGFyaWVzOiBhIHN0cnVjdHVyZVxuICogc2l0dGluZyBhY3Jvc3MgYSBzZWFtIGlzIGN1dCBpbiBoYWxmLCBlYWNoIHRpbGUgc2VlcyBvbmx5IGEgc2xpY2UsIGFuZCB0aGVcbiAqIHNsaWNlIG9mdGVuIGZhaWxzIHRvIGNsZWFyIHRoZSBjb25maWRlbmNlIHRocmVzaG9sZCDigJQgc28gdGhlIG9iamVjdCB2YW5pc2hlc1xuICogZXhhY3RseSB3aGVyZSB0aGUgc2VhbSBsYW5kcy4gT2JzZXJ2ZWQgYXMgbXVsdGktdGhvdXNhbmQtcGl4ZWwgaG9sZXMgaW4gdGhlXG4gKiBtaWRkbGUgb2YgYW4gb3RoZXJ3aXNlIGNvbnRpbnVvdXMgcmV0aW5hLCB3aGljaCBjbG9zZWQgb25jZSBvdmVybGFwIHdhc1xuICogcmFpc2VkLlxuICpcbiAqIEFuIG9iamVjdCBvZiBzaXplIGBzYCBpcyBndWFyYW50ZWVkIHRvIHNpdCB3aG9sbHkgaW5zaWRlIHNvbWUgdGlsZSBvbmx5IHdoZW5cbiAqIHRoZSBvdmVybGFwIGlzIGF0IGxlYXN0IGBzIC8gdGlsZVNpemVgOyBhdCA2MCUgdGhhdCBjb3ZlcnMgYW55dGhpbmcgdXAgdG9cbiAqIH4zMDdweCBvZiBhIDUxMnB4IHRpbGUuIFRoZSBzZXJ2ZXIncyBvd24gdGFibGUgdXNlcyAwIGhlcmUgYW5kIGhhcyB0aGUgc2FtZVxuICogYmxpbmQgc3BvdCDigJQgdGhpcyBkZWxpYmVyYXRlbHkgZGl2ZXJnZXMgZnJvbSBpdC5cbiAqL1xuY29uc3QgUkVUSU5BX0RFRkFVTFRTID0ge1xuICBjb25maWRlbmNlOiAwLjYsXG4gIGlvdVRocmVzaG9sZDogMC41LFxuICAvLyBDcm9zcy10aWxlIG1lcmdpbmcgdXNlcyBpbnRlcnNlY3Rpb24tb3Zlci0qc21hbGxlciosIHNvIGF0IDAuMyBhIGZyYWdtZW50IGlzXG4gIC8vIGRpc2NhcmRlZCBvbmNlIDMwJSBvZiBpdHMgb3duIGFyZWEgaXMgY292ZXJlZCBieSBhIGxhcmdlciBib3gg4oCUIGV2ZW4gd2hlblxuICAvLyBtb3N0IG9mIGl0IGxpZXMgb3V0c2lkZS4gT24gYSBiYW5kIGRldGVjdGVkIGFzIGEgY2hhaW4gb2Ygb3ZlcmxhcHBpbmdcbiAgLy8gZnJhZ21lbnRzIHRoYXQgZGVsZXRlcyB0aGUgbWlkZGxlIG9uZXMuIE1lYXN1cmVkIG9uIG9uZSBzbGlkZTogMC4zIGdhdmUgdHdvXG4gIC8vIGJveGVzIGNvdmVyaW5nIDc1JSBvZiB0aGUgYmFuZCB3aXRoIGEgMzE1MHB4IGhvbGUgdGhyb3VnaCBpdDsgMC44IGdhdmUgZm91clxuICAvLyBib3hlcyBjb3ZlcmluZyAxMDAlIHdpdGggbm8gaG9sZSwgYXQgdGhlIGNvc3Qgb2YgdHdvIG92ZXJsYXBwaW5nIHBhaXJzLlxuICAvLyBNYXRjaGVzIHRoZSB2YWx1ZSBqaXQtdWkgYWxyZWFkeSBzZW5kcyB0aGUgc2VydmVyIGZvciB0aGlzIGNoZWNrcG9pbnQuXG4gIG1lcmdlVGhyZXNob2xkOiAwLjgsXG4gIG92ZXJsYXBYOiA2MCxcbiAgb3ZlcmxhcFk6IDYwLFxufTtcblxuLy8gRW1icnlvcyBhcmUgbGFyZ2UsIHRvdWNoIGVhY2ggb3RoZXIsIGFuZCBhcmUgaW1hZ2VkIGF0IG5hdGl2ZSBzY2FsZSDigJQgaGVuY2Vcbi8vIHRoZSBoZWF2eSBvdmVybGFwIGFuZCB0aGUgZmFyIGxvb3NlciBtZXJnZSB0aHJlc2hvbGRzLlxuY29uc3QgRU1CUllPX0RFRkFVTFRTID0ge1xuICBjb25maWRlbmNlOiAwLjYsXG4gIGlvdVRocmVzaG9sZDogMC44LFxuICBtZXJnZVRocmVzaG9sZDogMC44LFxuICBvdmVybGFwWDogNjAsXG4gIG92ZXJsYXBZOiA2MCxcbn07XG5cbmV4cG9ydCBjb25zdCBZT0xPX01PREVMUzogWW9sb01vZGVsRGVmW10gPSBbXG4gIHtcbiAgICBpZDogJ3lvbG92OHgtc2VnLW9wdGljbmVydmUnLFxuICAgIGxhYmVsOiAnT3B0aWMgbmVydmUnLFxuICAgIG1vZGVsVXJsOiBgJHtIRn0veW9sb3Y4eC1zZWctb3B0aWNuZXJ2ZS1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FWUVfREVGQVVMVFMgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctcmV0aW5hJyxcbiAgICBsYWJlbDogJ1JldGluYScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1yZXRpbmEtb25ueC9yZXNvbHZlL21haW4vbW9kZWwuZnAxNncub25ueGAsXG4gICAgZGVmYXVsdHM6IHsgLi4uUkVUSU5BX0RFRkFVTFRTIH0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ3lvbG92OHgtc2VnLWVtYnJ5by1tMicsXG4gICAgbGFiZWw6ICdFbWJyeW8gKE0yKScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1lbWJyeW8tbTItb25ueC9yZXNvbHZlL21haW4vbW9kZWwuZnAxNncub25ueGAsXG4gICAgZGVmYXVsdHM6IHsgLi4uRU1CUllPX0RFRkFVTFRTIH0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ3lvbG92OHgtc2VnLWVtYnJ5by1tMycsXG4gICAgbGFiZWw6ICdFbWJyeW8gKE0zKScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1lbWJyeW8tbTMtb25ueC9yZXNvbHZlL21haW4vbW9kZWwuZnAxNncub25ueGAsXG4gICAgZGVmYXVsdHM6IHsgLi4uRU1CUllPX0RFRkFVTFRTIH0sXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ZT0xPX01PREVMX0lEID0gJ3lvbG92OHgtc2VnLW9wdGljbmVydmUnO1xuXG5sZXQgZGVmYXVsdE1vZGVsSWQgPSBERUZBVUxUX1lPTE9fTU9ERUxfSUQ7XG5cbi8qKiBMb29rIHVwIGEgbW9kZWwgZGVmaW5pdGlvbiBieSBpZC4gUmV0dXJucyB1bmRlZmluZWQgZm9yIGFuIHVua25vd24gaWQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0WW9sb01vZGVsKGlkOiBzdHJpbmcpOiBZb2xvTW9kZWxEZWYgfCB1bmRlZmluZWQge1xuICByZXR1cm4gWU9MT19NT0RFTFMuZmluZCgobSkgPT4gbS5pZCA9PT0gaWQpO1xufVxuXG4vKiogV2hldGhlciBhIG1vZGVsIGhhcyBhIHVzYWJsZSB3ZWlnaHRzIFVSTCBjb25maWd1cmVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzWW9sb01vZGVsUmVhZHkoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBtID0gZ2V0WW9sb01vZGVsKGlkKTtcbiAgcmV0dXJuICEhbSAmJiBtLm1vZGVsVXJsLnRyaW0oKS5sZW5ndGggPiAwO1xufVxuXG4vKipcbiAqIFJlcG9pbnQgYSBtb2RlbCBhdCBkaWZmZXJlbnQgaG9zdGluZyAoZS5nLiBhIEdDUyBidWNrZXQgb3IgYSBzYW1lLW9yaWdpblxuICogcHJveHkpLiBDYWxsIG9uY2UgYXQgYXBwIGluaXQsIGJlZm9yZSB0aGUgZmlyc3QgcnVuLiBBbiBlbXB0eSBgbW9kZWxVcmxgXG4gKiBkaXNhYmxlcyB0aGUgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRZb2xvTW9kZWxVcmxzKGlkOiBzdHJpbmcsIHVybHM6IHsgbW9kZWxVcmw/OiBzdHJpbmc7IG1ldGFVcmw/OiBzdHJpbmcgfSk6IHZvaWQge1xuICBjb25zdCBtID0gZ2V0WW9sb01vZGVsKGlkKTtcbiAgaWYgKCFtKSByZXR1cm47XG4gIGlmICh1cmxzLm1vZGVsVXJsICE9PSB1bmRlZmluZWQpIG0ubW9kZWxVcmwgPSB1cmxzLm1vZGVsVXJsO1xuICBpZiAodXJscy5tZXRhVXJsICE9PSB1bmRlZmluZWQpIG0ubWV0YVVybCA9IHVybHMubWV0YVVybDtcbn1cblxuLyoqIENoYW5nZSB3aGljaCBtb2RlbCBydW5zIHdoZW4gYSBjYWxsZXIgZG9lcyBub3QgbmFtZSBvbmUuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdFlvbG9Nb2RlbChpZDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChnZXRZb2xvTW9kZWwoaWQpKSBkZWZhdWx0TW9kZWxJZCA9IGlkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFlvbG9Nb2RlbElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBkZWZhdWx0TW9kZWxJZDtcbn1cbiJdfQ==
@@ -425,6 +425,36 @@ const EYE_DEFAULTS = {
425
425
  overlapX: 0,
426
426
  overlapY: 0,
427
427
  };
428
+ /**
429
+ * The retina is an elongated band spanning the whole field, so it crosses tile
430
+ * seams wherever they fall.
431
+ *
432
+ * With no overlap the tiles butt together at fixed boundaries: a structure
433
+ * sitting across a seam is cut in half, each tile sees only a slice, and the
434
+ * slice often fails to clear the confidence threshold — so the object vanishes
435
+ * exactly where the seam lands. Observed as multi-thousand-pixel holes in the
436
+ * middle of an otherwise continuous retina, which closed once overlap was
437
+ * raised.
438
+ *
439
+ * An object of size `s` is guaranteed to sit wholly inside some tile only when
440
+ * the overlap is at least `s / tileSize`; at 60% that covers anything up to
441
+ * ~307px of a 512px tile. The server's own table uses 0 here and has the same
442
+ * blind spot — this deliberately diverges from it.
443
+ */
444
+ const RETINA_DEFAULTS = {
445
+ confidence: 0.6,
446
+ iouThreshold: 0.5,
447
+ // Cross-tile merging uses intersection-over-*smaller*, so at 0.3 a fragment is
448
+ // discarded once 30% of its own area is covered by a larger box — even when
449
+ // most of it lies outside. On a band detected as a chain of overlapping
450
+ // fragments that deletes the middle ones. Measured on one slide: 0.3 gave two
451
+ // boxes covering 75% of the band with a 3150px hole through it; 0.8 gave four
452
+ // boxes covering 100% with no hole, at the cost of two overlapping pairs.
453
+ // Matches the value jit-ui already sends the server for this checkpoint.
454
+ mergeThreshold: 0.8,
455
+ overlapX: 60,
456
+ overlapY: 60,
457
+ };
428
458
  // Embryos are large, touch each other, and are imaged at native scale — hence
429
459
  // the heavy overlap and the far looser merge thresholds.
430
460
  const EMBRYO_DEFAULTS = {
@@ -445,7 +475,7 @@ const YOLO_MODELS = [
445
475
  id: 'yolov8x-seg-retina',
446
476
  label: 'Retina',
447
477
  modelUrl: `${HF}/yolov8x-seg-retina-onnx/resolve/main/model.fp16w.onnx`,
448
- defaults: { ...EYE_DEFAULTS },
478
+ defaults: { ...RETINA_DEFAULTS },
449
479
  },
450
480
  {
451
481
  id: 'yolov8x-seg-embryo-m2',