hurricane.johnazer.com John Azer, October 2026
Tropical cyclone intensity from satellite imagery

Ten convolutional networks, averaged, estimate a hurricane's maximum sustained wind from a single infrared satellite frame.

Trained on 2,081 storm-centered crops from 19 Atlantic storms between 2018 and 2024, after removing frames with missing data, labeled against the NOAA best track, and tested once on the 2025 season.

9.78 kt average error, 10-model ensemble
12.13 kt average error, first single model
−15.7 kt bias at category 5
Infrared satellite frame of a disorganized tropical storm, scattered dark convective cells with no clear center.
7 Oct, 35 kt
Infrared satellite frame of a strengthening hurricane, banding wrapped around a small forming eye.
10 Oct, 112 kt
Infrared satellite frame of a symmetric hurricane at landfall, with a small round eye inside a compact eyewall.
10 Oct, 140 kt

Hurricane Michael over roughly three days in October 2018, from a disorganized tropical storm to a category 5 at landfall. Every frame is centered on the best-track position and shown exactly as the network receives it, at 224 by 224 pixels. The middle label is interpolated between six-hourly fixes; the outer two are true fixes.

Method

  1. Prepare storm records

    Parse the NOAA HURDAT2 best track, drop entries the record marks extratropical, and interpolate the six-hourly fixes to hourly.

  2. Match satellite scans

    Match each position to the nearest GOES-16 ABI band 13 scan (GOES-19 for the 2025 test), accepting a time offset of up to ten minutes and logging it.

  3. Crop storm imagery

    Cut a 600 kilometer box around the storm center, working in the satellite's own fixed-grid projection so the box stays square on the ground.

  4. Normalize and regress

    Clamp brightness temperature to 180–320 K, resize to 224 by 224, and regress wind speed directly with a ResNet-18.

  5. Split by storm

    Split the data by storm rather than by frame. Hourly frames of the same storm are near-duplicates, so a random split would leak the answer.

  6. Train ten, average them

    Train the same network ten times with different random seeds, keep each run's checkpoint with the lowest validation error, and average the ten predictions with equal weight. The ten are then frozen by hash.

Results

The ensemble was frozen, then run once on the six Atlantic storms of 2025: Dexter, Erin, Gabrielle, Humberto, Imelda and Melissa. Nothing in the work had touched them. That is 1,045 frames, all from GOES-19, a newer satellite than any training frame. Mean absolute error is 9.78 knots; the original single model scores 12.13 on the same frames.

CategoryFramesMAE (kt)Bias (kt)Original MAE
Depression227.59+7.598.28
Storm4568.58+3.6210.84
Category 11669.42−6.2910.01
Category 21298.78−6.4213.28
Category 38415.29−7.9017.84
Category 41379.85−6.2512.69
Category 55115.81−15.7518.43

The 2025 test, by Saffir–Simpson category of the best-track wind. Bias is the mean signed error, so a negative figure means the ensemble guessed low. The last column is the original single model on the same frames; the ensemble is better or equal in every category.

StormFramesMAE (kt)Original MAE
Dexter736.138.29
Erin2779.8813.66
Gabrielle1858.2410.37
Humberto16311.7313.43
Imelda1038.9110.71
Melissa24410.9812.61

The same test, storm by storm. The spread between storms, 6.1 to 11.7 knots, is larger than the 1.2-knot change from the development storms, so six storms from one season are a small sample.

Scatter plot of the ensemble's predicted against best-track wind speed for 1,752 frames from nine storms held out during development, clustered around the one-to-one line and falling below it at the highest winds, with the line labeled perfect agreement.

The nine storms held out during development (2020–2024, GOES-16), not the 2025 test: 1,752 frames, each predicted by the ensemble. The diagonal is perfect agreement; the 315 true best-track fixes are filled and interpolated labels are drawn open. Best-track winds come in five-knot steps, which is why the points stand in columns. The ensemble's error here is 8.57 knots, but these storms helped choose the training setup, so that figure is optimistic; the 2025 number above is the one to quote.

Where it fails

The strongest storms

The ensemble underestimates category 5 by about 16 knots on 2025 and 19 on the development storms, and averaging ten networks cannot fix that: a shared bias survives the average. Melissa peaked at 165 knots, above anything in training (160), and her eight frames above 160 knots got 133 to 143. That looks like a ceiling, though it can't be separated from the general category 5 shortfall.

Weak systems and the middle

At the other end it reads weak systems high, by about eight knots for depressions and four for tropical storms in 2025. Category 3 is the worst band below category 5, at 15.3 knots.

A new satellite, or new storms?

Error on 2025 is 1.2 knots higher than on the development storms. Every 2025 frame comes from GOES-19 and every training frame from older storms on GOES-16, so the test can't say how much of that is the instrument and how much is the storms.

What changed in phase 2

The old headline was a lucky run

The first version of this page quoted 9.00 knots from a single training run. Rerunning the same recipe 33 times with different random seeds gave a mean of 10.05 knots on the same held-out storms, and only one rerun in 33 did as well. Since then every result is an ensemble or a comparison across many seeds.

