DRONE INTELLIGENCETechnical Whitepaper
v1.4 Β· 2026 πŸ—“ Changelog Open the platform β†’
ROYAL THAI NAVY Β· DRONE UNIT β€” PREPARED BY iAPP TECHNOLOGY

Aerial Change Detection & Military Object Recognition

A field-ready intelligence platform that turns hours of drone footage into a short, verifiable list of what changed and what is on the ground β€” with coordinates, confidence, and briefing-ready imagery. Built to run on the unit's own hardware, offline.

Livedrone.iapp.co.th
DeploymentOn-prem Β· air-gapped capable
ComputeGPU-accelerated Β· CPU fallback
StatusBoth modules operational

01 Executive summary

A single drone sortie produces tens of minutes to hours of high-resolution video. The bottleneck is no longer flying β€” it is the analyst who must watch every frame to find the one thing that matters. Drone Intelligence automates that work with two complementary capabilities running on a shared imaging pipeline:

  • Change Detection β€” compare two flights over the same route, flown days, weeks or months apart, and surface what changed: new construction, demolitions, encampments, damaged structures, new vessels.
  • Military Object Detection β€” inventory every object of interest in a single clip β€” personnel, vehicles, vessels, aircraft β€” with per-object tracking so each is counted once.

Both modules are deployed and operational today on a password-protected HTTPS console, GPU-accelerated, with an automatic CPU fallback. The system is designed to be installed and run entirely on the unit's own machines β€” no data leaves the building.

Why trust it. Every claim in this document is backed by a reproducible evaluation against ground truth (Section 07), an honest account of what the baseline does and does not catch (Section 12), and a documented API you can drive from your own systems (Section 09).

02 The operational problem

Finding "what changed" or "what to watch" in raw footage still depends on an experienced operator comparing imagery by eye. In practice this means:

Slow

A single video pair can take hours of one analyst's time.

Expensive

Highly trained personnel spend their day on repetitive review.

Error-prone

Eye fatigue causes small but significant changes to be missed.

Not repeatable

Results depend on individual judgement; hard to audit later.

The opportunity is to convert "watch the whole tape" into "review a short, ranked list of what the AI found" β€” moving the analyst from searcher to decision-maker.

03 System overview

Both capabilities sit on one shared, five-stage imaging pipeline, so investment in one improves the other.

Five-stage pipeline
The five-stage pipeline β€” Ingest β†’ Pair β†’ Register β†’ Detect β†’ Report β€” runs end-to-end on the unit's own machine.
StageRoleCore technique
1 Β· IngestExtract frames + GPS/heading telemetryDJI .SRT sidecar, fixed-rate sampling, ffmpeg
2 Β· PairMatch frame A↔B at the same placeGPS nearest-neighbour or DTW on visual descriptors
3 Β· RegisterAlign the two images to pixel levelSIFT + robust similarity/affine fit with geometric, overlap & photometric validation (mis-paired frames rejected, no-data margins masked); identity+ECC for pre-aligned imagery
4 Β· DetectLocate changed / detected regionsChangeFormer (deep) or CIELAB baseline Β· YOLO + ByteTrack
5 Β· ReportRank, de-noise, render outputsJSON Β· overlay MP4 Β· annotated MP4 Β· ranked gallery

04 Change detection

Feed two clips of the same route at different times; the system aligns them and reports the meaningful differences, ranked by confidence and tagged with GPS coordinates pulled from telemetry.

Capabilities

New structures

Buildings, piers, checkpoints, encampments that appeared.

Removals / damage

Demolished, collapsed, shelled or bombed structures.

Terrain & coastline

Shifts in shoreline, earthworks, land use.

New activity

Vessels, vehicles or materiel introduced into a watched area.

Object-level change attribution

Beyond where something changed, the system identifies what changed. Every change region is cross-examined with the aerial object detector (Section 05) on both the before and after frame and classified:

● Added

An object present in the later flight but not the earlier one β€” a vehicle, vessel or aircraft that arrived.

● Removed

An object present earlier but gone later β€” materiel that departed or was destroyed.

● Modified

A recognised object present in both flights inside a changed region β€” it moved, was repositioned or replaced.

● Unknown

A real change with no recognised object β€” terrain, vegetation, structures or lighting.

The final report leads with a tally of added / removed / modified / unknown changes and the identity of each changed object (e.g. "2Γ— added car, 1Γ— removed van"), so an analyst sees the operational meaning of a flight-to-flight comparison at a glance.

