{"id":198,"date":"2026-03-24T11:50:55","date_gmt":"2026-03-24T11:50:55","guid":{"rendered":"https:\/\/numidai.com\/?page_id=198"},"modified":"2026-10-09T08:57:57","modified_gmt":"2026-10-09T08:57:57","slug":"home2","status":"publish","type":"page","link":"https:\/\/numidai.com\/","title":{"rendered":"Home"},"content":{"rendered":"<!-- ============================================================\n     NUMIDAI.COM \u2014 HOME v2 (mars \u2192 septembre 2026 refresh)\n     Coller tel quel dans l'\u00e9diteur de code Gutenberg (\u22ee \u2192 \u00c9diteur de code).\n     Banni\u00e8re et sch\u00e9ma : URLs r\u00e9elles d\u00e9j\u00e0 en place.\n     Restent 2 TODO-UPLOAD : captures UI dashboard + journal\n     (exports du dossier de synth\u00e8se) \u2014 uploader puis remplacer les URLs.\n     ============================================================ -->\n\n\n<figure class=\"wp-block-image alignfull size-full\" style=\"margin-bottom:24px\"><img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-5-sept.-2026-15_08_09.png\" alt=\"NumidAI \u2014 Early wildfire detection by AI\" style=\"width:100%;height:auto;display:block;\"\/><\/figure>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">\u2014 Wildfire detection \u00b7 Edge AI \u00b7 Real Time<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" style=\"margin-bottom:8px;font-weight:300;letter-spacing:-0.02em;line-height:1.15\">Early wildfire detection.<br><strong>Embedded. Verified on-device.<br>No cloud inference.<\/strong><\/h1>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888888;font-family:monospace;font-size:13px\">NVIDIA Jetson Orin NX \u00b7 C++ \/ DeepStream \u00b7 staged on-device verification chain<\/p>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:17px\">NumidAI turns a single edge device and any standard camera stream into an autonomous wildfire detection system. It is built around one operational truth: the difference between a contained ignition and a disaster is decided in the first minutes \u2014 and a system that cries wolf gets ignored.<\/p>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:17px\">The first stage is deliberately tuned for sensitivity, so weak nascent plumes are never missed. Precision is then built downstream: every candidate is tracked and characterised over time, and ambiguous ones go through an on-device semantic verification stage before any alert is emitted. The sensitivity\/precision trade-off itself is moved, not just the threshold.<\/p>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:17px\">Video never leaves the site. Only alerts, their visual proof and telemetry go out.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/detection_strip.png\" alt=\"Small plume-like signal tracked over four successive instants\"\/>\n<figcaption class=\"wp-element-caption\" style=\"font-family:monospace;font-size:11px;color:#444;\">A small plume-like signal, tracked over four successive instants (enlarged detail of the temporal mosaic).<\/figcaption>\n<\/figure>\n\n\n<\/div><\/div>\n\n\n<!-- ============ KEY NUMBERS (FIgLib, locked set) ============ -->\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-23cb92b5 wp-block-columns-is-layout-flex\">\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #1e1e1e;padding:20px;\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#e8e8e8;font-family:monospace;font-size:26px;font-weight:700\">100 %<\/p>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:11px\">fire events detected \u2014 FIgLib test split, strict out-of-distribution<\/p>\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #1e1e1e;padding:20px;\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#e8e8e8;font-family:monospace;font-size:26px;font-weight:700\">3 min<\/p>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:11px\">median time-to-detect \u2014 operations profile + partial L3*<\/p>\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #1e1e1e;padding:20px;\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#e8e8e8;font-family:monospace;font-size:26px;font-weight:700\">0.06 %<\/p>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:11px\">false alarms among emitted alerts \u2014 fewer than on per day, per stream<\/p>\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #1e1e1e;padding:20px;\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#e8e8e8;font-family:monospace;font-size:26px;font-weight:700\">24 W<\/p>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:11px\">one module, four streams \u2014 100 % on-device processing<\/p>\n\n<\/div>\n\n\n<\/div>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#444;font-family:monospace;font-size:11px\">* FIgLib&#8217;s one-frame-per-minute format only allows part of the L3 stage used on a continuous stream to run. Full protocol and result tables available on request.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"background-color:#1e1e1e;color:#1e1e1e\"\/>\n\n\n<!-- ============ DEMO (inchang\u00e9) ============ -->\n\n<h2 class=\"wp-block-heading has-text-color\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">Demo<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"NumidAI \u2014 Early Wildfire Detection | Edge AI Demo\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/0-aSP8prhPI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"has-text-align-center has-text-color wp-block-paragraph\" style=\"color:#444444;font-family:monospace;font-size:12px\">Two real-world cases: prescribed burn detection \u00b7 industrial plume rejection<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"background-color:#1e1e1e;color:#1e1e1e\"\/>\n\n\n<!-- ============ VERIFICATION CHAIN (remplace \"Kill Chain\") ============ -->\n\n<h2 class=\"wp-block-heading has-text-color\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">Verification chain<\/h2>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:15px\">Every signal retained by L1 becomes a tracked event. Its descriptors \u2014 spatio-temporal dynamics, visual signature \u2014 are computed from the first detection and updated for its whole lifetime. Only candidates that need disambiguation are sent to semantic verification. What makes the architecture sustainable is that <strong>volume collapses at every stage<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/chain_dark_v4.svg\" alt=\"Verification chain: video stream \u2192 L1 detection \u2192 tracking and descriptors \u2192 L3 semantic on demand \u2192 decision and registry\"\/>\n<figcaption class=\"wp-element-caption\" style=\"font-family:monospace;font-size:11px;color:#444;\">The most expensive analysis only ever sees a subset of candidates. Volumes are qualitative \u2014 orders of magnitude, not a tuning.<\/figcaption>\n<\/figure>\n\n\n\n<div class=\"wp-block-group has-border-color\" style=\"border-color:#1e1e1e;border-width:1px;margin-bottom:2px\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#eab308;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">L1 \u2014 Real-time detection<\/p>\n\n\n<h3 class=\"wp-block-heading\">Full-frame scan \u00b7 Weak-signal sensitivity<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Scans the entire frame continuously and reacts to the faintest plume-like signals \u2014 a few pixels on the horizon line. Tuned for sensitivity; a few milliseconds per frame.<\/p>\n\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group has-border-color\" style=\"border-color:#1e1e1e;border-width:1px;margin-bottom:2px\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#e67e22;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">Tracking &amp; signal descriptors<\/p>\n\n\n<h3 class=\"wp-block-heading\">Every candidate, followed for its whole lifetime<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Each candidate is tracked from first sighting to expiry. Its spatio-temporal dynamics and visual signature are characterised continuously \u2014 flickering artifacts are discarded at no cost, stable signals frame what the rest of the chain has to judge. No per-site training or configuration.<\/p>\n\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group has-border-color\" style=\"border-color:#1e1e1e;border-width:1px;margin-bottom:2px\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#2980b9;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">L3 \u2014 Semantic verification, on demand<\/p>\n\n\n<h3 class=\"wp-block-heading\">On-device disambiguation \u00b7 Off the real-time path<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Only candidates that require disambiguation are examined, judged on their temporal mosaic \u2014 real fire smoke vs low cloud, valley haze, chimney, glare, dust. Runs fully on-device, outside the real-time critical path. Its verdict is crossed with the current descriptor state to reach the decision.<\/p>\n\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group has-border-color\" style=\"border-color:#1e1e1e;border-width:1px;margin-bottom:32px\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#c0392b;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">Decision, registry &amp; zone memory<\/p>\n\n\n<h3 class=\"wp-block-heading\">One gatekeeper for alerts \u00b7 A memory of the scene<\/h3>\n\n\n<p class=\"wp-block-paragraph\">A single decision stage emits, holds or closes each event, with anti-burst policy and visual proof attached. After several concordant rejections at the same location, a temporary zone memory activates and stops spending the most expensive stage there. Nothing is suppressed for good: zones auto-expire, and any significant evolution of the signal \u2014 growth, intensity, plume-like signature \u2014 triggers a fresh verification. The operator can also qualify rejections (glare, road, low cloud, dust) from the web UI, enriching the site memory with no retraining and no integrator.<\/p>\n\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"background-color:#1e1e1e;color:#1e1e1e\"\/>\n\n\n<!-- ============ BENCHMARK (nouvelle section) ============ -->\n\n<h2 class=\"wp-block-heading has-text-color\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">Benchmark \u2014 FIgLib<\/h2>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:15px\">Camera-based smoke detection has no common evaluation bench: published numbers each live on their own data and definitions. We chose to evaluate on the public academic reference for this use case \u2014 <strong>FIgLib<\/strong> (HPWREN, Southern California): 314 real fire-ignition sequences filmed from lookout towers, with a published state of the art to compare against (SmokeyNet, <em>Remote Sensing<\/em>, 2022).<\/p>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:15px\">FIgLib was never used to train NumidAI. Evaluation runs on SmokeyNet&#8217;s published test split, frame-by-frame like them, in <strong>strict out-of-distribution<\/strong>: fires, sites and conditions the system has never seen.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table style=\"font-family:monospace;font-size:12.5px;border-collapse:collapse;width:100%;\">\n<thead>\n<tr style=\"color:#888;font-size:10px;letter-spacing:0.08em;text-transform:uppercase;\">\n<th style=\"text-align:left;border-bottom:1px solid #333;padding:8px 6px;\">System (frame-by-frame)<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">Precision<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">Recall<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">F1<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">Mean TTD<\/th>\n<\/tr>\n<\/thead>\n<tbody style=\"color:#b0b0b0;\">\n<tr><td style=\"padding:8px 6px;border-bottom:1px solid #1e1e1e;\">ResNet34 1-frame (published baseline)<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">81.6&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">76.6&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">78.9&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">2.81&nbsp;min<\/td><\/tr>\n<tr><td style=\"padding:8px 6px;border-bottom:1px solid #1e1e1e;\">SmokeyNet 2-frame<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">89.8&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">76.5&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">82.6&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">3.12&nbsp;min<\/td><\/tr>\n<tr><td style=\"padding:8px 6px;border-bottom:1px solid #1e1e1e;\">SmokeyNet 3-frame (best published)<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">90.9&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">76.1&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">82.8&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">2.94&nbsp;min<\/td><\/tr>\n<tr style=\"color:#e67e22;font-weight:700;\"><td style=\"color:#e67e22 !important;font-weight:700 !important;padding:8px 6px;border-bottom:1px solid #333;\">NumidAI L1, strict OOD<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;\">90.9&nbsp;%<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;\">77.6&nbsp;%<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;color:#e67e22;\">83.7&nbsp;%<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;color:#e67e22;\">2.18&nbsp;min<\/td><\/tr>\n<\/tbody>\n<\/table><figcaption class=\"wp-element-caption\" style=\"font-family:monospace;font-size:11px;color:#444;\">SmokeyNet: figures as published by the authors on their test split. NumidAI: L1 stage alone, same frame-by-frame counting, same decision threshold.<\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group has-border-color\" style=\"border-color:#1e1e1e;border-width:1px\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">What frame-by-frame doesn&#8217;t tell you<\/p>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:15px\">An alert system is judged per fire detected, per delay, and per false-alarm load imposed on the crews. NumidAI natively operates in a temporal regime: it exploits the persistence of signals, so isolated, unstable detections never qualify as alerts. FIgLib, sampled at one frame per minute, sits far below that regime \u2014 so we adopt a <strong>measurement convention<\/strong> to bring the bench closer to it: an alert is declared after two consecutive detections, one minute of persistence, the benchmark&#8217;s own step. On a real stream this persistence is observed in seconds; the convention is an approximation, <em>more<\/em> constraining than real operation. Measured per event on the same split, strict OOD:<\/p>\n\n\n<figure class=\"wp-block-table\"><table style=\"font-family:monospace;font-size:12.5px;border-collapse:collapse;width:100%;\">\n<thead>\n<tr style=\"color:#888;font-size:10px;letter-spacing:0.08em;text-transform:uppercase;\">\n<th style=\"text-align:left;border-bottom:1px solid #333;padding:8px 6px;\">Profile \u2014 2 consecutive detections<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">Fires detected<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">&lt; 5 min<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">Median TTD<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">FP (%)<\/th>\n<th style=\"text-align:right;border-bottom:1px solid #333;padding:8px 6px;\">FP\/h<\/th>\n<\/tr>\n<\/thead>\n<tbody style=\"color:#b0b0b0;\">\n<tr><td style=\"padding:8px 6px;border-bottom:1px solid #1e1e1e;\">Sensitivity profile<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">100&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">87.8&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">2.0&nbsp;min<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">5.7&nbsp;%<\/td><td style=\"text-align:right;padding:8px 6px;border-bottom:1px solid #1e1e1e;\">2.82<\/td><\/tr>\n<tr style=\"color:#e67e22;font-weight:700;\"><td style=\"color:#e67e22 !important;font-weight:700 !important;padding:8px 6px;border-bottom:1px solid #333;\">Operations profile + partial L3*<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;\">100&nbsp;%<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;\">75.6&nbsp;%<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;\">3.0&nbsp;min<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;\">0.10&nbsp;%<\/td><td style=\"color:#e67e22 !important;font-weight:700 !important;text-align:right;padding:8px 6px;border-bottom:1px solid #333;\">0.038<\/td><\/tr>\n<\/tbody>\n<\/table><figcaption class=\"wp-element-caption\" style=\"font-family:monospace;font-size:11px;color:#444;\">Per fire event, strict OOD. FP (%): share of emitted alerts that are false. FP\/h: false alarms per fire-free hour, per stream \u2014 different denominators, not derivable from each other. * FIgLib&#8217;s one-frame-per-minute format only allows part of the continuous-stream L3 to run.<\/figcaption><\/figure>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#666;font-size:13px\">FIgLib is a true-positive-oriented bench, centred on known ignitions: it under-represents the diversity and frequency of field false positives (morning haze, low cloud, grazing light, dust, night lighting). That&#8217;s precisely where the full verification chain earns its keep \u2014 and what a field pilot has to measure.<\/p>\n\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"background-color:#1e1e1e;color:#1e1e1e\"\/>\n\n\n<!-- ============ OPERATOR INTERFACE (nouvelle section) ============ -->\n\n<h2 class=\"wp-block-heading has-text-color\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">Operator interface<\/h2>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:15px\">The module serves its own web UI \u2014 nothing to install, reachable locally or over the network. Every journal event links to the temporal mosaic the verification was judged on: the verdict and what produced it, read together. Structured telemetry (MQTT, WebSocket, HTTP&nbsp;API) plugs into an existing supervision; since the decision is made on board, the uplink carries events, not video, and stays usable on a poor or intermittent link.<\/p>\n\n\n\n<div style=\"max-width:640px;margin:8px auto 24px auto;\">\n<figure style=\"margin:0;\">\n<a href=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_dashboard.png\" target=\"_blank\" rel=\"noopener\" style=\"display:block;\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_dashboard.png\" alt=\"NumidAI dashboard: live stream, verification in progress, session summary\" style=\"width:100%;height:auto;display:block;border:1px solid #1e1e1e;\"\/>\n<\/a>\n<figcaption style=\"font-family:monospace;font-size:11px;color:#444;margin-top:8px;line-height:1.5;text-align:center;\">Dashboard \u2014 a no-alert session: 38 min on a hard site in grazing light, 11 signals examined and rejected (detailed in the false-positives block below). Click any screenshot to open it full size.<\/figcaption>\n<\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">A confirmed ignition \u2014 journal and its evidence<\/p>\n\n\n\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;margin:8px 0 24px 0;\">\n<figure style=\"margin:0;\">\n<a href=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_journal.png\" target=\"_blank\" rel=\"noopener\" style=\"display:block;\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_journal.png\" alt=\"Session journal: successive confirmations on a real ignition\" style=\"width:100%;height:440px;object-fit:cover;object-position:top;display:block;border:1px solid #1e1e1e;\"\/>\n<\/a>\n<figcaption style=\"font-family:monospace;font-size:11px;color:#444;margin-top:8px;line-height:1.5;\">Session journal \u2014 successive confirmations on a real ignition, with score, signal size and verification latency. <span style=\"color:#666;\">\u00b7 click to expand<\/span><\/figcaption>\n<\/figure>\n<figure style=\"margin:0;\">\n<a href=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_mosaic_event.png\" target=\"_blank\" rel=\"noopener\" style=\"display:block;\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_mosaic_event.png\" alt=\"Temporal mosaic of the same confirmed fire event\" style=\"width:100%;height:440px;object-fit:cover;object-position:top;display:block;border:1px solid #1e1e1e;\"\/>\n<\/a>\n<figcaption style=\"font-family:monospace;font-size:11px;color:#444;margin-top:8px;line-height:1.5;\">The temporal mosaic of one of these events \u2014 the evidence the verdicts link back to. <span style=\"color:#666;\">\u00b7 click to expand<\/span><\/figcaption>\n<\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">Same mechanism, another site<\/p>\n\n\n\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;margin:8px 0 24px 0;\">\n<figure style=\"margin:0;\">\n<a href=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_journal_rejections.png\" target=\"_blank\" rel=\"noopener\" style=\"display:block;\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_journal_rejections.png\" alt=\"Session journal: successive confirmations on another site and another plume type\" style=\"width:100%;height:440px;object-fit:cover;object-position:top;display:block;border:1px solid #1e1e1e;\"\/>\n<\/a>\n<figcaption style=\"font-family:monospace;font-size:11px;color:#444;margin-top:8px;line-height:1.5;\">Session journal \u2014 successive confirmations on another site and another plume type. <span style=\"color:#666;\">\u00b7 click to expand<\/span><\/figcaption>\n<\/figure>\n<figure style=\"margin:0;\">\n<a href=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_mosaic_rejection.png\" target=\"_blank\" rel=\"noopener\" style=\"display:block;\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_mosaic_rejection.png\" alt=\"The corresponding temporal mosaic\" style=\"width:100%;height:440px;object-fit:cover;object-position:top;display:block;border:1px solid #1e1e1e;\"\/>\n<\/a>\n<figcaption style=\"font-family:monospace;font-size:11px;color:#444;margin-top:8px;line-height:1.5;\">The corresponding temporal mosaic. <span style=\"color:#666;\">\u00b7 click to expand<\/span><\/figcaption>\n<\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">False positives \u2014 hard site, grazing light<\/p>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:15px\">Back to the no-alert session of the dashboard above: everything the verification examines is <strong>rejected<\/strong> and no alert goes out. In its journal below, after several concordant rejections at the same spot, the temporary zone memory activates \u2014 \u201cheld\u201d is not a hesitation, it&#8217;s an economy: the system has already ruled on that zone and stops spending the most expensive stage there. Any significant evolution of the signal triggers a fresh verification.<\/p>\n\n\n\n<div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;margin:8px 0 24px 0;\">\n<figure style=\"margin:0;\">\n<a href=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_qualification.png\" target=\"_blank\" rel=\"noopener\" style=\"display:block;\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_qualification.png\" alt=\"Rejections, automatic holds by zone memory, and operator confuser qualification menu\" style=\"width:100%;height:440px;object-fit:cover;object-position:top;display:block;border:1px solid #1e1e1e;\"\/>\n<\/a>\n<figcaption style=\"font-family:monospace;font-size:11px;color:#444;margin-top:8px;line-height:1.5;\">Rejections, automatic holds by zone memory, and the operator&#8217;s confuser qualification menu (glare, road, low cloud, dust). <span style=\"color:#666;\">\u00b7 click to expand<\/span><\/figcaption>\n<\/figure>\n<figure style=\"margin:0;\">\n<a href=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_retained_fullscreen.png\" target=\"_blank\" rel=\"noopener\" style=\"display:block;\">\n<img decoding=\"async\" src=\"https:\/\/numidai.com\/wp-content\/uploads\/2026\/09\/ui_retained_fullscreen.png\" alt=\"Fullscreen view of a held event on a few-pixel signal\" style=\"width:100%;height:440px;object-fit:cover;object-position:top;display:block;border:1px solid #1e1e1e;\"\/>\n<\/a>\n<figcaption style=\"font-family:monospace;font-size:11px;color:#444;margin-top:8px;line-height:1.5;\">Fullscreen view of a held event from the same session, on a signal a few pixels wide. <span style=\"color:#666;\">\u00b7 click to expand<\/span><\/figcaption>\n<\/figure>\n<\/div>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#444;font-family:monospace;font-size:11px\">Screenshots of the NumidAI web UI displaying streams decoded on the module, live or replayed. Streams used: HPWREN (University of California San Diego) and explore.org (Institute for Wildlife Studies).<\/p>\n\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"background-color:#1e1e1e;color:#1e1e1e\"\/>\n\n\n<!-- ============ STACK (mis \u00e0 jour) ============ -->\n\n<h2 class=\"wp-block-heading has-text-color\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">Stack<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #1e1e1e;padding:20px;\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">Hardware &amp; I\/O<\/p>\n\n\n<ul class=\"wp-block-list\" style=\"font-family:monospace;font-size:12.5px;\">\n<li>NVIDIA Jetson Orin NX 16 GB \u00b7 \u224824 W<\/li>\n<li>RTSP H.264\/H.265 \u00b7 USB \u00b7 CSI \u2014 720p min, 4K recommended at long range<\/li>\n<li>Fixed and step-rotating cameras (scene recognition)<\/li>\n<li>4 simultaneous streams per module<\/li>\n<li>Alerts out via MQTT \u00b7 WebSocket \u00b7 HTTP(S) API<\/li>\n<\/ul>\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"border:1px solid #1e1e1e;padding:20px;\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:10px;letter-spacing:0.1em;text-transform:uppercase\">Software<\/p>\n\n\n<ul class=\"wp-block-list\" style=\"font-family:monospace;font-size:12.5px;\">\n<li>C++20 \u00b7 NVIDIA DeepStream 7.x \u00b7 TensorRT<\/li>\n<li>Detector trained on a ~300k-image proprietary corpus (day\/night, seasons, terrains, confusers)<\/li>\n<li>Embedded semantic verification model<\/li>\n<li>Lock-free async architecture \u00b7 web UI served on-board<\/li>\n<li>No cloud compute \u2014 video never leaves the site<\/li>\n<\/ul>\n\n<\/div>\n\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"background-color:#1e1e1e;color:#1e1e1e\"\/>\n\n\n<!-- ============ STATUS (remplace le bandeau demonstrator) ============ -->\n\n<h2 class=\"wp-block-heading has-text-color\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">Status &amp; known limits<\/h2>\n\n\n\n<div class=\"wp-block-group has-border-color\" style=\"border-color:#1e1e1e;border-width:1px\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#b0b0b0;font-size:15px\"><strong>Working prototype on target hardware<\/strong>, exercised on continuous or replayed public streams and benchmarked on FIgLib. Next critical step: a long-duration validation on operational streams, in the field \u2014 the production false-alarm rate and early recall (fires caught in their first minutes) are the metrics that matter to end users.<\/p>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-size:14px\">An alert system is chosen on its failure cases as much as on its averages. Known limits, stated upfront: night performance is not yet sufficiently characterised (thermal \/ NIR is the identified path); continuously panning cameras are not handled (step-rotating ones are, via scene recognition); the full L3 chain in continuous-time regime is still under validation.<\/p>\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"border-left-color:#2a2a2a;border-left-width:2px;color:#b91616;padding-left:12px;font-family:monospace;font-size:11px\">Looking for a field pilot: one monitored massif, one season, real streams. Benchmark protocol and detailed result tables available on request.<\/p>\n\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-alpha-channel-opacity has-background\" style=\"background-color:#1e1e1e;color:#1e1e1e\"\/>\n\n\n<!-- ============ CONTACT (inchang\u00e9) ============ -->\n\n<h2 class=\"wp-block-heading has-text-color\" style=\"color:#c0392b;font-family:monospace;font-size:11px;letter-spacing:0.12em;text-transform:uppercase\">Contact<\/h2>\n\n\n\n<p class=\"has-text-color wp-block-paragraph\" style=\"color:#888;font-family:monospace;font-size:13px\">For field validation partnerships, technical collaboration, or any inquiry \u2014 <a href=\"https:\/\/numidai.com\/index.php\/about\/\" style=\"color:#e8e8e8;\">see the About page \u2192<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2014 Wildfire detection \u00b7 Edge AI \u00b7 Real Time Early wildfire detection.Embedded. Verified on-device.No cloud inference. NVIDIA Jetson Orin NX \u00b7 C++ \/ DeepStream \u00b7 staged on-device verification chain NumidAI turns a single edge device and any standard camera stream into an autonomous wildfire detection system. It is built around one operational truth: the difference &#8230; <a title=\"Home\" class=\"read-more\" href=\"https:\/\/numidai.com\/\" aria-label=\"Read more about Home\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-198","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/pages\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/comments?post=198"}],"version-history":[{"count":24,"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/pages\/198\/revisions"}],"predecessor-version":[{"id":401,"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/pages\/198\/revisions\/401"}],"wp:attachment":[{"href":"https:\/\/numidai.com\/index.php\/wp-json\/wp\/v2\/media?parent=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}