Anyone who has trained an echo model on one public dataset and tested it on another has probably wondered how much of the gap comes from the hearts and how much from the scanner software. The frame you see on an ultrasound console is not the raw scan line data. The vendor applies its own filtering, brightness curves and scan conversion, and most echocardiography datasets ship those processed frames with little record of what was done to them. In arXiv:2611.00184, Elias Stenhede and Arian Ranjbar (Medical Technology and E-Health, Akershus University Hospital, Norway) train a small network to reproduce that vendor look, and then use it to measure what a change in processing does to a segmentation model. The code calls it EchoAppearance.
What EchoAppearance does
The input is native beamspace B-mode: the polar samples along each beam, before scan conversion, together with the sector geometry. The output is a frame that looks like what a GE Vivid E95 Ultra Edition would show on its screen for that recording. The network is a learned stand-in for one vendor’s display processing.
The training data comes from EchoXFlow, a beamspace echo dataset the same group released from routine exams at Akershus, all acquired with the GE Vivid E95 Ultra Edition and a 4Vc phased-array probe. Each recording carries both the beamspace B-mode and a JPEG of the GE display for its first frame. That pair is the training signal.
How it works
Pixel-wise learning only works if input and target line up to well under a pixel, so the authors first register every recording to its display frame. They fit the sector and measure local shifts with upsampled Fourier correlation, and keep a recording only if every patch shift stays below 0.25 px and the fitted sector matches the stored geometry. Colour flow recordings and doubtful frame matches are dropped. Out of 13,389 eligible B-mode recordings, 8,406 from 605 patients pass, split by patient into training, validation and test.
The model itself is tiny. A residual CNN with 32 channels and six blocks of 3×3 convolutions runs on the native beam frame. A fixed bilinear resampling then maps its output onto the display grid, and a small residual head with 16 channels and one block finishes the job there. The whole thing has about 117k parameters, and it starts out as the identity, so before training it behaves like plain scan conversion. The loss is L1 on the display grid.
The baseline shows where most of the gap sits. The “optimal pointwise map” assigns each input grey level the median target value seen in training, which is the best any single brightness curve can do. Most of the difference between raw scan conversion and the GE display turns out to be that brightness curve. The CNN goes further: its test error is 43% lower than the best possible curve, because it also changes local texture, which a curve cannot do. A “Cartesian twin” with the same layers applied after scan conversion does slightly worse than running in beamspace.
It is also cheap. On a 16-thread CPU the beamspace model processes 22 frames per second in batches of 32, and 665 on an RTX 5090.
What it hangs on a scan
There is no overlay here. You get a new B-mode frame with the same geometry. In the paper’s figure of five test recordings, picked at fixed error quantiles, the filtered frames have darker chambers and a different speckle texture than the scan-converted input, which looks flatter and greyer next to them. The zoomed insets show the texture change best. On five patients from the public CAMUS dataset, which the network never saw in training, filtering again darkens the chambers and changes tissue texture.
Why a segmentation team should care
The second half of the paper is the part I would show anyone building echo models. The authors train MViT-v2-S segmentation models on unfiltered and on filtered inputs, with identical clips and settings, and evaluate each on both versions. On EchoXFlow and on CAMUS, matched training and evaluation give almost the same Dice either way. The trouble starts with a mismatch. A model trained on unfiltered frames and evaluated on filtered ones does worst for every class, and on EchoXFlow the myocardium drops by 11.4 Dice points. The reverse mismatch hurts much less. CAMUS shows the same direction with smaller and not always significant changes.
The authors suggest filtering as augmentation when your evaluation data are filtered or their processing is unknown. The processing chain is part of the data, and a model can depend on it without anyone noticing.
What a viewer or clinic shop can take from it
- Stress-test echo models against processing. If you ship a cardiac segmentation model, run your validation set through this filter and through raw scan conversion and compare. A large gap tells you the model depends on display processing that a different site or vendor may not apply.
- Augmentation for mixed sources. When training data come from several vendors or from exports with unknown processing, randomly applying an appearance filter is a cheap way to widen the input distribution.
- Record the processing. When you build datasets from DICOM exports, store what you know about vendor, preset and whether frames are display images or pre-scan-conversion data. This paper is a good argument for that field in your metadata table.
- Illustrations and teaching. The README lists “prettier illustrations of ultrasound data” as a use case. In a viewer, a beamspace-to-display filter could make raw research data look closer to what clinicians are used to reading, as long as it is labelled as a learned approximation.
Where it falls short
- One scanner, one probe. Everything is learned from a GE Vivid E95 Ultra Edition with a 4Vc probe. It reproduces that look and nothing else, so it is not a general “vendor style” model.
- The targets are lossy JPEGs of a single frame per recording, so the network learns from compressed, static targets, even though it is applied to whole cine loops.
- It expects beamspace input plus the sector geometry. CAMUS ships scan-converted images, so the authors’ CAMUS script reads a polar-resampled copy (CAMUS-beamspace on Hugging Face, which I could not open without an account) with a fitted fan. On an ordinary scan-converted DICOM export you need that fan fit and resampling step before the filter can run.
- The segmentation study covers LV cavity, myocardium and (on CAMUS) left atrium with one architecture. Other tasks, such as probe guidance or foundation model training, are listed as future work.
- It reproduces appearance. The paper does not claim the filtered frames are better for reading and reports no clinical reader study.
Code, weights and license
Code and pretrained weights are on GitHub at Ahus-AIM/EchoAppearance. The repository includes the checkpoint (116,530 parameters per the model card), a 32-frame example recording, a quick-start script that shows input and filtered frames side by side, and the segmentation experiments on EchoXFlow and CAMUS. Code, weights, example data and figures are all under CC BY-NC-SA 4.0, because the model was trained on EchoXFlow, which carries the same license on Hugging Face at Ahus-AIM/EchoXFlow. That rules out commercial use without a separate agreement, so for a product team this is a research and evaluation tool. The authors ask that you cite both the EchoAppearance preprint and the EchoXFlow paper.
Paper: arXiv:2611.00184 · Code and weights: github.com/Ahus-AIM/EchoAppearance (CC BY-NC-SA 4.0) · Data: huggingface.co/datasets/Ahus-AIM/EchoXFlow (CC BY-NC-SA 4.0)