Skip to content

Artificial intelligence video surveillance, explained end to end

Artificial intelligence video surveillance is four operations in a row, and only the middle two are new. Your camera already does the first and the last. This page walks all four, names what each one gets wrong, and says where the model is weak.
Run it on a clip
  • No face recognition, ever
  • Works on ONVIF and RTSP cameras
  • Categories, never identities
01 The four stages, one row each

Connect, detect, classify, alert. The alert storm is made in stage two and fixed in stage three.

Connect

A stream URL, and nothing else changes

You give it an RTSP URL or let it discover the camera over ONVIF, and it opens the sub stream, which is the low resolution copy your camera is already producing for its own app. Nothing is installed on the camera, no firmware is touched, and your recorder keeps recording exactly as it does today. If the camera is behind NAT, the connector runs on the same network and only the events leave it.

Where this goes wrong: a camera whose sub stream is set to 1 fps, or an H.265 profile the recorder is holding exclusively. Both are settings on the camera, and both are a five minute fix.

Detect

Which pixels changed, and did enough of them change together

A background model of the empty scene is built from the stream and updated as light drifts. Every sampled frame is compared against it, the difference is thresholded, then put through an erosion and a dilation so single pixel sensor noise dies and real regions survive. What is left is grouped into connected components, and components that persist across neighbouring frames are joined into one event with a start, an end and a motion area.

Where this goes wrong: everything. This is the stage your recorder already has, and it is the stage that fires at rain, headlights, a branch, an infrared moth and the auto exposure hunting at dusk. Detection alone cannot tell you what moved, only that something did.

Classify

What was it, how sure are we, and in one line what happened

Each event is cropped at its two or three strongest frames and those crops, not the video, go to the model. It returns one of five categories, person, vehicle, animal, package or other motion, a confidence value, and a one line description of what is in the crop. That is what turns a motion trigger into an event you can read in a list without opening the footage.

Where this goes wrong: a subject that is mostly out of frame, a crop that is almost entirely infrared bloom, or an object at the very edge of the useful range. The confidence value drops, and a low confidence event is still shown, still classified, and still yours to judge.

Alert

Only the events that survived your own rules

An event has to pass three filters before anything reaches you: it must not be inside an exclude zone, it must last longer than your minimum duration, and its class must be one you asked to hear about. What survives is emailed, posted to a webhook or dropped into Slack. Everything else stays in the timeline, searchable, without paging anyone at 3am.

Where this goes wrong: zones drawn too generously. A polygon over the whole road also removes the person who walks up the road to your gate, so draw it at the kerb and not at the fence.

Stages two and three run for real in the demo on the homepage, in your own browser, on a clip you can replace with your own. If you want the capability list rather than the mechanism, read the AI video analytics software features.

02 What the model is handed, and what it hands back

The model never sees your video. It sees a few still crops, and it answers three questions.

This is the part people are right to ask about, so it is written as a specification rather than as a promise. The detection stage runs where the footage is. Only the crops around an event that already passed your filters are sent to be classified, and the answer is three fields wide.

If the classification call fails or is rate limited, the event stays in the timeline marked unclassified with its real motion data intact. We do not substitute a guess, because a guessed label is worse than an honest gap.

Field What it holds
Input Two or three JPEG crops, roughly 320px on the long edge, taken at the frames with the most motion
Never the input The clip, the full frame, the audio, the camera name, your address, or any identifier of a person
class person, vehicle, animal, package, other motion
confidence A value between 0 and 1, rendered as a percentage on the event row
description One line, what is visibly happening in the crop
On failure unclassified, with the motion data kept and the reason shown

The same contract is described from the buyer's side on enterprise security camera systems, with the access control, retention and DPA questions answered next to it.

03 The line the product does not cross

It classifies categories. It does not recognise people.

There is no face template, no face matching, no gait analysis and no re-identification of a person across cameras or across days. This is not a setting with a default, and it is not a policy that a future release quietly reverses. It is the shape of the pipeline: the model is asked for a category and a confidence, and nothing in the system stores a biometric identifier to compare against.

In Illinois, Texas and Washington that distinction is the difference between a purchase your counsel signs off and a purchase that needs written consent from everyone who walks past your camera. It is also, separately, the right way to build it.

A person was in the yard for 40 seconds yes
A vehicle entered at 02:14 and left at 02:19 yes
Something moved and it was probably rain yes, and it will not alert
That was the same person as on Tuesday no
That was a specific named individual no
Match this face against a watch list no
04 Where it is weak, named on purpose

Four conditions where this gets worse, and what to do about each.

Heavy rain straight onto the dome

Water on the lens is not noise, it is real change across the whole frame, so the detector is right and useless at the same time.

Raise the minimum motion area, and if the camera has a housing with a lip, use it. A hooded camera loses very little field of view and most of the rain.

Near total darkness with no working infrared

If the frame is mostly sensor noise the background model has nothing stable to hold, and the crops the model sees are grain.

Fix the infrared illuminator or add any light at all. Detection quality follows the exposure, not the software.

A subject mostly out of frame

A shoulder and an elbow at the edge of the shot classify badly, and honestly so: the confidence value drops.

Widen the field of view or lower the camera. Events near the frame edge are worth watching, not worth alerting on.

A camera pointed at a public road

A road is a continuous source of real, correctly detected vehicles, none of which you care about.

This is what exclude zones are for, and it is the single change that fixes most alert storms. Draw the polygon at the kerb.

The physics behind most of these is worth twenty minutes if your recorder is currently unusable: why security cameras send false triggers.

05 Asked most often about the pipeline

Three questions this page raises.

01

Does the detection run in the cloud?

The motion detection runs where the footage is: in your browser in the demo on this page, and next to your cameras on a live site. Only the small still crops around an event are sent to be classified, and only for events that already passed your zones and your minimum duration.

02

How much bandwidth does this use?

Far less than streaming the camera, because the video never leaves. What leaves is a few JPEG crops per event, each roughly 320px on the long edge. A quiet overnight camera can go hours without sending anything at all.

03

What frame rate does it need?

The detector samples at around 8 frames a second, which is enough to catch a person walking and cheap enough to run on many cameras at once. A sub stream at 10 to 15 fps is plenty, and that is what most cameras already publish.

Run stage two and three yourself.

The demo on the homepage does the real detection in your browser and the real classification on the events it finds. No account, no card, and no limit on how many times you run it.