Results

Five backbones, two protocols, one ensemble

We score the same frozen-feature estimator two ways. Image-level sampling asks how well the model reads the angle across the full population of orientations the augmentation spans; patient-level sampling holds out whole volunteers and asks how well it generalizes to an unseen person. The two answers differ by roughly threefold, and that gap is the result.

The headline is a tuned, stacked ensemble of five frozen ImageNet backbones: 2.79% MAPE / 1.96° MAE / R² 0.995 image-level, and 8.53% MAPE / 5.93° MAE / R² 0.952 patient-level. Below we build to that number from a faithful replication of the EMBC 2019 setup, tune each protocol to its own best, and then take apart what moves the error: the sampling lens, head tuning, ensembling, the choice of backbone, and a classical geometric baseline.

Faithful replication

We first reproduce the EMBC 2019 regime: frozen ImageNet backbones with the orientation-preserving grid-pooling head, scored under image-level sampling on the rotation-augmented corpus, with no fine-tuning.

Faithful replication under image-level sampling: frozen ImageNet backbones with the grid-pooling head, no fine-tuning.
Backbone (frozen)MAE (°)RMSE (°)MAPE (%)
DenseNet2013.774.755.840.982
InceptionV38.3610.4411.700.911
Xception7.9111.2012.000.898
ResNet508.9711.6212.750.890
VGG1911.6717.7718.010.743

Frozen DenseNet201 reaches 5.84% MAPE / 3.77° MAE, reproducing the regime of the paper’s best single model (≈ 2.87° MAE / 4.03% MAPE) within tolerance and with no fine-tuning. The per-backbone ranking differs from the 2019 study, which reported VGG19 as strongest: with a shared head, pooling, and training budget across backbones, DenseNet201 lands first and VGG19 last here. The replication reproduces the single-digit-degree regime, not the original ordering.

Why this is not yet a real-world accuracy number This table is image-level sampling on the rotation-augmented corpus, where the 2,100 examples are coupled copies of 84 base images, not 2,100 independent observations. It measures how well the model reads the angle across orientations, not how it generalizes to an unseen patient; for that, read the patient-level column below.

The best estimator under each protocol

Each protocol is tuned to its own best head and optimizer configuration via Optuna TPE (head depth and width, dropout, L2, BatchNorm, learning rate, batch size, patience), scored on that protocol’s five-fold cross-validation over cached frozen features; a single feature extraction per backbone serves both protocols. Per-backbone rows are five-fold CV means; the ensemble rows are pooled out-of-fold (OOF) over the five tuned models.

Doppler-angle estimation under two sampling protocols, each Optuna-tuned to its own best configuration.
Model (Optuna-tuned)Image MAE°Image MAPE%Image R²Patient MAE°Patient MAPE%Patient R²
DenseNet2013.004.030.9888.6210.800.886
ResNet503.644.840.9819.7913.300.842
VGG194.225.790.97610.2114.970.871
InceptionV34.686.590.97010.6614.660.856
Xception4.756.590.97010.8814.760.851
Ensemble (mean)2.093.030.9946.899.890.932
Ensemble (stacked)1.962.790.9955.938.530.952

The member rows and the ensemble rows aggregate differently: member rows are per-fold CV means, while ensemble rows are pooled OOF. Aggregated the same pooled-OOF way, the single tuned DenseNet201 is 7.80° MAE / 10.14% MAPE patient-level, the like-for-like predecessor of the ensemble rows; that is the row the ensembling gain should be read against.

The scatter below pairs the stacked ensemble’s predictions against the reference angle, image by image.

Five scatter panels, one per backbone (DenseNet201, InceptionV3, Xception, ResNet50, VGG19), each plotting predicted against reference Doppler angle with points clustered along the identity line; the interactive version overlays the stacked ensemble and its conformal band.
Figure 1. Predicted versus reference angle, per backbone (the interactive version overlays the stacked ensemble and its conformal band). Points hug the identity line across the full angular range; the residual scatter widens modestly at the extremes.

Two protocols, two questions

Holding the frozen grid-pooling model fixed and changing only the sampling protocol, every backbone loses accuracy under the stricter cross-subject split, by margins that separate the backbones cleanly.

Per-backbone frozen grid-pooling accuracy under image-level and patient-level five-fold cross-validation.
Backbone (frozen)Image MAPE %Image R²Patient MAPE %Patient R²
DenseNet2014.580.98712.590.869
ResNet506.900.96416.120.738
Xception7.140.96717.110.784
InceptionV37.850.95917.290.743
VGG198.640.94220.600.626

The tuned stacked ensemble reaches 2.79% MAPE / 1.96° MAE under image-level sampling and 8.53% / 5.93° under patient-level, roughly a 3× MAPE spread. This is the expected signature of a small cohort (~10 volunteers): the model interpolates the augmented-image manifold very well, while cross-subject generalization is intrinsically harder and carries genuine per-fold variance. DenseNet201 holds both the smallest protocol gap and the highest patient-level R² (0.869), which is why it is carried forward; the ordering among the weaker four shifts with the lens, while the choice of lead backbone does not.

