Contrails cannot exist without flights: physics-informed contrail detection, tracking, and attribution in ground-based camera video
Abstract. A contrail cannot exist without a flight. We exploit this constraint by inverting the usual detect-then-attribute pipeline: instead of finding contrails in an image and asking which flight made them, we start from each flight and ask whether its contrail is visible. Aircraft positions from surveillance data and reanalysis wind fields feed a contrail lifecycle model that predicts where each flight's contrail should appear in a ground-based camera image, not at the aircraft's position but where the wind has carried the plume. These predictions become spatial prompts that guide a video segmentation model to either outline the contrail or reject the prompt when nothing is visible. Because each prompt belongs to exactly one flight, the output mask carries the flight's identity by construction, and tracking across frames requires no re-identification. We compare prompt encodings of increasing physical richness: binary presence, age-weighted freshness, and suppression of competing flights. On the Ground Visible Camera Contrail Sequences dataset, the richest design improves mean average precision, averaged over intersection-over-union matching thresholds from 0.25 to 0.75, by 25 % over the binary baseline, reaches 96.2 % attribution precision, rejects empty prompts with an area under the receiver operating characteristic curve of 0.97, and maintains detection across roughly three-quarters of a contrail's visible lifetime. A video-level cluster bootstrap confirms the attribution and segmentation-quality gains, and is equally clear that the richer prompts do not find more contrails: detection coverage is statistically indistinguishable from the binary baseline. What richer prompts buy is delineation and identity, not discovery.
This paper reports on the development of an algorithm for automatically detecting and attributing contrails on the GVCCS ground-camera dataset. The GVCCS dataset is one of the highest-quality ground camera datasets available, so any algorithm that works well on it is an exciting result. However the authors did not just adapt an existing algorithm to the GVCCS cameras, rather they developed an entirely new algorithm based on the SAM2 model and prompts based on where flights are expected to appear. This is really novel. In addition to allowing the creation of a high-impact contrail dataset, these methods are potentially broadly applicable to other contrail detection platforms (e.g. geostationary satellites) and in fact their modifications to SAM2 could be applicable to other computer vision problems unrelated to contrails. Therefore this is a strong paper and I recommend publication. I have a number of minor comments below I would like to see addressed.
Section 1: The discussion of the intent-to-treat results of Sankar 2026 are confusing to me. I think the difference the authors comment on is for operational reasons (11.6<62 because the 11.6 includes a bunch of flights that didn’t actually fly contrail avoidance). I’m not sure what this has to do with contrail detection/attribution. There must be a clearer way for the authors to justify the need for good contrail attribution
Section 3.1: The authors disable CoCiP’s Schmidt-Appleman and ISSR checks, which is necessary to produce prompts when CoCiP doesn’t think a contrail will form. But is it sufficient? I think CoCiP repeatedly checks if a contrail will evaporate: if ERA5 incorrectly thinks that the air is dry, will CoCiP decide the contrail has evaporated and remove the prompt too soon? Similarly, CoCiP uses ice crystal size to decide how fast a contrail will fall (which affects advection). If ERA5 incorrectly predicts dry air, will this lead to incorrect ice crystal size growth and therefore incorrect advection? The upshot of these effects could be an attribution system that works better when ERA5 humidity is correct. This is somewhat problematic because I suspect a use case of this data will be to compare different contrail forecasts to these observations (e.g. one might use it to compare ERA5 and the ICON two-moment forecast). If the model is more likely to miss contrails when ERA5 is wrong, then such comparisons would be misleading. Could the authors compare cases when ERA5 predicts contrails to cases where it does not? Interesting quantities to compare would be the contrail age and vertical motion, as well as attribution skill. If the authors can’t produce evidence that the model has similar performance when ERA5 is correct and incorrect, then they should note these biases to warn those who might use this data to compare ERA5 with other forecasts.
Section 4: This isn’t a machine learning journal and I think I speak for many readers to say I am not very familiar with the SAM model. Can the authors give more details here to help make the paper more self-contained? A diagram with how different pieces interact would be helpful.
Section 4.3: In particular I was confused by the loss function. Is Eq. 3 the default SAM loss? Can you explain why all those terms are needed? What are alpha and gamma in the focal term? Do you really need all 4 terms?
Section 4.3: SAM in general has the concept of labeling different classes. (E.g. I think the object score in the loss uses this. Are separate contrails treated as separate classes, or are there just 2 classes (contrail/non contrail).
Section 5.1.1: I’m not familiar with mAP, could you explain it much more concretely? (The Lin reference doesn’t seem to explain it either, maybe an additional reference would also help). Part of this is my confusion over whether each contrail is a separate class, (I think the ‘mean’ is over different classes, but are there different classes?). Writing out what you are doing explicitly would help a lot.
Figure 3: This figure is a little small, so its hard to see all the contrails in the image. Can you make it take of the whole width of the page? Maybe also somehow make the background camera image higher contrast?
Figure 3: Am I right in seeing a bunch of objects in this image that look like contrails but don’t have prompts? What is going on there?
Fig 4: I’m a little confused between “Average precision” (which is the same thing as mAP?) and “Attribution precision”. Could you maybe find a way to make this difference clearer? Maybe consistently use the abbreviation mAP instead of AP?
Section 5: One quantity which I think is important is how long the algorithm can track contrails for. I guess this is measured by the “Completeness” metric. I was quite surprised to see that the 5 minute variants perform better on this metric than the 10 minute variants (I would have expected that for the part of the contrail’s lifetime that is >5 minutes old, the 10 minute variant would do better). Can you comment on this in the text? Could it be because most of the ground truth labels are less than 10 minutes old?
Section 5.3: I can think of two reasons why the cocip-baseline would perform less well. (a) The cocip baseline would be bad at the per-pixel mask, and (b) the cocip baseline would not reject the cases where no contrail actually formed. The section mostly talks about (a), but I would expect (b) would be the larger effect. Could you comment on the relative size of the effect? Some attribution metrics might be helpful here. In particular the attribution metrics of the ERA5 CoCiP baseline would be a great way to show that this method isn’t just returning whatever CoCiP says.
Section 5.4: which variant is the ‘best variant’?The 10th time you use this phrase you say that it is the 5 minute version with negative prompts. Is it always that, or does it depend on which column/case study you are working with. Explicitly define ‘best variant’ the first time you use the phrase.
Section 5.4: This paragraph confuses me: The per-flight distributions explain why the aggregate completeness difference is small: most flights are tracked equally well by both variants (330 of 610 within ±0.02), while 133 improve and 147 regress under the best variant, with large movements in both directions. That is offsetting redistribution, not the absence of an effect.” If 147 regress and only 133 improve, isn’t that bad? I don’t really know what “offsetting redistribution” means. I think maybe it means the same thing as what you say later about the error bars in Fig. 5 being dominated by flight-to-flight differences. If so maybe remove this line and just explain it there”
Section 5.6: “Rates at the 0.5 operating point are therefore exact, while the AUC treats sub-threshold flights as ties.” I have no idea what this means
Section 5.6: This section shows that the model has some skill in separating the flights that don’t make contrails from the ones that do. But the actual AUC numbers mean little to me without something to compare them to. Could you put the ERA5 CoCiP baseline on here for comparison. After all, ERA5 CoCiP also has some skill in determining whether a flight made a contrail, I want to know if this method has more skill than that. This would also help check for the bias issues I’m worried about above.
Section 5.7: I’m really confused by this section. The paper says that binary prompts converge more slowly, yet it uses less epochs for such prompts. Similarly the statement “Binary reaches its best performance at 10 epochs and degrades afterwards, while the age-weighted variants keep improving through 15 to 20 epochs, so equalizing the budget at 10 epochs would most likely widen the gap rather than close it.” is confusing. Is the ‘gap’ being referred to here the improvement in performance of the age-weighted variants, if we kept them at 10 epochs wouldn’t that shrink the gap?
Section 5.7: Without a validation set, a lot of these results are based on the fact that the authors correctly used the loss curves to decide when the model started overfitting. The authors need to show these loss curves so we can see that they did this correctly.
Section 5.8.1. “Performance on medium-sized objects (mAP25:75 = 0.521) is much higher than on small objects (0.371),” I think this is the first time I’ve seen this 0.371 number, where does it come from?
Section 5.9: “roughly one-third” “roughly one-fifth” give the actual numbers, maybe in a table
Overall the manuscript spends a lot of words redundantly describing graphs/tables. E.g. telling me in the text that something is a X% increase when I can easily work that out from the table. The manuscript would be more readable if some of this were removed.
Dataset availability: The algorithm described here, combined with the EUROCONTROL cameras, has the potential to produce a really novel dataset for contrail studies. Are they authors planning on making this dataset available?