the Creative Commons Attribution 4.0 License.
the Creative Commons Attribution 4.0 License.
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.
- Preprint
(8570 KB) - Metadata XML
- BibTeX
- EndNote
Status: final response (author comments only)
-
RC1: 'Comment on egusphere-2026-4608', Anonymous Referee #1, 17 Aug 2026
-
AC1: 'Reply on RC1', Ramon Dalmau, 17 Sep 2026
We thank the referee for the careful review and recommendation to publish. The comments helped us clarify the method and identify several useful additional analyses. We respond to each point below. Figure and table numbers refer to the revised manuscript unless stated otherwise.
1. Sect. 1: the discussion of Sankar et al. and intent-to-treat analysis
We agree that the comparison between 62% and 11.6% was not a suitable way to motivate flight–contrail attribution. That difference concerns operational compliance: the intent-to-treat estimate includes flights that did not follow the avoidance plan.
We have removed the comparison and revised the paragraph to explain the connection more directly. Both trials measured their outcomes using automated flight–contrail attribution. Their results therefore depend on the attribution method used. Sarna et al. (2025) show that changing this method can change the measured outcome, which motivates the need for reliable attribution.
2. Sect. 3.1: is disabling the SAC and ISSR checks sufficient?
No. Disabling these filters removes the formation and initial-persistence restrictions, but CoCiP still uses ERA5 fields to evolve the simulated contrail after initiation. If ERA5 represents the air as too dry, the simulated ice mass decreases and the segment is removed when it sublimates. A prompt may therefore disappear before the observed contrail does. Humidity errors can also affect crystal size and settling velocity, changing the predicted altitude and subsequent advection.
We have clarified this in Sect. 3.1 and expanded the discussion in the Limitations section. Prompt rejection allows the visual model to assess formation independently of the disabled filters, but it does not remove the influence of humidity on prompt lifetime and geometry. The revised text explicitly cautions that the resulting observations should not be treated as neutral across humidity products: using them to compare ERA5 with another humidity forecast could favour ERA5.
We have also added two analyses:
- In Sect. 5.6, CoCiP formation diagnostics are evaluated as flight-level discriminators over the same 2,609 flights. The highest AUC is 0.742, obtained from the fraction of waypoints satisfying the SAC, compared with 0.958 for the model’s object score.
- The extended prompt-as-prediction analysis in Sect. 5.3 shows that 72.4% of non-empty prompt assertions concern flights that never produce a visible contrail. The visual model therefore provides information that is absent from the prompt alone.
The revised AUC of 0.958 also corrects the treatment of tied scores. Flights without stored predictions are assigned a score of zero. The submitted calculation ranked these tied flights in index order, inflating the AUC to 0.969. The revised calculation handles them as one tied group and agrees with the tie-aware Mann–Whitney statistic. Rates at the operating threshold are unchanged.
The stored CoCiP output also allowed us to undertake part of the requested stratification without rerunning prompt generation. Sect. 5.6 now reports agreement between the SAC, initial persistence and observed formation for the 2,493 prompted flight–video pairs with available output. Of the model-confirmed and annotated flights, 97.2% and 98.4%, respectively, satisfy the SAC. However, only 34.6% of SAC-satisfying flights are confirmed by the model. The confirmation rate is 43.2% for flights classified as initially persistent, compared with 7.5% otherwise.
There are also exceptions: 10 annotated flights and 20 model-confirmed flights do not satisfy the ERA5-driven SAC, and 64 annotated flights are classified as not initially persistent. These disagreements are now discussed in relation to the dependence on reanalysis fields. They do not, by themselves, isolate the source of the discrepancy.
The more detailed stratification by contrail age, vertical displacement and attribution skill remains future work. We have made this distinction clear in the revised text.
3. Sect. 4: make the SAM2 description self-contained and add a diagram
We have added an overview paragraph and a diagram (Fig. 3) showing how SAM2 processes one flight at one frame. The diagram includes the image encoder, prompt encoder, memory bank, memory attention, mask decoder and three outputs. Numbered labels identify the five modifications introduced in this work.
The figure was generated with an image-generation tool from our description and checked against the method in Sect. 4. This use is disclosed in the acknowledgements.
4. Sect. 4.3: explain the loss function in Eq. 3
Equation 3 retains SAM2’s standard four-term objective, with modified relative weights. The revised text now explains the role of each term:
- The dice loss measures mask overlap and is normalised by area, helping retain sensitivity to thin contrails.
- The focal loss supervises individual pixels while reducing the contribution of easy examples through the factor (1 − p_t)^γ.
- The IoU loss trains the model’s estimate of mask quality, which is used to rank candidate masks.
- The classification loss trains the object score used for prompt rejection.
We also define γ as the focusing exponent and α as the positive-class weight. Both focal terms use γ = 2 and α = 0.75.
The IoU and classification terms supervise outputs used during inference. We have clarified their purpose and stated that we did not perform an ablation of the loss composition.
5. Sect. 4.3: are separate contrails treated as separate classes?
No. SAM2 is class-agnostic in this application. Each prompted flight is a separate instance of the same binary segmentation task, with its own prompt sequence and memory bank.
The flight identity comes from the prompt’s flight identifier; it is not a class predicted by the network. The object score expresses confidence that the prompted instance is present. We have added this explanation to the overview in Sect. 4.
6. Sect. 5.1.1: explain mAP and provide a more accessible reference
The revised metrics paragraph describes the matching rule, pooling of predictions, ranking by confidence, construction of the precision–recall curve and calculation of its area. It also states that, because there are no semantic object classes, the mean in mAP is taken only over IoU thresholds.
We have added Padilla et al. (2021, Electronics, 10, 279, doi:10.3390/electronics10030279), which provides a detailed explanation of detection metrics, alongside the COCO reference.
7. Fig. 3, now Fig. 4: size and background contrast
We have increased the figure width from 12.4 to 17.7 cm, retaining a resolution of at least 300 dpi. The background contrast now uses the frame’s own 1st–99.3rd percentile range. This makes the contrails in panel (a) easier to see.
8. Fig. 3, now Fig. 4: contrail-like objects without prompts
These are contrails for which no flight prompt is available within the selected window. They may have formed outside the camera’s field of view or before the prompt age window and subsequently drifted into view.
The caption now explains that the system does not produce predictions for unprompted contrails and refers to the “Unprompted contrails” discussion in the Edge cases subsection. We also explain how a camera network could reduce this gap by observing contrails earlier in their development.
9. Fig. 4, now Fig. 5: AP, mAP and attribution precision
We have clarified the distinction. Panel (a) plots average precision, AP, separately at each IoU threshold. The mean of these values across thresholds is mAP, so the individual curve values should remain labelled AP.
The revised metrics section and caption also distinguish this segmentation metric from attribution precision in Table 2. Attribution precision measures whether matched predictions carry the correct flight identity; it is not plotted in Fig. 5.
10. Sect. 5: why do the 5-minute variants outperform the 10-minute variants in completeness?
We have added a paragraph explaining this result using three observations from the test set.
First, temporal memory allows a contrail to remain tracked after its prompt expires. With the 5-minute window, only 47.7% of ground-truth frames retain a same-flight prompt raster, yet completeness reaches 0.730.
Second, the annotated lifetimes are relatively short: the median is 7 minutes, and 55.7% of ground-truth frames fall within 10 minutes of first visibility. Only 20.0% of frames lie in the 5–10-minute band where the wider window could provide additional prompt coverage.
Third, the additional coverage comes from older prompt geometry, which has accumulated more advection error. A displaced prompt can reduce confidence in a real contrail. With the negative signal, a displaced prompt from a neighbouring flight can also suppress a correct detection, as illustrated in Fig. A3.
The wider window therefore offers additional coverage for a limited fraction of frames while introducing less reliable geometry. The revised paragraph explains how these effects can outweigh the benefit of a longer prompt window.
11. Sect. 5.3: mask quality, prompt rejection and baseline attribution metrics
We have quantified these contributions. Treating every non-empty 5-minute prompt raster as a detection produces 44,984 assertions:
- 72.4% concern flights that never produce a visible contrail.
- 12.5% occur in frames where the flight’s contrail is not visible.
- 15.1% coincide with an annotated contrail from that flight.
Using the same greedy, per-frame matching rule as for the model, only 670 assertions match ground truth, or 1.5% of the total. Even when the contrail is visible, fewer than one prompt raster in ten reaches IoU ≥ 0.25.
Among the 670 matches, attribution precision is 96.6% (647/670). This high conditional precision is expected because each prompt already carries a flight identity. Attribution precision alone therefore does not capture the model’s contribution. The main improvements are rejection of prompts without visible contrails and accurate delineation of those that are present. The model rejects 93.5% of empty prompts.
12. Sect. 5.4: define “best variant” at first use
We now define this at the beginning of Sect. 5. It refers throughout to the same configuration: age-weighted prompts with the negative signal and a 5-minute window. The definition points to the comparison supporting this choice on the basis of attribution recall.
13. Sect. 5.4: clarify the “offsetting redistribution” paragraph
We have rewritten the paragraph and removed that phrase. Of the 610 flights, 330 change by no more than ±0.02 in completeness, 133 improve and 147 decline. The small aggregate difference therefore conceals substantial changes for individual flights.
Although more flights decline than improve, the aggregate difference is +0.6 percentage points because the changes differ in magnitude. Its paired confidence interval includes zero. We now state explicitly that the best variant does not show a statistically supported improvement in completeness. The discussion relates the variation between flights to prompt geometry and scene density.
14. Sect. 5.6: clarify the sentence about exact scores and ties
We have rewritten the explanation. Predictions are stored only above the 0.5 threshold, so flights without stored predictions receive a score of zero. This does not affect the reported rates at the operating threshold, but it prevents the ROC curve from distinguishing flights within the zero-score group.
The revised AUC calculation handles this group as tied. Retaining scores below 0.5 would allow a more complete assessment of the ranking and could change the AUC.
15. Sect. 5.6: add an ERA5–CoCiP baseline to the ROC comparison
We have added this comparison. Although the SAC and persistence filters are disabled during prompt generation, CoCiP still calculates these diagnostics at each emitted waypoint. We used the stored output to evaluate formation discriminators over the same 2,609 flights.
The AUC values are:
- Fraction of waypoints satisfying the SAC: 0.742, with a video-cluster bootstrap confidence interval of [0.688, 0.801].
- Maximum RHi: 0.721.
- Initial-persistence flag: 0.709.
- Model object score: 0.958, with a confidence interval of [0.946, 0.969].
The visual model thus discriminates observed formation substantially better than these CoCiP diagnostics on the test set.
16. Sect. 5.7: clarify the convergence and epoch discussion
The referee is correct. The binary variant plateaus earlier at a higher loss; it does not converge more slowly. Our statement about the effect of a common 10-epoch budget was also incorrect.
The revised subsection explains that each variant was evaluated at its selected checkpoint, near its own optimum, rather than under an equal training budget. A 10-epoch comparison would evaluate the age-weighted variants before convergence, whereas a 20-epoch comparison would evaluate the binary variant after its selected checkpoint. The observed curves suggest that these choices could narrow or widen the gap, respectively, but we have not performed those comparisons.
We therefore identify common-epoch evaluation of the existing checkpoints as the necessary control and acknowledge that the binary-to-best comparison remains confounded by the different training durations.
17. Sect. 5.7: show the loss curves
We have added Fig. 9, showing the training loss at each epoch for all five variants. Open markers indicate the selected checkpoints at epochs 10, 15 or 20.
The binary variant levels off at approximately 5.4 by epoch 10, while the age-weighted variants continue to improve, reaching losses of 3.6–4.1 at epochs 15–20.
18. Sect. 5.8.1: explain the value 0.371
We have added the missing context. These results use the COCO object-size categories implemented in pycocotools: small objects have an area below 32² pixels, and medium objects have an area between 32² and 96² pixels.
The corresponding mAP_25:75 values are 0.371 for small objects and 0.521 for medium objects. Table 2 aggregates across sizes, which is why these values do not appear there.
19. Sect. 5.9: replace approximate failure fractions with exact numbers
We could not recover the original manual tally, so we repeated the categorisation using explicit geometric criteria, now stated in the manuscript. The revised section replaces the approximate fractions with the following results.
For detection, 3,355 of the 14,262 ground-truth instances belonging to the 610 prompted flights are undetected. Among the 50 prompted flights with the lowest temporal IoU, the criteria identify 43 as faint or discrimination-limited, 5 as affected by wind drift, 2 as over-segmentation cases and none as overlap cases. Under the 5-minute window, faint or difficult-to-distinguish contrails therefore account for most of these poor results.
For assignment, 416 of the 10,907 matched instances, or 3.8%, receive the wrong flight identity. The candidate-set analysis added in response to RC2 shows that 54% of these retain the correct flight as a second candidate.
20. Reduce repetition of values already shown in tables and figures
We have shortened passages that repeated results without adding interpretation. The mAP comparison is now summarised in one sentence, the completeness values are replaced by a reference to the table, and the four similar IoU values are given as a range.
We have retained and clarified the explanations of the results, particularly those requested in points 10, 11 and 13.
21. Dataset availability
The components needed to reproduce the evaluated outputs are publicly available: the GVCCS dataset (Jarry et al., 2026), the training and inference code and evaluation suite on GitHub, and the fine-tuned checkpoints for all five variants on Hugging Face Hub. ERA5 inputs are available from the Copernicus Climate Data Store.
We have revised the code and data availability statement to explain that the per-flight attribution outputs can be reproduced from these components. We do not currently plan to deposit those outputs as a separate dataset.
Citation: https://doi.org/10.5194/egusphere-2026-4608-AC1
-
AC1: 'Reply on RC1', Ramon Dalmau, 17 Sep 2026
-
RC2: 'Comment on egusphere-2026-4608', Anonymous Referee #2, 31 Aug 2026
General Comments:
The manuscript presents a modeling strategy for matching flights to contrails using ground-based camera observations. The main novelty lies on the methodological approach, since the proposed framework directly assigns a contrail to each aircraft (if their advected flight path intersects any) rather than starting from a contrail and then finding the corresponding aircraft.
I believe the manuscript is well written and that the proposed approach has strong potential for application in contrail impact assessments. I therefore recommend publication, subject to the authors addressing the comments below.
Specific Comments:
- I understand that this new approach likely reduces the complexity of the matching problem. However, is it necessarily more accurate than starting from each detected contrail and assigning the most likely generating flight? How much does this approach actually reduce the computational cost? I believe there should be some attempt to report the improvement relative to a contrail-to-flight approach to strengthen the main claim of the work.
- For cases where two flight trajectories are spatially very close and only one visible contrail is present, could the authors clarify whether the predictions are invariant to the order in which flight trajectories/prompts are initialized or processed? If any sequential dependence exists, an order-sensitivity test would be useful, particularly for the dense-traffic cases.
- What is the level of agreement between SAC satisfaction predicted by CoCiP and the flights to which a contrail is attributed? I think this would be a relatively straightforward extension of the analysis that could provide relevant additional insights and add value to the work.
- In page 10, “.We encode this by setting prompt pixel intensity proportional to contrail freshness”: I don’t see the proportionality here, what is the definition of contrail freshness?
- When stating that “overlapping prompts cause roughly one-quarter of errors,” I wonder whether it would be useful to distinguish between complete attribution failures and cases in which the correct flight remains one of several candidates. Rather than requiring a unique flight attribution, could all trajectories that are sufficiently compatible with the observed contrail be kept and assigned an attribution probability? For example, if the same contrail is assigned to several flights, each flight could be associated with that contrail with probability 1 / # number of flights assigned to it. It would then be interesting to assess how many of the errors attributed to overlapping trajectories would no longer constitute complete failures under this candidate-based formulation. Given that such a substantial fraction of the reported errors arises from overlapping trajectories, I think some explicit treatment of this ambiguity would be valuable.
Presentation Comments:
- Even if “prompt” follows SAM2 terminology, it may be worth considering a more descriptive term throughout the manuscript, such as “flight map” or “trajectory map,” while keeping “prompt” only for references to the model input. In my opinion, the use of that wording is not straightforward to understand in this context. For example, Figure 2 could be understood more straightforwardly without having to go through the full text if, instead of “target prompt” and “competing prompts,” terms such as “current trajectory map” and “competing trajectory maps” were used.
- Following my previous comment, I believe it would also benefit the reader if the category names were more self-descriptive. At present, the figures (for example Figure 6) are difficult to interpret from the labels and captions alone, and understanding the distinction between categories requires referring back to the main text. I would therefore suggest using more descriptive names, such as: Binary trajectory, Age-weighted trajectory, Informed Age-weighted trajectory. Other similarly informative names would also work.
- I would suggest using a different opening sentence in the title. I don’t think “Contrails cannot exist without flights” is the most representative of this work. Perhaps something like “Identifying contrail-forming flights” or “Did this flight form a contrail?” would better reflect the main contribution of the study.
Citation: https://doi.org/10.5194/egusphere-2026-4608-RC2 -
AC2: 'Reply on RC2', Ramon Dalmau, 17 Sep 2026
We thank the referee for the careful review and recommendation to publish. We have revised the manuscript and added analyses addressing the comparison with a sequential pipeline, processing-order invariance, agreement with CoCiP and ambiguous assignments.
The numbering below is ours, as the original review was unnumbered. Referee comments are quoted in abridged form.
1. Accuracy and computational cost relative to a contrail-to-flight approach
"...is it necessarily more accurate than starting from each detected contrail
and assigning the most likely generating flight? How much does this approach
actually reduce the computational cost? I believe there should be some
attempt to report the improvement relative to a contrail-to-flight approach..."We agree that this comparison was missing. The revised manuscript now includes a direct evaluation in Sect. 5.10, “Comparison with a detect-then-attribute pipeline”, with results in Table 4.
We trained a YOLO-family instance-segmentation baseline on the same GVCCS training split and passed its detections to our published contrail tracking and attribution pipeline (Dalmau et al., 2025), retaining the attribution algorithm’s reference configuration. Both systems were evaluated on the same 24 test videos using the same matching rule and metrics.
The sequential pipeline achieves attribution precision of 0.805 and instance-level attribution recall of 0.167, compared with 0.962 and 0.736 for the proposed system. Here, instance-level attribution recall is the fraction of annotated instances from prompted flights that receive a correctly attributed prediction.
Of the detector’s 20,041 masks, 78.8% leave the sequential pipeline without a flight identity. This includes detections of contrails for which no generating flight is available in the reference data: 38% of GVCCS annotations have no flight identity, and these annotations are included in detector training. Detector false positives and fragmented tracks also contribute. These proportions depend on the detector and tracker used. Among masks assigned a flight identity, 31.5% are false at the instance level.
To separate the effects of detection, tracking and attribution, we also evaluated the attribution stage with ground-truth masks and track identities. In that setting, precision is 0.881 and recall is 0.891. Replacing ground-truth tracks with the actual tracker reduces recall to 0.447; using the detector’s masks reduces it further to 0.167. This shows how errors accumulate across the sequential stages. With ground-truth masks and tracks, the remaining precision errors are mainly old contrails assigned to incorrect flights, a failure mode also identified in Dalmau et al. (2025).
The attribution stage was rerun independently, giving 99.5% instance-level agreement with the archived reference output. Under the per-contrail accounting used in Dalmau et al. (2025), 94.5% of contrails with a known generating flight are correctly attributed at first appearance, close to the published value of 94.2%.
The detector achieves a held-out mask mAP50 of 0.341. We selected the standard IoU tracker from four candidates based on downstream attribution quality using ground-truth masks and propagated flight identities along tracks by majority vote.
We also considered comparing predicted mask area outside the annotation set. Visual inspection showed that, for both systems, much of this area corresponds to plausible contrails absent from the annotations. We therefore excluded this measure because it would conflate annotation completeness with false detections.
On computational cost, we have corrected the implication that reversing the workflow necessarily reduces computation. A sequential pipeline runs its detector once per frame, followed by tracking and attribution. Our system shares image-encoder features across flights, but performs prompt encoding, memory attention and mask decoding separately for each prompted flight. Its inference cost therefore increases with the number of flights. We do not claim a computational advantage over the sequential baseline.
We now report measured inference times. On the densest test video, containing 273 prompted flights and 456 frames, inference takes 275 s on one RTX 6000 Ada GPU, or approximately 0.60 s per frame. Runtime increases approximately linearly with flight count: 92 ms per frame for 32 flights and 331 ms for 128 flights. At the camera’s 30-second frame interval, the full-fleet run is about 50 times faster than real time.
The benefit demonstrated by this comparison is improved detection and attribution performance, with a runtime compatible with the camera cadence at the evaluated scale.
2. Order invariance of predictions
"...could the authors clarify whether the predictions are invariant to the
order in which flight trajectories/prompts are initialized or processed?"The method has no dependence on flight-processing order. Each flight has its own memory bank, and its forward pass does not read state produced for another flight. Image features are shared across flights but are computed independently of their processing order.
The negative signal depends on other flights’ simulated geometry. It is calculated before inference from the complete set of prompts, so it is also independent of processing order.
We verified this on the densest test video, with 273 prompted flights and 456 frames. Randomly permuting the flight list, which also changed the composition of processing batches, reproduced all 6,654 predicted masks and confidence scores bit for bit. Repeating inference in the original order gave the same result. Sect. 4 now explains the architecture and reports this check.
3. Agreement between CoCiP SAC satisfaction and attribution
"What is the level of agreement between SAC satisfaction predicted by CoCiP
and the flights to which a contrail is attributed?"We have added this analysis to Sect. 5.6 using the stored per-waypoint CoCiP diagnostics. Output was available for 2,493 of the 2,609 prompted flight–video pairs.
Of the model-confirmed flights, 97.2% satisfy the ERA5-driven SAC; the corresponding proportion among annotated flights is 98.4%. However, SAC satisfaction does not imply visible contrail formation: only 34.6% of SAC-satisfying flights are confirmed by the model, and 30.3% have an annotation.
The initial-persistence diagnostic provides further discrimination. The model confirms 43.2% of flights classified as initially persistent, compared with 7.5% of the remaining flights.
There are also exceptions: 10 annotated flights and 20 model-confirmed flights do not satisfy the SAC in the ERA5-driven calculation. These disagreements indicate limitations in the correspondence between the simulated formation criteria and the observations, although they do not isolate the cause. We now discuss them alongside the dependence of prompt generation on reanalysis fields.
This analysis also provides part of the flight-level stratification requested by RC1.
4. “Prompt pixel intensity proportional to contrail freshness”
"I don't see the proportionality here, what is the definition of contrail
freshness?"We had not defined “freshness” clearly. The revised text defines it as the unexpired fraction of the age window:
f = 1 − a / τ_max,
where a is the segment age and τ_max is the maximum prompt age. Within this window, prompt intensity equals f: it is 1 at formation and decreases linearly to 0 at the age limit.
The sentence now reads: “…setting prompt pixel intensity equal to the segment’s freshness, defined as the unexpired fraction of the age window.”
5. Complete attribution failures, candidate sets and the 1/N formulation
"...distinguish between complete attribution failures and cases in which the
correct flight remains one of several candidates... assess how many of the
errors attributed to overlapping trajectories would no longer constitute
complete failures under this candidate-based formulation."We have added the proposed analysis to Sect. 5.9. For each ground-truth contrail instance, we identify all flights whose predictions overlap it at IoU ≥ 0.25, without imposing one-to-one matching.
For the best variant across all 24 test videos, comprising 14,262 ground-truth instances:
- Of the 10,919 instances with at least one compatible prediction, 505, or 4.6%, have two candidate flights. None has more than two.
- Of the 416 incorrect flight assignments under one-to-one matching, 223, or 54%, retain the correct flight as the second candidate. These cases would therefore not be complete attribution failures under the proposed candidate-based definition.
- The 1/N formulation yields an expected 10,465 correct attributions, compared with 10,491 under exclusive assignment. The corresponding precision values are 95.8% and 96.2%.
Exclusive assignment performs slightly better because overlap usually ranks the correct flight first in ambiguous pairs. The candidate-based formulation nevertheless provides useful information about uncertainty that the exclusive assignment does not retain. We now explain this distinction in the manuscript.
As a consistency check, recomputing the greedy assignment reproduces the reported attribution precision: 96.19%, compared with the rounded value of 96.2%.
6. “Prompt” terminology
"...it may be worth considering a more descriptive term throughout the
manuscript, such as 'flight map' or 'trajectory map'..."We have added a descriptive explanation at first use: “spatial prompt masks, in effect per-flight trajectory maps advected by the wind and rendered into image coordinates”.
We retain “prompt” as the technical term because it describes the input to SAM2 and is central to the method. Figure captions now provide more descriptive wording where needed. In particular, the caption of Fig. 2 explains the target flight’s trajectory map and the competing prompts that cross it. The short labels “target prompt” and “competing prompt” remain consistent across the figures.
7. More descriptive variant names
"I would therefore suggest using more descriptive names, such as: Binary
trajectory, Age-weighted trajectory, Informed Age-weighted trajectory."We have renamed the variants in figures and tables:
- “Binary trajectory (1 min)”
- “Age-weighted (5/10 min)”
- “Age-weighted + suppression (5/10 min)”
Section 3 explains how these labels correspond to the technical terms used in the text. The overview schematic in Fig. 1 retains “negative-signal layering” in one block; its caption and the caption of Table 2 clarify that this is the mechanism called “suppression” in the variant labels.
8. Title
"I would suggest using a different opening sentence in the title... Perhaps
something like 'Identifying contrail-forming flights' or 'Did this flight
form a contrail?'..."We have adopted the suggested opening. The revised title is:
“Did this flight form a contrail? Physics-informed contrail detection, tracking, and attribution in ground-based camera video”.
Citation: https://doi.org/10.5194/egusphere-2026-4608-AC2
-
RC3: 'Comment on egusphere-2026-4608', Anonymous Referee #3, 15 Sep 2026
1. General Comments
This manuscript presents an innovative, physics-inverted method for automated contrail detection, tracking, and flight attribution in ground-based sky video imagery. Traditional approaches employ a sequential "detect-then-attribute" pipeline, first segmenting contrail candidates from visual appearance, linking them temporally via video object segmentation (VOS), and finally matching advected flight paths.
The authors argue that this one-way architecture suffers from compounding errors (uncorrectable missed detections and tracking swaps) and underutilizes flight trajectory information, though they acknowledge the lack of a direct empirical comparison against a sequential baseline.
To overcome these structural limitations, the authors invert the process: starting from Automatic Dependent Surveillance–Broadcast (ADS-B) flight trajectories and ERA5 reanalysis wind fields, they run the Contrail Cirrus Prediction model (CoCiP) to generate dense, per-flight, per-frame spatial prompts projected into camera image coordinates. An adapted Segment Anything Model 2 (SAM2) processes these physics-derived prompts to either delineate the contrail or reject the prompt if no visible contrail exists.
One major issue remaining with the paper in its current state is the fact that the prompts used as SAM2 input come from Cocip, which is relying on ERA5 weather data to tell if a contrail will be present or not, and estimate its shape. This introduces a SIGNIFICANT biais which, as it stands, completely prevents using the results of this model to compare predictive models with observations considered as ground truth.
Except from this main point, for which we propose a relatively straightforward solution below, and a few additional comments, we recommend accepting this paper for publication, subject to these revisions.
2. Specific Comments : Methodological & Scientific Critiques
- Major drawback : ERA5 induced Bias in Prompt Generation :
Issue: Disabling the Schmidt–Appleman Criterion (SAC) and initial-persistence filters in CoCiP does not stop prompt truncation when ERA5 humidity is low. CoCiP’s underlying engine still evaluates wake vortex dynamics and ice microphysics: the survival fraction (f_surv) drops to zero under sub-saturated conditions, and even if f_surv is manually bypassed, ice crystals completely sublimate during the first integration timestep (max dt=30s). As a result, CoCiP marks segments as dissipated and outputs empty or truncated spatial prompts. The prompt generation mechanism therefore remains heavily biased by ERA5 thermodynamic fields. This introduces a severe circular dependency: the vision model is never prompted to search for contrails in regions where ERA5 incorrectly predicts dry air, creating systematic false negatives. Because ground camera pipelines are primarily used as independent observational benchmarks to validate contrail lifecycle models, NWP forecasts, and aircraft performance models, inheriting ERA5's thermodynamic biases renders the output unfit for model intercomparison or validation studies.
Suggestion: Decouple prompt generation from reanalysis biases by replacing the full CoCiP lifecycle model with a purely kinematic 3D wind advection pipeline (using for example the dry advection module in pycontrails) that advects flight segments using ERA5 3D wind vectors while completely ignoring temperature, humidity, and microphysics. To scale prompt geometry without microphysics, implement a parameterized contrail shape model (e.g., for lateral shear spreading and vertical extent), following a design pattern similar to the parameterized sedimentation speed estimation in pycontrails. This ensures spatial prompts depend strictly on aircraft geometry and wind transport, allowing SAM2 to act as a truly independent arbiter of contrail existence regardless of ERA5 humidity and temperature errors. This is crucial before this pipeline can be used reliably for downstream contrail studies.
- The authors do not describe sub-timestep position interpolation between CoCiP integration steps to estimate contrail locations between timestamps.
Detail: CoCiP runs integration with 30-second timestamps starting at the ADS-B flight data 4D point time.
Question: How did the authors manage to access contrail position and shape between two integration dates to generate prompts at intermediate frame timestamps? More importantly, how did they manage the microphysics and the contrail shapes in between timestamps? This would be an interesting addition to the paper.
- Resolution Bottleneck in SAM2 Memory Bank for Thin Structures (Section 4.2.3 & Section 5.8.1, Lines 315–322, 605–617):
Issue: The authors identify that SAM2 stores memory features at 64x64 resolution (1/16 of the 1024x1024 input image). For contrails spanning 2–4 pixels in width, a contrail segment covers only 0.1 to 0.25 memory cells. Although softening the memory sigmoid prevents logit erasure near zero, the spatial coarseness of 64x64 memory representation causes mAP_75 to drop to 0.034.
Suggestion: Clarify whether multi-scale memory feature representations or feature-map upsampling in the memory attention path could mitigate this bottleneck. Discuss the computational trade-offs of increasing memory spatial resolution for thin linear features. Discuss the fact that this is not an issue for more traditional pipelines.
- Sensitivity to ERA5 Wind Reanalysis Errors (Section 3.3.1, Section 5.9, Figure 8A, Lines 640–644):
Issue:Issue: Failure mode analysis shows ~33% of system failures result from ERA5 wind errors over ~5 m/s, shifting prompts by tens of pixels. This causes the model to reject the contrail or over-segment by following the offset prompt polygon. Note that this is not an issue for more traditional ground observations pipelines, because the errors in tracking don’t stack up.
Suggestion: Quantify the spatial tolerance threshold of the adapted SAM2 model (e.g., by evaluating performance under synthetic prompt displacement/jitter ranging from 0 to 50 pixels). This would establish operational bounds for deployment under uncertain weather reanalysis. You could also make the prompt adhere to the detection on the previous frame to avoid this issue.
3. Technical Corrections
- Line 9-10: Ensure consistency in hyphenation for "intersection-over-union" throughout the text.
- Line 90: Change "Schmidt–Appleman" to "Schmidt–Appleman criterion" or maintain uniform en-dash notation (Schmidt–Appleman) across all sections (check consistency with Line 191).
- Line 120: "and the remaining 1,999 have no visible contrail..." -> Ensure formatting matches the numbers in Section 5.6 (Line 568).
- Lines 44–51 and Lines 141–150: Notes on existing methods : note that Chevallier et al. (2023) leverages flight trajectory data during tracking to generate track candidates and solve tracking and matching simultaneously, and Sarna et al. (2025) similarly solves tracking and flight identification jointly using a RANSAC-based formulation. Please update the relevant passages in Section 1 (Lines 44–51) and Section 2.4 (Lines 141–150) to accurately reflect these joint tracking-attribution approaches. The distinction of your work lies in using trajectory data to prompt the visual detector itself, rather than being the only method to introduce flight data before final assignment.
- Line 288: "Replace sparse human annotations... breaks it entirely." -> Consider rephrasing for smoother academic style ("...invalidates this core assumption.").
- Line 330, Eq. (3): Define all scaling coefficients explicitly in the text immediately following the equation (lambda_dice, lambda_focal, and implicit weights for L_IoU and L_cls).
- Line 384: "NVIDIA RTX 6000 Ada Generation GPUs" -> Specify total GPU VRAM used per micro-batch during mixed-precision training. Similarly, this could be a useful information for inference as well.
- Line 407: "COCO-standard mAP_50:95" -> Ensure subscript formatting uses en-dash or colon consistently.
- Line 483: "90.3%, against 84.6% for age-weighted 10-min and 87.2% for binary." -> Cross-check values directly against Table 2 attribution recall column for exact consistency.
- Line 529: p(Delta <= 0) < 10^-2 has a stray line break or inline spacing glitch around line number 530. Adjust typesetting.
- Line 770: Ensure author contribution initials (RD, GJ, PV) match the title page author list formatting requirements of EGU journals.
- References (Lines 780–868):
- Check entry Jarry et al., 2026 (Line 804): verify publication year formatting and duplicate citation markers in Section 2.2 (Line 112).
- Ensure uniform capitalization across conference and journal titles in the reference list (e.g., arXiv preprint vs. IEEE/CVF).
-
AC3: 'Reply on RC3', Ramon Dalmau, 17 Sep 2026
We thank the referee for the detailed review and recommendation to publish. We agree that the remaining dependence of prompt generation on ERA5 thermodynamics needs to be stated clearly. We have expanded this discussion, clarified the implementation and added the proposed kinematic-advection and prompt-displacement experiments as future work.
The numbering follows the review’s structure. Referee comments are quoted in abridged form.
1. ERA5-induced bias in prompt generation
"CoCiP's underlying engine still evaluates wake vortex dynamics and ice
microphysics... the prompt generation mechanism therefore remains heavily
biased by ERA5 thermodynamic fields... completely prevents using the results
of this model to compare predictive models with observations."We agree that disabling the Schmidt–Appleman and persistence filters does not make prompt generation independent of ERA5 thermodynamics.
Section 3.1 now explains that CoCiP continues to evolve simulated contrails using the reanalysis fields after initiation. If ERA5 represents the air as too dry, simulated ice mass decreases and the segment is removed when it sublimates. The prompt can therefore disappear before the observed contrail does. Thermodynamic errors can also affect settling and subsequent advection.
The Limitations section explicitly cautions that the system’s outputs should not be treated as an observation set that is neutral across humidity products. Evaluating ERA5 against a competing humidity forecast using these outputs could favour ERA5.
The current evaluation provides some evidence about the practical effects of this dependence, but does not establish independence from it:
-
Every flight-attributed annotation in the test set belongs to a flight that received a prompt. This establishes coverage at flight level, but does not rule out premature prompt disappearance or errors in its geometry. The agreement analysis also identifies 10 annotated flights and 20 model-confirmed flights whose ERA5-driven diagnostics never satisfy the SAC.
-
The model’s object score achieves an AUC of 0.958, compared with 0.742 for the SAC fraction, 0.721 for maximum RHi and 0.709 for the initial-persistence flag. Visual information therefore improves discrimination substantially over these CoCiP diagnostics, although this does not exclude bias in the supplied geometry.
-
Disabling the formation filters allows the model to reject or confirm a prompted flight using visual evidence. Temporal memory can also support tracking after a prompt expires. Neither mechanism guarantees recovery when the relevant prompt geometry is missing or substantially displaced.
We agree that purely kinematic advection is a useful next step. Using three-dimensional wind fields with a prescribed spreading model would remove the dependence of prompt lifetime and geometry on CoCiP’s temperature- and humidity-driven lifecycle calculations, while retaining dependence on the wind fields and spreading assumptions. We have added this direction to Sect. 6.4. It would address the concern raised here before applying the method to humidity-forecast validation.
2. Sub-timestep position interpolation
"How did the authors manage to access contrail position and shape between
two integration dates to generate prompts at intermediate frame timestamps?"No sub-timestep interpolation is used in this implementation. CoCiP’s integration timestep is 30 seconds, as stated in Table 1, and its output times coincide with the camera’s 30-second frame timestamps.
Segment position, length, width and depth are therefore read directly from the CoCiP output for each frame. We have added this clarification to Sect. 3.1.
3. Resolution bottleneck in the SAM2 memory bank
"Clarify whether multi-scale memory feature representations or feature-map
upsampling in the memory attention path could mitigate this bottleneck."We have expanded the discussion of thin structures in Sect. 5.8. Multi-scale memory features or a higher-resolution memory-attention path could help preserve information about narrow contrails, at the cost of additional GPU memory and computation. Upsampling alone would not recover detail already lost during encoding, so the benefit would depend on how higher-resolution information is introduced.
We have not tested these changes and now present them as possible architectural improvements.
We also acknowledge that a detector operating independently on each frame avoids this particular temporal-memory bottleneck. Its results would still depend on the detector’s feature resolution. The sequential comparison in Sect. 5.10 and Table 4 examines the separate losses introduced by detection, tracking and attribution.
4. Sensitivity to ERA5 wind errors
"Quantify the spatial tolerance threshold of the adapted SAM2 model by
evaluating performance under synthetic prompt displacement/jitter."The failure analysis in Sect. 5.9 identifies wind drift in 5 of the 50 worst-performing prompted flights, with displacements of tens of pixels associated with median wind errors above 5 m/s. This describes observed failures but does not establish a spatial tolerance threshold.
We agree that controlled displacement experiments would provide a more direct test. We have added experiments with synthetic prompt shifts from 0 to 50 pixels as future work in Sect. 6.4. These experiments have not been performed in the present revision.
Using the previous frame’s detection to adjust the next prompt could also help compensate for drift. It would, however, introduce an additional feedback path through which an incorrect detection could affect subsequent prompts. A constrained correction, such as adjusting lateral position while retaining the simulated trajectory, could be worth testing. We now discuss this possibility.
5. Related work: Chevallier et al. (2023) and Sarna et al. (2025)
"Note that Chevallier et al. (2023) leverages flight trajectory data
during tracking... Sarna et al. (2025) similarly solves tracking and
flight identification jointly."Thank you for pointing this out. We have corrected Sects. 1 and 2.4 to describe these methods as joint tracking and attribution approaches.
We also clarify the distinction from the present work: here, flight trajectories are used to prompt the visual detector, so flight information enters the process before segmentation.
6. Hyphenation of “intersection-over-union”
We have checked the term and use “intersection-over-union” consistently, including in the abstract.
7. Schmidt–Appleman notation
We have made the notation consistent throughout, using an en dash in “Schmidt–Appleman”.
8. Formatting of “1,999”
We have checked the value and formatting in Sect. 2.2, the caption of Table 2 and Sect. 5.6. All use 1,999, corresponding to 2,609 − 610.
9. The phrase “breaks it entirely”
This sentence was removed during the earlier revision and no longer appears in the manuscript.
10. Loss coefficients in Eq. 3
We have explicitly stated that the IoU and classification terms have unit weights: λ_IoU = λ_cls = 1. The dice and focal weights, λ_dice = 5 and λ_focal = 1, are given immediately below Eq. 3.
11. GPU memory requirements
Section 4.4 specifies two RTX 6000 Ada GPUs with 48 GB of memory each, mixed-precision bfloat16 training and gradient accumulation over four micro-batches, giving an effective batch size of four. Peak training memory use is approximately 38 GB per GPU.
Inference requires one GPU. The densest test video, with 273 prompted flights and 456 frames, takes 275 s on a single RTX 6000 Ada, as reported in Sect. 6.3.
12. mAP subscript formatting
We use mAP_25:75 consistently. The colon separates the lower and upper IoU thresholds, following the notation used for COCO metrics, although our threshold range differs from the standard COCO range of 50:95.
13. Values “90.3%, 84.6%, 87.2%”
We have checked these against Table 2. They are the attribution recall values for the best variant, the age-weighted 10-minute variant and the binary variant, respectively, and all three agree with the table.
14. Typesetting of p(Δ ≤ 0)
We checked the rendered PDF. The expression is correctly typeset in the source; the apparent break arises from its placement in the line-numbered manuscript layout. It renders without a break in the two-column proof layout.
15. Author contribution initials
We have checked the initials against the author list. RD, GJ and PV refer to Ramon Dalmau, Gabriel Jarry and Philippe Very, respectively.
16. References
The Jarry et al. reference is dated 2026, corresponding to its publication in volume 18 of Earth System Science Data.
We have also checked the reference list for consistent capitalisation of conference and journal titles and consistent use of “arXiv [preprint]” for arXiv entries.
Citation: https://doi.org/10.5194/egusphere-2026-4608-AC3 -
Viewed
| HTML | XML | Total | BibTeX | EndNote | |
|---|---|---|---|---|---|
| 232 | 106 | 30 | 368 | 24 | 27 |
- HTML: 232
- PDF: 106
- XML: 30
- Total: 368
- BibTeX: 24
- EndNote: 27
Viewed (geographical distribution)
| Country | # | Views | % |
|---|
| Total: | 0 |
| HTML: | 0 |
| PDF: | 0 |
| XML: | 0 |
- 1
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?