Grouped bar chart of MAPE per backbone under image-level and patient-level sampling; every backbone's patient-level bar is roughly double its image-level bar, with DenseNet201 lowest in both.
Figure 2. Image-level versus patient-level MAPE per backbone. Patient-level error is roughly double image-level for every backbone, and the spread measures how much within-population accuracy is anatomy-specific rather than a defect of either protocol.

The same protocol gap shows up as a function of the true angle: error grows toward the extreme insonation angles, where the geometry is least forgiving.

Plot of absolute angle error against the reference angle; mean error per ten-degree bin is smallest in the mid-angle band and rises toward the extreme reference angles at both ends.
Figure 3. Error as a function of the reference angle. The estimator is most accurate near the center of the augmented range and degrades toward the extreme orientations.

Frozen versus tuned

Tuning the head helps under both protocols. For DenseNet201, like-for-like under five-fold CV against the grid-pooling frozen baseline: image-level 4.58% → 4.03% MAPE and patient-level 12.59% → 10.80%. The gains are modest per model but consistent, and tuning makes the five members well-calibrated enough that a plain mean ensemble works, where an untuned mean ensemble was effectively useless.

Optuna tuning-history plot showing validation MAE decreasing across trials as the search converges on better head configurations.
Figure 4. Optuna tuning history. Validation error falls and then plateaus as the TPE search converges; the tuning is in-sample, so the per-model gains are read against the frozen baseline rather than as held-out improvements.

Ensembling is the biggest lever

Ensembling moves the error more than any single other choice. Best single model to stacked ensemble: image-level 4.03% → 2.79% MAPE (3.00° → 1.96° MAE) and patient-level 10.80% → 8.53% MAPE (8.62° → 5.93° MAE). Read against the like-for-like pooled-OOF predecessor, the single tuned DenseNet201 at 7.80° MAE / 10.14% MAPE patient-level, the genuine ensembling gain is about 1.9°.

The five backbones make partly independent errors, so combining them — a plain mean, or a Ridge stacker over OOF predictions — recovers accuracy a single model cannot. Under the honest patient-level protocol, the tuned stacked ensemble is the first configuration to break below 10% MAPE (8.53% pooled OOF), improving on the untuned ensemble.

Stacking on out-of-fold predictions can be mildly optimistic The ensemble rows are pooled out-of-fold predictions, and the Ridge stacker is fit on those same OOF predictions. This reuse can make the stacked number mildly optimistic relative to a fully nested protocol, so the 8.53% patient-level figure is best read as an upper-bound-leaning estimate rather than a guaranteed held-out accuracy.
Five per-backbone scatter panels of predicted against reference angle, points lying on or near the identity diagonal across the full angular range.
Figure 5. Per-backbone predicted-versus-reference scatter. Combining five partly independent estimators tightens the scatter that a single model leaves on the table.

Newer is not better

A frozen bake-off under patient five-fold CV (grid pooling, untuned heads) spans the classic ImageNet encoders and the modern ConvNeXt and EfficientNet families. The classic backbones clearly beat the modern ones.

Frozen backbone bake-off by family, patient five-fold cross-validation, grid pooling, untuned heads.
TierBackbonesMAPE (%), patient 5-fold
Classic ImageNetDenseNet201 (best, 14.13), ResNet50, VGG19, InceptionV3, Xception~14
ConvNeXtConvNeXt-Base (15.65), ConvNeXt-Tiny (16.07)~16
EfficientNet / V2B0–B3 and V2-B0–B3 families~17–21

Within the classic group the differences sit inside the per-fold standard deviation; across families, the older encoders win. Every row in this bake-off shares one feature-extraction batch, so DenseNet201’s 14.13% here is the like-for-like point against the modern backbones, whereas its replication-extraction value above is 12.59%. With only 84 base images, larger and ImageNet-stronger encoders have nothing to grip. DenseNet201 — the best R², the replication winner, and the strongest after tuning — is carried forward.

Bar chart of patient five-fold MAPE across backbone families; DenseNet201 is lowest, the ConvNeXt pair is in the middle, and the EfficientNet and EfficientNetV2 families are highest, with error bars spanning the per-fold standard deviation.
Figure 6. Backbone bake-off, patient five-fold MAPE. The classic ImageNet encoders lead the modern ConvNeXt and EfficientNet families; the interactive version of this chart lives on the Method page.
One backbone was extracted on a different runtime ConvNeXt fails to run on TF-Metal because of an XLA op-support gap, so it was extracted on JAX-CPU. The bake-off otherwise shares a single feature-extraction batch per row, which is why DenseNet201's bake-off value (14.13%) and its replication-extraction value (12.59%) differ.

Learned versus classical, and fusion

A purely classical, image-only structure-tensor angle prior reaches 3.16° MAE on the narrow base-angle band, and a circular fusion of the learned and classical estimates reaches 2.72° MAE, improving on the classical prior and on the learned model’s base-band error. The learned model and a hand-crafted geometric cue capture partly complementary information.

The fusion number is in-sample, on a narrow band of angles The 3.16° structure-tensor and 2.72° fusion figures are computed in-sample on the narrow band of base angles, not on a held-out split, and they are recomputed at runtime rather than stored in results/. They show that classical geometry carries complementary signal, not that fusion is a validated held-out improvement.