A tour through one of computer vision's hardest problems - finding, tracking, and identifying targets that are just a few faint pixels wide in the infrared world.
A few dim pixels flicker at the edge of a sensor’s field of view. It could be a bird. It could be sensor noise. It could be a drone, a distant aircraft, or something moving very fast toward something that matters. You have a fraction of a second and almost no information. What do you do?
This post is about that speck - and about why turning it into a decision is one of the most quietly difficult problems in computer vision.
Before the physics, the stakes - because they’re what make the hard parts worth solving. The same core problem appears across wildly different domains:
In every case the pattern is the same: a target that is far is a target that is small, and a target that is small has thrown away almost everything a normal vision system relies on. No shape. No texture. No color. Just a faint smudge of intensity, and a background doing its best to look exactly like it.
That is the thesis of this post: infrared small-target detection is a real, high-stakes computer vision problem, and almost none of it looks like the object detection you’ve seen on ImageNet. Let me build up to why, one layer at a time.
In the summer of 1800, William Herschel placed a prism in a beam of sunlight, split it into a spectrum, and positioned thermometers at each color band. When he moved a thermometer past the red end - where there was no visible light at all - the temperature kept rising. He had discovered infrared radiation: electromagnetic waves that carry energy, are emitted by every warm object in the universe, and are completely invisible to the human eye.
Two centuries later, that accidental discovery sits at the heart of one of the hardest sensing problems in modern defence and robotics. The operating principle is simple: every object above absolute zero emits thermal radiation. Your phone. The ocean surface. A cloud. A stealth jet at 10,000 meters. The challenge is using that emitted radiation to find specific objects - especially ones that don’t want to be found.
The physics that makes this possible also defines its difficulty. The Stefan–Boltzmann law says total radiated power per unit area scales steeply with temperature:
\[M = \varepsilon \, \sigma \, T^4\]where \(\sigma = 5.67 \times 10^{-8}\) W m⁻² K⁻⁴ and \(\varepsilon\) is emissivity. Double the temperature and you get 16× more emitted power - a jet exhaust at 600 °C is not slightly brighter than the sky in IR; it radiates in an entirely different intensity regime. Wien’s displacement law says where that radiation peaks:
\[\lambda_{\text{max}} = \frac{b}{T}, \qquad b = 2.898 \times 10^{-3} \ \text{m·K}\]A human body at 310 K peaks around 9.4 μm, deep in the thermal infrared; a hot engine at 1200 K peaks near 2.4 μm. Sensors built for different spectral bands see very different things in the same scene at the same moment.
It helps to split the infrared into two conceptual halves, because they behave like different worlds:
Reflected infrared (NIR, SWIR) mostly carries reflected light, like the visible band does - you still need illumination from somewhere. A SWIR image often looks eerily like a black-and-white photograph, because the underlying physics (light bouncing off surfaces) is the same as what your eye does.
Emitted infrared (MWIR, LWIR) is the interesting half: thermal emission, light that objects radiate simply because they are warm. You don’t need the sun. Darkness is not an obstacle. The scene lights itself.
| Band | Wavelength | What It Sees |
|---|---|---|
| NIR | 0.7–0.9 μm | Reflected solar, similar to visible light |
| SWIR | 1–3 μm | Haze-penetrating; needs external illumination |
| MWIR | 3–5 μm | Hot objects, engine exhaust; strong solar reflection |
| LWIR | 8–14 μm | Room-temperature objects; fire, humans, vehicles |
| FIR | >14 μm | Mostly absorbed; laboratory and astronomy use |
The MWIR and LWIR bands sit inside atmospheric windows - spectral ranges where water vapor, CO₂, and ozone absorb minimally, letting thermal radiation travel long distances without being eaten by the air itself. These are the bands used in long-range surveillance and early-warning systems.
WHY NOT JUST USE RADAR?
IR sensing is passive - it emits nothing, making the sensing platform invisible to the target. Radar can be jammed, spoofed, or absorbed by stealth coatings. A stealth aircraft optimized against radar still has a thermal signature from its engines, airframe heating, and exhaust plume. You cannot coat away thermodynamics. IR and radar are complementary: each catches what the other misses.
Nothing illustrates “different bands see different worlds” better than pointing two great telescopes at the same object:
What one band hides, another reveals. That contrast - often invisible in RGB - is what we get to exploit.
Here is the problem stated plainly: imagine trying to spot a single lit match from a kilometer away, through a dirty window, in a room full of candles.
At long range - 30–50 km - a target of interest subtends a tiny angle on the sensor’s focal plane array. A widely used convention from the SPIE small-target literature is that a “small” target occupies less than about 0.15% of the image area: typically a compact blob between 2×2 and 9×9 pixels, in the hardest cases barely more than a point, even sub-pixel. Think about what that throws away:
Can you find the target below before you slide to the answer? The left frame is a raw IR image; the right is the ground-truth mask.
Let’s try one more time? Left is your feed input and right image is the ground-truth mask.
So the entire toolkit of modern object detection - the toolkit built around appearance - is quietly unavailable. What remains is subtler: a faint bump in intensity that must be separated from a background actively, structurally trying to imitate it.
That reframing is the heart of the field. We are not asking “what is this object?” We are asking “which of these thousands of bright specks is the one that matters?”
If detection were just “find the brightest pixel,” this post wouldn’t exist. The difficulty comes from the background, and it comes in two distinct flavors:
Noise - random, unstructured sensor fluctuation. Annoying, but statistically well-behaved; you can average it down. The sensor’s own limit here is its NETD - the smallest temperature difference it can resolve above its own noise.
Clutter - structured background that looks target-like: cloud edges, sea-surface glint, terrain gradients from differential solar heating, transient hot spots from atmospheric turbulence. Clutter is the real adversary, because it doesn’t average away. A bright cloud edge can be more “target-like” than the target.
This distinction is why the field cares about two different ratios. Signal-to-noise ratio (SNR) compares the target to random noise:
\[\text{SNR} = \frac{\mu_t - \mu_b}{\sigma_n}\]where \(\mu_t\) is target intensity, \(\mu_b\) the local background mean, and \(\sigma_n\) the noise standard deviation. Signal-to-clutter ratio (SCR) compares the target to the structured variation of its own neighborhood:
\[\text{SCR} = \frac{\mu_t - \mu_b}{\sigma_b}\]with \(\sigma_b\) the local background standard deviation. When SCR is low, the target is barely distinguishable from its surroundings - and that, far more than raw noise, is what makes a scene hard.
The severity of the false-alarm constraint is easy to underestimate. In operational systems the acceptable false-alarm rate is measured per hour, not per frame. A sensor running at 30 fps processes 108,000 frames per hour - one false alarm per 100,000 frames is already one per hour. The detection threshold must be exquisitely calibrated, and the field measures the resulting trade-off explicitly:
The shape of the problem: every method degrades as SCR falls, and the interesting comparisons happen at the low-SCR end, at a fixed false-alarm budget. Temporal integration (more on this below) is what keeps the top curve up where single-frame methods fade.
The central tension never goes away: detection versus false alarms. A system that never misses but cries wolf constantly is as useless as one that is silent but blind. Everything interesting in this field happens along that trade-off curve.
Deep learning runs on data, and infrared small-target detection is chronically, structurally short of it. Three reasons, in increasing order of stubbornness.
Capturing infrared imagery is hard and expensive. IR detectors come in two families: cooled detectors (InSb, HgCdTe) are cryogenically cooled to suppress their own thermal self-noise - exquisitely sensitive, ideal for faint distant targets, but bulky, power-hungry, and costly; uncooled microbolometers operate at ambient temperature - cheaper, smaller, lower-power, at the cost of sensitivity. Either way, an IR data-collection campaign is a serious logistical undertaking in a way that photographing cats is not.
The interesting data is sensitive. The domains where small-target detection matters most - defence above all - are exactly the domains where imagery is restricted, export-controlled, or classified. The most operationally relevant datasets are the least shareable.
Annotation is brutal. Labeling a cat is trivial. Labeling a 3-pixel target that trained analysts squint at - consistently, across thousands of frames - is slow, error-prone, and genuinely ambiguous. Ground truth itself is hard to establish.
The result is a field that has learned to make the most of a handful of open benchmarks. If you work here, you know them by name: SIRST and its successors NUAA-SIRST and NUDT-SIRST, the larger IRSTD-1k, the MDvsFA dataset that frames detection-versus-false-alarm as an explicit trade-off, and the anti-UAV sequences on the tracking side. These are the shared proving grounds where methods are compared apples-to-apples.
A note on my own work: the operational data I work with is not public, and this post deliberately stays on the public side of that line. That constraint is also why shared benchmarks matter so much - they let the community make progress on the problem structure without access to anyone’s restricted imagery.
Broadly, there are two philosophies for pulling a target out of clutter. They disagree in an interesting way, and the frontier is where they meet.
Classical methods start from an assumption about the scene and exploit it - no training data required, which, given the famine above, is a real advantage. Three lineages matter.
Background suppression. Estimate what the background should look like, subtract it, and whatever bright residue remains is a candidate. The workhorse is the Top-Hat transform: apply a morphological opening (erode, then dilate - removing bright structures smaller than the structuring element), then subtract:
\[T_{x,y} = I_{x,y} - (I \circ B)_{x,y}\]What survives is whatever was too small to survive the opening - small, bright targets. Max-mean and max-median variants replace the fixed structuring element with local statistics for messier backgrounds. Simple, fast, and still a sensible baseline.
Local contrast. Our visual system is exquisite at spotting a bright thing against a locally darker surround - it’s why a dim star is visible against a dark sky but vanishes at dawn. The Local Contrast Measure (LCM) family formalizes this: for each location, ask how much brighter it is than its neighborhood. The tricky part is scale: a fixed window either misses small targets or over-responds to texture, so multi-scale variants aggregate across window sizes.
Low-rank + sparse decomposition. The most elegant idea in the classical camp. Model the image as the sum of a low-rank background (natural backgrounds are self-similar and redundant) and a sparse foreground (targets are rare and tiny), plus noise:
\[\mathbf{D} = \mathbf{L} + \mathbf{S} + \mathbf{N}\]Solve the decomposition - IPI (Infrared Patch-Image) via Robust PCA, PSTNN and tensor formulations after it - and the target falls out of the sparse component. It’s a genuinely beautiful reframing: the target is defined by its rarity.
The modern camp learns the target/background boundary from data instead of assuming it. But you cannot just point a stock detector at the problem - downsampling erases tiny targets, and the extreme imbalance (in a 640×480 frame, perhaps 6 target pixels against 307,194 background pixels) wrecks naive training losses. So the field built specialized architectures, mostly framing the task as tiny-object segmentation:
THE CLASSICAL–DL CONTINUUM
Attention mechanisms are a learned, adaptive version of local contrast computation - they dynamically weight salient regions based on context. Encoder–decoder architectures are a sophisticated multi-scale filtering framework, echoing the multi-scale LCM approaches of the 1990s. The field isn’t abandoning classical thinking; it is encoding it as inductive bias inside networks that learn the right parameters instead of requiring manual tuning.
The honest summary: this is not a solved problem with a clear winner. That is exactly what makes it a good research area.
Everything above concerns a single frame. But a real system doesn’t get one look - it gets a video stream, and the target moves. That motion is a gift: at low SCR it is often the strongest cue we have. A true target at long range moves slowly relative to the frame rate, but it moves consistently - its trajectory obeys kinematics. A cloud edge at the same intensity might drift, but it does not follow the smooth, physically constrained path of an aircraft or missile. Stitching frames together is where detection becomes a system: detection → tracking → trajectory estimation → classification, each stage handing the next a little more certainty.
Detection → candidates. Per frame, the methods above produce candidate detections. At low SNR/SCR this list is deliberately generous - it includes real targets and clutter, because being too strict here loses faint real targets forever.
Tracking → association across time. Now connect candidates across frames into coherent tracks. The elegant twist is a paradigm choice:
Trajectory estimation → smoothing and prediction. Once you have a track, model its motion: fit a dynamical model, filter measurement noise, predict the next position. Kalman-family filters and their nonlinear cousins are the workhorses. Prediction closes the loop - it tells the tracker where to look next frame, which makes association more robust, which makes the track cleaner.
Classification → what is it, really? And here is the cruel twist: the usual answer - “look at what it looks like” - is unavailable. The target is a few pixels; there is no appearance to classify. So classification leans on what survives the small-target regime:
When you can’t recognize a target by its face, you recognize it by its behavior. That is a genuinely different classification problem from anything in the RGB world, and it is one of the parts I find most intellectually rich.
Within this landscape, my work as a researcher sits at the detection end of the pipeline, under the two constraints that define the field for me:
Data scarcity → synthetic worlds. Because the data we need cannot be collected, scraped, or crowd-sourced, a major thread of my work is procedurally generated IR imagery: backgrounds with physically plausible thermal stratification, atmospheric effects with Kolmogorov turbulence statistics and Beer–Lambert attenuation, target signatures derived from emissivity models across range and aspect, and kinematically consistent motion - every frame fully annotated by construction. The lesson that took longest to internalize: synthetic data does not need to look realistic; it needs to fail in the same ways real data fails. Not photorealism - distribution fidelity. Validating that property when the target distribution itself is restricted is an open methodological problem, and to me one of the most interesting ones.
Low SCR → temporal integration. The second thread is multi-frame detection: architectures that treat a short window of frames jointly, extract local spatial features (a small target is fundamentally a local intensity pattern), and use cross-frame attention to test the question that single frames cannot answer - does this candidate maintain a physically coherent trajectory? - with hard-negative suppression trained specifically on the most confusing clutter: cloud edges, sea glint, sensor artifacts. All of it under a hard embedded-deployment budget (the SWaP-C constraint: size, weight, power, cost), because field systems run on custom hardware, not server racks.
Working where quantitative results on real data cannot be published has been a forcing function for rigour: when you can’t lean on public leaderboards, the internal quality of your ablations and the honesty of your evaluation methodology become everything. Removing the temporal branch from our models costs the most exactly where it matters - at low SCR; removing hard-negative suppression roughly doubles false alarms on textured backgrounds. Those are the kinds of claims I can stand behind publicly, and the discipline of establishing them carefully is, I’ve come to think, excellent training for research.