FrothSeg — Flotation-Froth Instance Segmentation Lab (Browser ML)
A browser-native lab for instance segmentation of flotation froth: it delineates individual bubbles in a froth image, entirely client-side via ONNX, and compares a ladder of seven classical methods against a real published research model. That model, LamellaStar, is a four-head net shipped as a three-seed logit-mean ensemble (N1: mean AP 0.5186, AP50 0.8279, PQ 0.7359), with SAM2 and Cellpose-SAM as offline teachers and a distilled mask head for the browser. The honest core is the data situation, stated openly: no real froth images exist publicly (the search is recorded as a null, Roboflow dropped), so the froth cases are synthetic and BBBC038 (64 real dense-touching images, CC0) serves as an adjacent-domain transfer lane that the lab explicitly says does NOT clear the froth blocker. The study even refuted its own hypothesis: the froth ranking is generator-specific and the model drops on real transfer.
Business Context
Froth imaging is a real lever in flotation control, and a per-bubble segmenter is the front end for bubble-size and load analytics. The value a portfolio piece like this adds is not a suspiciously high accuracy number, it is an honest map of what froth CV can and cannot do today: which classical method is a solid baseline, what a distilled learned model buys, and, crucially, that the field is blocked by the absence of public real froth data, a fact most vendors would hide behind a synthetic benchmark. Knowing the blocker is worth more to a decision-maker than a flattering synthetic score.
Strategic Value
FrothSeg is an honest browser-ML instance-segmentation lab that ships a real published model (LamellaStar, a three-seed ensemble with SAM2/Cellpose-SAM teachers) and refuses to fake the thing the field lacks: it documents that no public real froth dataset exists, records the data search as a null, and uses an adjacent real domain (BBBC038) as a transfer probe it explicitly says does not clear the froth blocker. It even refuted its own hypothesis, publishing that the synthetic ranking is generator-specific. It is the honest-negative-results discipline applied to a data-starved vision problem: a real model, a real classical ladder, real transfer numbers, and a loudly stated limit, all running client-side.
The Challenge
Flotation froth carries information a plant operator wants: bubble size distribution, coalescence, load, all readable from an image of the cell surface. Turning that image into per-bubble instances is the hard computer-vision problem, dense, touching, translucent objects with no crisp edges. And the field has a blocker most tools quietly ignore: there is essentially no public labelled real froth dataset, so anyone claiming a trained froth segmenter is either using private data or training on synthetic images and hoping it transfers. The honest question is not "can it segment a synthetic bubble" but "does any of this survive contact with real imagery, and if there is no real froth data, say so".
Our Approach
FrothSeg runs instance segmentation of froth entirely in the browser (ONNX inference, no server) and compares two tiers on the same cases. The classical tier is seven methods (watershed and related morphology-based delineators). The learned tier is LamellaStar, a real four-head research model published as a three-seed logit-mean ensemble (its top configuration, N1, scores mean AP 0.5186, AP50 0.8279, panoptic quality 0.7359), distilled to a compact mask head for client-side inference, with SAM2 and Cellpose-SAM used as offline teachers (checkpoints checksum-recorded, no teacher weights redistributed). On data it is deliberately, loudly honest: no real froth images exist publicly, and the repo records the search as a null result (including dropping Roboflow), so the froth cases are synthetic. To probe real-world behaviour without real froth, it adopts BBBC038 (64 real photographs of dense touching instances, CC0) as an adjacent-domain transfer lane, and states plainly that an adjacent real domain does not clear the froth blocker. The transfer study refuted its own hypothesis: the synthetic froth ranking is generator-specific and the model degrades on real transfer, and that null is published rather than hidden.
Key Performance Indicators
| KPI | Baseline | Result | Impact |
|---|---|---|---|
| The data blocker, stated | Claim a trained froth segmenter and hide that there is no public real froth data | Openly records that no public real froth dataset exists (search logged as a null, Roboflow dropped); froth cases are synthetic and labelled as such | You know the real blocker, not a synthetic score hiding it |
| A real published model | A vague learned baseline | LamellaStar: four-head net as a three-seed logit-mean ensemble (N1 mean AP 0.5186, AP50 0.8279, PQ 0.7359), SAM2/Cellpose-SAM teachers, distilled mask head for the browser | A concrete, reproducible model with real numbers |
| Self-refuted hypothesis | Report only the wins | The transfer study refuted itself: the synthetic froth ranking is generator-specific and the model drops on real (BBBC038) transfer, published not hidden | The honest negative result is the deliverable |
Architecture
frothseg pipeline
Technology Stack
Reel
A short, composed reel of the product.

In action
A short tour of the live app — the real interface, recorded from the deployed site.

Application Screenshots

