Merge PR #1963: M12: Describe selections from SAM 3's semantic mask: sure inside, no lines between instances

This commit is contained in:
aiongg committed 2026-10-21 14:49:23 +00:00
commit 5e5f1259ad
4 files changed
+102 -11

No files matched your search

+5 -2
View File
@@ -16,7 +16,10 @@ In the Masking panel (M):
to leave it out. Clicks show as green (include) and red (leave out) dots.
- **Describe**: type what to select — `sky`, `trees`, `the red car` — and press Return. Every
instance the model finds (score above 0.5) joins the mask; if nothing matches, nothing is
created and you are told so.
created and you are told so. Around what it found, the mask follows the model's semantic mask
for the phrase, which is sure inside and runs on where two instances touch (the instances'
own masks alone left a sky or a net about 70–90 % selected and a thin line between two people
side by side).
- Several things at once: `car, road` (comma-separated) selects each and merges them.
- **+ / −** under the selected mask (and the Add / Subtract / Intersect menus) combine
selections: Describe `car`, click the mask, + ▸ Describe… `road`; − ▸ Describe… `people` takes
@@ -214,7 +217,7 @@ wait and return the result (when built with the `sam` feature; the default CLI h
`NOTICE` — the ported files say so and that they were modified): the 32-layer ViT backbone
with 2-D RoPE and windowed attention, the feature pyramids, the SAM 2-style prompt encoder and
two-way mask decoder for clicks, and the CLIP text encoder, DETR encoder/decoder (box
relative-position bias, presence token) and pixel decoder for text. The CLIP tokenizer is a
relative-position bias, presence token), pixel decoder and semantic head for text. The CLIP tokenizer is a
small BPE in `tokenizer.rs`. The downloader (original code) is the `lightcraft-fetch` crate, shared by any model that is downloaded; `fetch/` here says what SAM 3 needs.
- candle is pinned at 0.9.2: later releases make `candle-core` depend on `tokenizers` with the
Oniguruma C library, and the product is pure Rust. Weights are read with positional reads (no