Robustness β€” engineered to suppress false alarms

  • Histogram matching (CIELAB) neutralises seasonal and lighting differences between flights.
  • Shadow masking ignores dark low-information regions that otherwise trip naΓ―ve diffs.
  • Robust two-flight alignment β€” SIFT features fit a stable similarity model (not an over-fitting homography); pairs are kept only if the alignment is geometrically valid, overlaps β‰₯70%, and the imagery actually correlates, so mis-paired frames from two separate real flights are rejected instead of producing false changes (typical residual 1–2 px).
  • Area & morphology filtering plus a dynamic floor scaled by alignment error removes speckle.
  • Per-frame detection cap + probability-map blur keep noisy frames from flooding the report.

Detection models

BackendWhat it isWhen used
ChangeFormerTransformer change-detector, pretrained on LEVIR-CDDefault when weights are present (GPU) β€” highest quality
TinyCDLightweight CD networkCPU-only sites
Classical (CIELAB Ξ”E)Colour-space difference, no weightsAlways-available fallback β€” guarantees the system runs out of the box

The fallback design means the platform always produces a result; quality scales up the moment a deep model's weights are dropped in β€” no code change.

Deliverables

Ranked HTML report & gallery

Thumbnails of each detected change, ordered by confidence, click-through before/after.

4-panel overlay video

A | B | aligned-A | change heatmap β€” built for the briefing room.

changes.json

Machine-readable: bbox, area, confidence, change type (added/removed/modified/unknown), identified object class & category, GPS, timestamp.

GPS-tagged detections

Each change carries the coordinate read straight from drone telemetry.

Noto earthquake change detection
Validated on real Maxar pre/post imagery β€” Noto Peninsula earthquake, Japan (2024).
Bay of Bengal cyclone change detection
Coastline & structure change β€” Cyclone Mocha, Bay of Bengal (2023).

05 Object detection

Point the system at a single clip and it inventories every object of interest, frame by frame, then tracks each object across frames so it is counted exactly once.

How it works

  • Aerial-trained detector: the default model is trained on VisDrone (low-altitude drone imagery), so it recognises top-down vehicles, vans, buses and people that generic ground-level (COCO) and satellite (DOTA) models miss entirely. The detector is a drop-in β€” a fine-tuned military model (tanks, naval classes, etc.) loads via a single environment variable with no other change.
  • Tiled (sliced) inference: each frame is split into overlapping tiles that are each analysed at near-native resolution, so a car that is only ~80 px in a 4K frame becomes large enough to detect reliably. This is the single biggest driver of small-object recall in nadir footage.
  • Per-category confidence floors: the vehicles/vessels/aircraft that matter most are kept at a sensitive threshold, while the noisiest class (aerial "pedestrian" over textured ground) must clear a high bar β€” turning a noisy raw output into a clean inventory.
  • Tracking: a persistent ID is assigned to each object across frames, so "9 detections of one truck across 9 frames" is reported as one truck, not nine; objects seen only once are discarded as flicker.
  • Taxonomy: raw classes are mapped into a military taxonomy β€” personnel Β· vehicle Β· vessel Β· aircraft β€” see Section 06.
  • Compute: runs on GPU when available, falls back to CPU automatically.

Deliverables

Annotated playback MP4

Every object boxed and labelled, colour-coded by category, with track IDs.

Order-of-battle summary

Unique object counts by category and by class, plus peak objects-in-frame.

Track table

Per object: ID, category, class, best confidence, first/last-seen time, frame count.

objects.json

Full machine-readable inventory + per-detection records for downstream tools.

06 Supported object types

The shipped aerial detector (VisDrone-trained) recognises the following drone-view classes and maps them to military categories. Colours match the annotated video output.

CategoryDetected classes (default aerial model)Mission relevance
● Personnelpedestrian, peopleDismounted troops, crowds, individuals
● Vehiclecar, van, truck, bus, motor(cycle), bicycle, tricycleGround movement, convoys, logistics
● Vesselboat (+ ship/vessel via military model)Surface craft, small boats, shipping
● Aircraftairplane (+ helicopter/UAV via military model)Fixed-wing & rotary air activity

Extending to dedicated military classes

The taxonomy layer already understands military terminology, so a specialised model trained on military classes is bucketed automatically. Recognised keywords include:

Personnelsoldier Β· infantry Β· pedestrian
Vehicletank Β· APC Β· artillery Β· jeep Β· truck Β· bus
Vesselship Β· frigate Β· warship Β· submarine Β· ferry Β· naval
Aircraftjet Β· helicopter Β· drone Β· UAV

Drop a fine-tuned .pt model in and set DRONE_OBJDET_MODEL; the inventory, tracking, annotation and API all work unchanged. iApp's synthetic-data generator (Section 11) produces the labelled aerial training data to build exactly these models for the Thai context.

07 Accuracy & how we evaluate

We measure against ground truth, not impressions. A 19-scenario benchmark spanning naval harbours, the Thai–Cambodia border, deep-south towns and riverine Bangkok β€” 42 ground-truth changes in all β€” ships with the system, each with a machine-authored solution.json. In addition, three real DJI passes over one route (real_footage/) validate the pipeline on genuine flight imagery.

Evaluation method

Detections are reported in clip-frame coordinates (after oblique warp, camera shake and crop), while ground truth is in base-map coordinates. Our harness projects the ground-truth label map through the identical render functions used to synthesise each clip, so detections and truth land in one coordinate space β€” no hand-derived geometry that could flatter the score. Because each change's ground-truth box is the actual set of pixels that changed (from the AI-graft step), the labels are exact by construction. For every change we record the frames it is visible in, the frames it was detected in, and we tally false positives per frame.

Measured results β€” 19-scenario benchmark, baseline backend

Figures below are the always-available classical baseline (no deep weights on the box) on the high-oblique clips β€” the system's floor, not its ceiling β€” aggregated over all 42 changes.

MetricResult
Scenarios Β· change instances19 Β· 42
Structural-change recall (buildings, encampments, checkpoints, piers…)0.84  (16/19)
Small-object recall (vessel / vehicle clusters)0.22  (5/23)
Overall recall0.50  (21/42)
Mean false alarms / frame0.49
Read this honestly. Across 19 independent scenes the baseline catches 84% of large structural changes β€” the highest-priority targets: new construction, encampments, destroyed buildings, checkpoints. Recall falls on small clustered objects (vessels, vehicle convoys: 22%), which are precisely what the deep change model and the Object-Detection module exist to handle. With 42 labelled changes this is a statistically meaningful floor, not a cherry-picked demo β€” and the deep upgrades close the small-target gap.

Reference benchmarks of the underlying models

ModelPublic benchmarkScore
ChangeFormer (deep CD)LEVIR-CD F1 (Bandara & Patel, 2022)β‰ˆ 0.904
YOLOv8s (object detection)COCO val mAP50-95 (Ultralytics)β‰ˆ 44.9

These are published, third-party-verifiable figures for the model architectures we deploy. Fine-tuning on the unit's own footage is expected to raise field accuracy further.

Controlled change test
Controlled test β€” the heatmap fires only on the planted change, not the background.

08 Security & deployment

Air-gapped capable

Runs fully on-premise; imagery never leaves the unit's network. No cloud dependency at inference time.

Access controlled