More distinct storms: the clean win

Training on 19 storms instead of 9 lowered error on the nine held-out development storms by 1.6 knots and cut the high-end underestimate by 5.4 knots, passing all three tests set in advance. The larger set also had more frames, so “more storms” and “more data” can't be fully separated.

More storms again: no difference

Going further, from 19 storms to 50 at the same training budget, made no significant difference (0.53 knots worse, not significant), and those runs were flagged as under-trained, so the honest reading is “not at this budget”.

Longer training helps

Training four times longer lowered error on the development storms by about one knot (0.99) across 20 paired seeds. A new ten-network ensemble trained that way is frozen and waits for its own one-time test on the 2026–2027 storms.

Open problem: the high end

No change so far has removed the category 5 shortfall, about 19 knots low on the development storms. Storms stronger than anything in training, like Melissa, make it worse.

In progress: the East Pacific

Work is under way on adding East Pacific storms to training. A separate East Pacific test set stays sealed under a protocol fixed in advance.

How the work is checked

Each phase-2 experiment's design, analysis script and pass thresholds are written down and committed before any training run, and the outcome is reported as the script prints it. A separate AI review session, instructed to break each design, recomputes the results before they are accepted.

What the original model looks at

This section shows the original single model (best_model.pt), not the ensemble.

Grad-CAM shows which regions pushed the model's estimate up. The network's last convolutional layer is the final place where what it detected still has a location attached, so weighting those feature maps by the gradient of the predicted wind speed shows which regions raised the estimate. That layer is a 7 by 7 grid before it is stretched back over the frame. Each cell covers roughly 85 kilometers of the 600 kilometer crop, so what follows shows regions, not fine structure.

Across 454 frames above 96 knots from four storms the network never trained on, attribution overlaps the coldest cloud tops far more than chance: a mean correlation near +0.57, with almost no frame negative. Below hurricane strength the same measurement is noisy, with no reliable direction. The model attends most clearly at the intensities where it is least accurate.

Infrared satellite frame of Hurricane Ian near peak intensity, overlaid with a Grad-CAM wash concentrated over the central dense overcast.
Ian, 28 Sep 2022,
140 kt
Infrared satellite frame of Hurricane Beryl near peak intensity, overlaid with a Grad-CAM wash concentrated over the central dense overcast.
Beryl, 2 Jul 2024,
145 kt
Infrared satellite frame of Hurricane Lee near peak intensity, overlaid with a Grad-CAM wash concentrated over the central dense overcast.
Lee, 8 Sep 2023,
145 kt
Infrared satellite frame of Hurricane Sam near peak intensity, overlaid with a Grad-CAM wash concentrated over the central dense overcast.
Sam, 26 Sep 2021,
135 kt
Color scale: plasma, transparent below a CAM value of 0.5, ramping through rose to bright yellow at 1.0.

Original model (best_model.pt). Four different storms near peak intensity, all held out of its training. In each, attribution concentrates on the central deep convection, a filled region over the dense overcast rather than a ring on the eyewall. The overlay is transparent below a threshold, so plain gray means attribution there was below it.

Infrared satellite frame of Hurricane Ian at 30 knots, overlaid with a Grad-CAM wash away from the storm's center.
Ian, 22 Sep 2022,
30 kt

Here the attributed region sits in a corner of the frame, away from the storm's most organized convection. That placement isn't consistent across weak-intensity frames as a group.

What the ensemble looks at

This section shows the ten-network ensemble behind the headline numbers, measured the same way as the original model above.

Each of the ten networks gets its own Grad-CAM map, scaled from 0 to 1 as above. The ensemble's map is their average, rescaled the same way. The frames are the same 454 frames above 96 knots from the same four storms. None of the ten networks trained on these storms, but they are held-out development storms, not a test.

The ensemble's attribution also overlaps the coldest cloud tops far more than chance. Its mean correlation is +0.51, lower than the original model's +0.57; the medians are +0.53 and +0.61. Six of the 454 frames are negative, against three for the original model.

The ensemble's maps are tighter. In the median frame, the region above the overlay's threshold covers 24% of the frame, against 40% for the original model, and its peak sits closer to the coldest pixel.

The same Ian frame with the ensemble's Grad-CAM wash, a compact region over the center of the dense overcast.
Ian, 28 Sep 2022,
140 kt
The same Beryl frame with the ensemble's Grad-CAM wash, a compact region over the center of the dense overcast.
Beryl, 2 Jul 2024,
145 kt
The same Lee frame with the ensemble's Grad-CAM wash, a compact region over the center of the dense overcast.
Lee, 8 Sep 2023,
145 kt
The same Sam frame with the ensemble's Grad-CAM wash, a compact region over the center of the dense overcast.
Sam, 26 Sep 2021,
135 kt
Color scale: plasma, transparent below a CAM value of 0.5, ramping through rose to bright yellow at 1.0.

Ensemble of ten networks. These are the same four frames as above, with the same color scale and threshold. Attribution again sits on the central deep convection, in a smaller region than the original model's.