README / docs /CASCADE_V25.md
unicornwhodev's picture
docs: separate Cadryl catalogues from the native PyTorch cascade
1ab14fa verified
|
Raw History Blame Contribute Delete
7.4 kB

FireViewer v2.5 · native PyTorch cascade

Presentation · Choose a component · Dataset guide · Update log

Four selected native PyTorch checkpoints implement full-image proposals, visible-flame refinement, one visual anchor per accepted flame crop and a separate smoke-compatibility branch. The published cascade diagnostic used PyTorch on NVIDIA L4.

Stage Native checkpoint Input
Generate single-class probable_fire candidate regions from full images. rfdetr-medium-probable-fire-v2.5 1088 px
Find visible flames inside probable-fire proposals. rfdetr-medium-visible-flame-v2.5 1088 px
Predict one visual flame anchor for each detected flame box. dinov2-small-visible-flame-monopoint-v2.5 448 px
Estimate fire-associated smoke compatibility with an abstention interval. dinov2-small-fire-associated-smoke-v2.5 448 px

Native PyTorch cascade

Functional routing

flowchart TD
    I[RGB whole image] --> P[RF-DETR M probable_fire · 1088]
    P --> R[score .10 · NMS .75 · at most 6 ROI]
    R --> V[30% context · min 128px · RF-DETR M visible_flame · 1088]
    V --> F[Flame boxes · score .25 · reprojection · global NMS .60]
    F --> K[Tight flame crops · DINOv2-S heatmap · 448]
    K --> A[One flame_base_anchor per detected flame]
    V --> G[ROI without a local confirmed flame]
    G --> S[45% context · min 160px · DINOv2-S smoke classifier · 448]
    S --> T[Calibrated compatibility · low / ambiguous / high]

Context is added on each side: expanded width and height are multiplied by 1 + 2 × context, before the minimum side and image clipping. RF-DETR receives NCHW float32 RGB resized with half-pixel bilinear interpolation, no antialias, with RGB converted to float before resize; normalization is ImageNet mean [.485,.456,.406], std [.229,.224,.225]. Point crops use Pillow bilinear; smoke crops use Pillow bicubic. All models stretch to the specified square size. The supplied NumPy/Pillow runner preserves these differences.

Proposal score ≥0.10, NMS IoU 0.75, limit 6; visible score ≥0.25 and global image-space NMS 0.60, limit 100. Tight point crops use floor for the minimum and ceil for the maximum. The heatmap point is the argmax followed by a local 5×5 softmax expectation at heatmap pixel centers. It is an appearance anchor, not an ignition location, geographic position or independently calibrated source confidence.

Smoke temperature is 1.1490650177001953. Low compatibility ≤0.30160276398937463; high compatibility ≥0.8199750333466715; values between these are ambiguous and do not raise the benchmark image alarm. Smoke is a binary visual compatibility classifier. It supplies no mask, smoke-core, smoke point or origin. No learned fire-group association is performed.

Recorded external diagnostic · 680 images

Frozen PyTorch FP32 pipeline on L4; no fitting or threshold selection on this panel. Case mix: 179 flame, 70 smoke, 431 negative images, 229 visual families. There may be several views of a family; families are not verified independent fire incidents.

Endpoint Result Numerator / denominator
Positive-image alarm recall 88.35% 220 / 249
Sampled image alarm precision 81.78% 220 / 269
Negative-image false-alarm rate 11.37% 49 / 431
Flame-image any-branch alarm recall 99.44% 178 / 179
Smoke-only any-branch alarm recall 60.00% 42 / 70
Flame bbox recall, IoU ≥ .5 25.64% 231 / 901
Flame bbox precision, IoU ≥ .5 27.57% 231 / 838
Tiny flame recall 22.59% 178 / 788
Multi-flame instance recall 24.72% 219 / 886
Expanded-proposal containment 97.89% 882 / 901
Point inside matched GT flame bbox 97.84% 226 / 231
Smoke-only image with false flame 10.00% 7 / 70

An image alarm is any visible-flame output or high smoke compatibility; it is not a statement that every flame has a precise box. There were TP=220, FP=49, FN=29, TN=382 for image alarms; flame localization TP=231, FP=607, FN=670. Tiny means bbox area/image area ≤ (32/1088)^2, a protocol bin rather than original-pixel COCO-small. Proposal containment means at least 90% of the GT box lies within an expanded proposal. The 229-image one-representative-per-family panel still has tiny recall 101/399=25.31%.

Interpretation: stage 1 generally provides coverage, while precise instance separation/localization of small visible flames remains the primary weakness. In the inspected worst-error gallery, several small annotated flames are merged into a broader detection. This is an observed error pattern, not a proven causal attribution for every miss. Good image suspicion and low box recall can coexist. The point-in-box statistic measures consistency only: no independent human flame-base GT is available, so PCK and base accuracy are unmeasured. Smoke-only labels establish visible smoke, not independently verified fire association.

Mean end-to-end inference latency was 226.82 ms/image, median 172.44 ms, P95 458.01 ms on L4 PyTorch. All invoked stages, decoding, preprocessing, NMS and reprojection are included; model loading/warmup are excluded. Stage calls: proposal 680, visible 1636, point 838, smoke 855. These measurements describe the frozen native PyTorch cascade on NVIDIA L4.

The image-level SHA/perceptual novelty audit covered all known historical splits including private sources and legacy FASDD/Pyro-SDIS manifests. Detected neighbors and suspected FLAME1 scenes were excluded before inference. No detected duplicate proves neither unseen events nor complete unknown provenance. Sources: DIFD and SAINetset v8, whose images may include synthetic/donated material. Only 208 retained images had a visual QA pass; there is no independent human annotation audit. Ratios describe this selected correlated panel, with no independent-event confidence intervals or deployment certification.

Sources

Retained scientific source · Original diagnostic report · Original metric JSON · Frozen release manifest. Source-specific rights and the original evidence dates remain applicable. This English presentation extracts native-model routing and diagnostic results from the retained records; it does not rerun the cascade.