The Camera Saw It, the Model Missed It: Training Shoplifting Detection AI That Actually Works in Retail CCTV
A clip from the dataset — synthetic retail CCTV with person bounding boxes and 17-keypoint pose overlays. The pose tells you what the box never could.
Retail shrink is a hundred-billion-dollar problem and almost every store on Earth is already covered in cameras. The cameras work. The recording works. What doesn't work, mostly, is the AI sitting on top of it.
Walk into any modern electronics aisle and a generic person-detection model will happily light up bounding boxes on every shopper, every staff member, every kid trailing behind a parent. It will not tell you which one of them just slipped a charger into their jacket pocket. That distinction — between a customer and a thief, in the same body, in the same aisle, two seconds apart — is the entire job of a shoplifting detection system. And it's the job almost no public dataset was built to train.
Our new CCTV Shoplifting Detection Dataset (YOLO + VLM) is built specifically for that distinction. Five thousand frames, a hundred-plus video sequences, person boxes plus 17-keypoint pose, plus natural language captions for vision-language models. All of it synthetic. None of it from a real customer.
A person-detector tells you a body is in the aisle. A shoplifting detector tells you that body just made the specific micro-motion of concealing something into a jacket — and then walked away as if nothing happened. Those are very different alerts.
Why "Person + Object" Isn't Enough
The naive pipeline most early loss-prevention startups tried looked roughly like this: detect the person, detect the product on the shelf, watch for the product to disappear from the shelf and not appear at checkout. It works in PowerPoint. It falls apart in store number 142 on a Saturday afternoon, where two thousand SKUs are reshuffled hourly, fluorescent lighting flickers, half the camera angles miss the keystone shelf, and customers legitimately pick things up and put them back roughly a hundred times every minute.
What actually separates a shoplifting event from a normal browse is not the object — it's the body language. The pause. The glance left, the glance right. The hand that goes into the bag and comes out empty. The shoulder that hunches over the merchandise instead of holding it up to the light. A pose-aware, temporally-aware model can see those signals. A frame-by-frame box detector cannot.
Why Real Footage Is, Effectively, Off-Limits
Retailers do have shoplifting footage. They have a lot of it. They cannot share it. Every clip is one of three things: pending evidence in a prosecution, restricted under data-protection law (the person didn't consent to being recorded, let alone to having their likeness train a model), or under a vendor contract that explicitly forbids reuse for AI training. The footage that does slip onto YouTube is a) low-resolution screen recordings, b) of people who never consented, and c) almost always missing the exact pre-event moments the model most needs to learn.
Synthetic data closes that loop. The "shoplifter" in our dataset is not anyone. We render the same concealment event a thousand ways — different clothing, different store layout, different camera angle, different lighting, different hesitation timing — and we ship pixel-accurate boxes, joint-accurate keypoints, and machine-written captions because we drew the labels before we drew the scene.
What's in the Box
The full package is 5,000+ frames and 100+ video sequences, rendered across electronics retail, grocery aisles, apparel sections, and convenience-store layouts. The open-source Kaggle sample is 400 frames and 8 videos — enough to fine-tune an existing checkpoint and validate that the pose + temporal approach actually moves your metrics.
YOLO + 17-keypoint pose
Every person carries a tight bounding box and a full 17-joint skeleton. That's what lets a downstream classifier read body language — the shoulder hunch, the hand-to-pocket trajectory, the head tilt away from the camera.
Video sequences for temporal models
The 100+ clips are designed for 3D CNNs, video transformers, and TimeSformer-style architectures. A concealment event has a time signature; single-frame detectors will never see it.
VLM-ready captions
Each scene ships with a JSONL caption describing the behavior in natural language ("a person in a black hoodie picks up a phone from the display and places it inside their jacket"). Drop straight into LLaVA, Qwen-VL, or your VLM of choice for fine-tuning.
Realistic store environments
Electronics phone-display tables, grocery shelving, apparel racks, convenience-store endcaps. Lighting includes harsh overhead fluorescent, mixed daylight near windows, and dim back-of-store conditions.
Practical Notes for Training
- Use the pose, not just the box. A YOLO-only baseline on this dataset is fine; a YOLO + pose + small temporal head is dramatically better. The keypoints are why the dataset exists.
- Treat the videos as the primary modality. Most concealment events are 2–4 seconds long. A model with a 16-frame temporal window will outperform a frame-by-frame detector even at a fraction of the parameter count.
- For VLM fine-tuning, pair captions with negatives. Mix legitimate "picks up and puts back" captions in equal proportion to concealment captions. Otherwise the VLM will hallucinate theft into every shopping clip.
- Don't deploy without hard negatives from your own store. The dataset closes the synthetic-to-real gap on behavior; it can't close the gap on your specific shelving and camera placement. Fine-tune on a few hundred real clean clips from the target store before going live.
Who Should Be Training on This
- Retail loss-prevention teams building real-time alert systems on top of existing in-store CCTV.
- Smart-shelf and self-checkout vendors trying to reduce non-scan losses without adding more hardware.
- VLM teams fine-tuning vision-language models for retail behavioral context — the captions are the differentiator here.
- Researchers working on weakly-supervised action recognition; there are very few open shoplifting datasets that are GDPR-clean and ship with both pose and video.
Get the Data
The 400-frame, 8-video open-source sample is on Kaggle now under CC BY 4.0 — enough to prove the approach moves your numbers. For the full 5,000+ frame, 100+ video package, custom store layouts, specific camera HFOV specifications, or branded SKU rendering, get in touch. We render to spec.
The cameras already saw it. The whole point of a shoplifting detector is to make sure the model sees it too — before the merchandise leaves the store.
Related reading: Pedestrian-1K and Pose-based behavior detection.
Related Articles
Who's Holding the Knife? Role-Aware ATM Robbery Detection with Synthetic Data
A 3,000-image synthetic CCTV dataset with offender, victim, gun, and knife classes for ATM security AI.
Read MoreThe First 60 Seconds: Why Most Fire-Detection AI Misses the Fires That Matter Most
Forest-fire datasets won't save a building. Here's how synthetic data finally cracks early-stage CCTV fire detection.
Read MoreHow We Document Our AI Systems and Stay Ready for the EU AI Act
A practical guide to classifying and documenting AI systems under the EU AI Act.
Read More