Password-gated, signed-cookie sessions over HTTPS (Let's Encrypt). Sessions survive restarts.

DJI-native

Consumes the MP4 + .SRT telemetry the unit's drones already produce.

GPU with CPU fallback

Uses available GPUs for deep models and YOLO; degrades gracefully to CPU.

The current reference deployment runs as a managed system service behind nginx with automatic TLS renewal, isolated from other services on the host. Uploaded footage and results stay in a per-job directory on the unit's machine.

09 API reference

Every capability is available over a documented HTTP API, so the platform can be driven from the unit's own tooling. All endpoints are under https://drone.iapp.co.th; authentication is a signed session cookie obtained from /api/login. Examples use curl.

POST/api/login β€” authenticate, receive session cookie
curl -c cookies.txt -X POST \
  -F username=iapp -F password=β€’β€’β€’β€’ \
  https://drone.iapp.co.th/api/login
# β†’ {"ok": true}   (cookie stored in cookies.txt)
GET/api/scenarios β€” list bundled benchmark scenarios
curl -b cookies.txt https://drone.iapp.co.th/api/scenarios
# β†’ {"scenarios":[{"name":"bangkok_chaophraya","variants":["flylow","flyhigh"], ...}]}
POST/api/run/change β€” start a change-detection job
# A) on a bundled scenario
curl -b cookies.txt -X POST \
  -F scenario=new_construction -F variant=flylow \
  https://drone.iapp.co.th/api/run/change
# B) on your own footage (before/after)
curl -b cookies.txt -X POST \
  -F video_a=@flight_A.mp4 -F video_b=@flight_B.mp4 \
  https://drone.iapp.co.th/api/run/change
# β†’ {"job_id":"f0787d067de3"}
POST/api/run/objects β€” start an object-detection job
curl -b cookies.txt -X POST \
  -F video=@patrol.mp4 \
  -F sample_fps=4 -F conf=0.30 -F include_other=false \
  https://drone.iapp.co.th/api/run/objects
# β†’ {"job_id":"81c579396c8a"}
# fields: video | odclip=<id> | scenario=<name> (+variant, clip), sample_fps, conf, include_other
GET/api/jobs/{id} β€” poll job status & progress
curl -b cookies.txt https://drone.iapp.co.th/api/jobs/81c579396c8a
# β†’ {"status":"running","progress":0.61,"message":"Scanning 22.0s / 29s β€” 7 objects so far"}
# status: queued | running | done | error
GET/api/jobs/{id}/result β€” fetch results when done
curl -b cookies.txt https://drone.iapp.co.th/api/jobs/81c579396c8a/result
# objects β†’ {"result":{"summary":{"n_objects":10,"by_category":{"vehicle":9,"vessel":1},
#            "by_class":{"car":6,"train":2,"truck":1,"boat":1},"device":"GPU"},
#            "tracks":[...], "annotated_video":"od/annotated.mp4"}}
# change  β†’ {"result":{"n_changes":56,"changes":[{"bbox":[x,y,w,h],"confidence":0.97,
#            "polarity":"new","t_seconds_b":...}], "overlay_video":"cd/overlay.mp4"}}
GET/api/jobs/{id}/file?path=… β€” download an output artefact
curl -b cookies.txt -o annotated.mp4 \
  "https://drone.iapp.co.th/api/jobs/81c579396c8a/file?path=od/annotated.mp4"
# change-detection artefacts: cd/overlay.mp4 Β· cd/report.html Β· cd/overlays/pair_XXXX.jpg
GET/api/jobs β€” list recent jobs Β· GET /healthz β€” liveness

Jobs run asynchronously: submit, then poll /api/jobs/{id} until status:"done", then read /result and pull artefacts via /file. The same flow powers the web console.

10 Use cases

MissionApplication
Patrol-route surveillanceDetect new construction, vehicles or anomalous activity along a repeated route.
Post-disaster damage assessmentBefore/after comparison after storms or surges to map damage fast.
Base & harbour monitoringInventory what was added or removed over time.
Maritime watchCount and track vessels, vehicles or personnel in a watched area.

11 Roadmap

Product roadmap
From a proven prototype today to advanced, fine-tuned capability.
PhaseWorkStatus
NowChange detection + object detection deployed end-to-end on the unit consoleDone
NextFine-tuned military object model from synthetic data; deep ChangeFormer weights on the GPU boxIn progress
+ weeksFine-tune on the unit's own drone footage (β‰ˆ30 min, two flights same route)Needs unit footage
+ 1–2 monthsSemantic change classification + analyst consolePlanned
FutureOn-board / live detection during flightPlanned

12 Honest disclosure

We state status plainly β€” that is how trust is earned for real missions.

  • The default change-detection backend on the current box is the classical baseline (no deep weights installed). It catches large structural changes reliably with near-zero false alarms, but misses small clustered objects. Installing ChangeFormer weights is a drop-in upgrade.
  • The shipped object detector is a VisDrone-trained aerial model with tiled inference β€” it reliably finds top-down vehicles on real low/medium-altitude footage that generic (COCO) models miss. It has no naval/aircraft-specific classes yet and can over-trigger "pedestrian" on textured ground (held back by a high per-category confidence floor); a military-fine-tuned model (Section 06/11) is the intended production path.
  • The benchmark scenarios are synthetic, generated from real geography for repeatable, perfectly-labelled evaluation. Field accuracy is confirmed by fine-tuning on the unit's real footage.
What we ask. β‰ˆ30 minutes of real drone video (two flights over one route) lets us fine-tune to the unit's environment within roughly two weeks.

13 Contact

iApp Technology Co., Ltd.
Kobkrit Viriyayudhakorn β€” Founder & CEO
kobkrit@iapp.co.th

Prepared for the Royal Thai Navy Drone Unit. Confidential β€” for authorised partners and customers. Β© iApp Technology.

← Back to the platform