← BMW RESEARCH
PRE-AI 2021 · BMW TECH OFFICE

SMART OBJECTS

Rear-seat object tracker for the car. A RealSense camera in the cabin feeds an AWS Rekognition Custom Labels model trained on Mechanical Turk–labeled frames; a Python tracker on a Jetson keeps state across detections; a small probabilistic model figures out what the passenger may have left behind and what destination it implies. Visualized on the iX’s rear-seat head unit.

A yellow Babolat tennis racket and a black North Face backpack resting on the cognac-leather rear seat of a BMW iX — the kind of cabin scene Smart Objects was built to detect.

Conner Ward built Smart Objects, an in-cabin rear-seat object tracker for BMW of North America, using an Intel RealSense camera, an NVIDIA Jetson, and AWS Rekognition Custom Labels, with the training data labeled via Mechanical Turk through SageMaker Ground Truth.

A RealSense camera in the BMW iX cabin feeds a Rekognition Custom Labels model trained on Mechanical Turk–labeled frames; a Python tracker on the Jetson keeps state across detections, and a small probabilistic model infers what a passenger may have left behind. Conner Ward built it in 2021 at BMW North America's EN-54 Experience Design Lab; it is internal work with no public repository.

SURFACE BMW iX REAR·SEAT HU
STACK REALSENSE · JETSON · REKOGNITION
WINDOW 8 WEEKS · SHIPPED
STATUS INTERNAL · NO PUBLIC REPO
00

What’s in the box?

BRIEF · WHY · BOTTLENECK
Outpainted D435-style frame from inside the BMW iX cabin: a passenger in a Weyland-Yutani t-shirt and black mask sitting in the rear seat with hands in lap; the cabin scene — quilted leather seats, headrests, door cards — extends out to both sides via outpainting.

If a car knows what its passengers brought in — a racket, a backpack, a phone in the cupholder — a long list of cabin behaviors becomes possible: forgotten-object reminders at the door, climate routing, destination inference (you have a tennis racket on Tuesday at 6pm; the model knows you usually drive to the courts). The hard part wasn’t the model. It was getting enough labeled rear-seat imagery to train one, on a research timeline. SMART OBJECTS shipped an end-to-end pipeline that solved the labeling bottleneck by pushing the work to Mechanical Turk through SageMaker Ground Truth, ran inference through AWS Rekognition Custom Labels on a Jetson at the edge, and surfaced detections + suggestions on the iX head unit.

MIRROR DRIVER REAR BACKPACK LOADING… FOV 38°
BMW iX — three cabin cams + a tracked BACKPACK. Drag to rotate, scroll to zoom.
MIRROR DRIVER REAR BACKPACK LOADING… FOV 38°
01

The plan

SENSOR → EDGE → CLOUD → SCREEN · NINE COMPONENTS
SmartObjects prototype system architecture — RealSense camera feeds an Object Detection Wrapper running NVIDIA DeepStream on a Jetson; the wrapper sends image bytes to AWS Rekognition Custom Labels and gets back labels/bboxes/confidence. A Controller module gates the system based on vehicle events. The Real-time Tracker maintains object state and feeds the Probabilistic Model, which receives a Notebook Web GUI's YAML config (current situation + learned context) and event stream (onVehicleUnlock/Start/Stop). Output goes to the Unity Head Unit.
End-to-end — RealSense → Jetson/DeepStream → Rekognition (image bytes out, labels + bboxes + confidence in) → Python tracker → probabilistic model → Unity head unit. The notebook’s Web GUI mocks the car’s state and events for the prototype.
a
Intel RealSense D435 Sensor · cabin-mounted
RGB stream from a camera mounted to the roof or rear-view mirror, framed on the rear seats. 640×360 at the frame rate the Jetson’s pipeline could keep up with.
b
NVIDIA Jetson · DeepStream Edge compute · on-vehicle
The on-vehicle compute. DeepStream wrapped the RealSense stream into the inference pipeline; the Jetson handled tracking + the probabilistic model locally so the head unit got results without a round-trip.
c
AWS Rekognition Custom Labels Detection model · cloud
The detection model itself — image bytes go up, labels + bounding boxes + confidence scores come back. Higher-level than a raw SageMaker training job; the abstraction was right for the timeline (mid-Sep 2021 prototype goal). Labels were a closed vocabulary: racket, ball, ball-tube, helmet, umbrella, backpack, bottle, phone, wallet.
d
SageMaker Ground Truth + MTurk Labeling pipeline
The labeling pipeline. Frames extracted from the RealSense camera were uploaded as a Ground Truth job; Mechanical Turk workers drew tight bounding boxes around the vocabulary objects using a written guide that handled motion blur and occlusion. Pricing landed around $0.036 per HIT with an ~8–10 second median.
e
Python tracker Self-written · no frameworks
Runs on the Jetson. Maintains state of objects across frames (identity + last-seen position + a detection score that ages out over time), triggers warnings when an object’s position changes significantly, and emits the state into the probabilistic model. No DeepSORT or off-the-shelf tracker — a small, legible state machine that knew exactly the few classes it had to handle.
f
Probabilistic model Self-written
Given the current detected objects, a current-situation context (time, weather, mocked passenger count, mocked location), and a learned context (calendar entries, inferred schedule, prior probabilities over the object vocabulary and start/end locations), it returns probabilities for objects that may have left the scene and proposes likely destinations.
g
Controller module Vehicle-event gate
The on/off switch — ties detection to vehicle lifecycle events (onVehicleUnlock, onVehicleStart, onVehicleStop) so the system isn’t inferring on a parked, empty cabin.
h
Node web GUI Control panel · mock bus
A single-page Node app on a notebook that mocks the car’s data feed for the prototype. Reads/writes YAML scenario files (time, weather, start/end locations, passenger count) and emits the lifecycle events the Controller listens for. For prototype v1.0, the car connection itself was mocked; the same surface could be wired to a real vehicle bus later.
i
Unity head-unit visualization Rear-seat screen
The rear-seat screen UI. Live camera tiles with bounding boxes drawn around detected items, a Detected Objects list, and a Suggestions panel surfacing the probabilistic model’s output.
02

Labeling pipeline

BOTTLENECK · MTURK · SYNTHETIC AUGMENTATION
A grainy VHS-quality reenactment of the 18th-century Mechanical Turk — a man in a turban and fur-trimmed red coat seated at a chessboard against a blue-purple backdrop, in a dim wood-paneled study with a candle on a side table.

The bottleneck was labels, not models. Public datasets have almost no rear-seat imagery; every class we cared about needed boxes drawn on our own footage. In-house labeling would have eaten weeks per training round and the EN-54 prototype window was eight weeks total. The pipeline had to be cheap, fast, and re-runnable when the vocabulary changed.

Why Mechanical Turk fit. Bounding-box drawing is the canonical MTurk task — well-scoped, no domain expertise needed (a racket is a racket to anyone), and worker output can be QA’d by consensus. The trust comes from the pipeline, not the worker: each frame went to multiple workers, and the written guide was specific about the failure modes that matter (motion blur, partial occlusion, overlapping objects of the same class) with good and bad examples for each.

SageMaker Ground Truth labeling job configuration — Amazon Mechanical Turk workforce selected, task timeout 1 hour, task expiration 6 hours, price per task $0.036, 8–10 second time estimate.
Workforce config — MTurk, $0.036 per HIT, ~8–10 sec/box.
Label vocabulary panel in the SageMaker Ground Truth job: helmet, umbrella, wallet, racket, backpack, phone — six of the closed-vocabulary classes.
Closed label vocabulary — six of nine classes shown.
A reference image from the worker guide: rear-seat scene with multiple bounding boxes drawn around each object — racket, ball-tube, umbrella, helmet — including partially occluded ones.
Worker-guide reference — tight boxes, edge-to-edge for off-screen objects.
SageMaker Ground Truth dataset view — two thumbnails of rear-seat car interiors with bounding boxes drawn around objects (a person, an item on the far seat). File names start with 2021-08-27 13_02_.
Returned dataset — worker-drawn boxes, ready for Rekognition training.

Creating synthetic data. The Turk-labeled corpus was the seed: bounded by vocabulary, by the eight-week prototype window, and by the per-HIT cost on Mechanical Turk. Synthetic augmentation is how a seed corpus becomes a training corpus — programmatically transforming labeled frames into new training examples without paying for new labels. One labeled frame turned into three; the bounding boxes carry over unchanged because the transform doesn’t move pixels, only re-maps their colors.

Why HSV hue rotation specifically. An in-cabin object detector fails most often on objects it has seen the geometry of but not the color of. A blue Patagonia jacket and a yellow Patagonia jacket are the same shape under the same camera, and the network shouldn’t care — but on a small dataset it learns “jacket = blue” by accident. Rotating hue in HSV space (instead of jittering RGB channels) keeps lightness and saturation intact, so the augmented frames look like physically plausible alternate items rather than the over-saturated, blown-out versions you get from naive RGB perturbation.

What we deliberately did not augment. No flips, no random crops, no perspective warp — the camera is bolted to the rear-view mirror and the rear-seat geometry is fixed, so synthetic geometric variation would teach the model a distribution that doesn’t exist in deployment. No brightness/contrast jitter either: time-of-day variation comes free from the recorded footage and we wanted the network to learn it from real data, not synthetic. The augmentation budget went entirely into the one axis the real corpus was thinnest on — the color of a passenger’s carry-on.

FIG · DATA  Synthetic Data Generation RGB → H·S·V, ΔH ∈ [0°, +60°, +120°]
Original frame — blue jacket on the rear seat of a BMW iX cabin.
HSV-rotated frame — the same jacket re-tinted yellow.
HSV-rotated frame — the same jacket re-tinted green.

One labeled frame — three training examples. The bounding boxes are invariant to hue rotation, so MTurk pays once and the dataset triples.

03

Probabilistic model

RECENCY · CONFIDENCE · SCORE

The tracker emits a per-object detection score that ages over time and weights how many cameras currently see the object — the basis for “was that object actually there or did we miss a frame?” The probabilistic model on top then combines the live detection set with the current situation (time, weather, location, passenger count) and the learned context (calendar entries, inferred schedule, priors over the vocabulary and start/end locations) to return two things: probabilities for objects that may have left the scene, and a suggested destination consistent with the cabin’s contents.

FIG · DETECTION SCORE detectionScore equation: detectionScore = ((5 / (1 + delta-t)) * 0.8) + ((c-prime over c) * 0.2)

Δt = frames since last detection · c′/c = cameras seeing the object / total cameras in the cabin. Recency dominates (0.8); multi-camera agreement is the secondary signal (0.2).

04

In-car prototype

CONTROL PANEL · CONCEPT RENDER · WHAT THIS IS ABOUT

For prototype v1.0 the car’s data feed was mocked by a notebook running a Node single-page app. The same app emits the lifecycle events the on-vehicle Controller is listening for, so the rest of the pipeline runs unchanged whether the events come from a YAML scenario or a real bus.

Running prototype on the BMW iX rear-seat head unit — Smart Objects screen showing Live View with bounding boxes around detected items in two camera tiles, a Detected Objects list (rocket, wallet, dingo), and a Suggestions panel below.
The shipped prototype, photographed on the iX rear-seat head unit — live camera tiles with bounding boxes, the detected-objects list, and the suggestion panel.
SmartObjects 'Current Scenario' web GUI: Time and day (Tue 9/07/21 9:30 am), weather (cloudy 68 F start, sunny 72 F end), car events (Unlock/Lock/Start/Stop buttons), passengers (1), and locations (San Francisco to Mountain View).
Control panel — a populated scenario (SF → Mountain View, cloudy to sunny, one passenger) driving the YAML config the probabilistic model reads.
BMW concept render of a phone resting on the rear armrest with a glowing visual outline detecting it.
Concept render of the rear-seat detection moment — the visual target the head-unit UI was working back from.

What this is really about. “Pre-AI” — this project belongs to the era right before foundation models swallowed the perception stack. The exact detection task today is one line through a VLM. What still matters is the infrastructure pattern: outsource the bottleneck step (labels) to the cheapest correct workforce, keep the iteration loop short enough that the team proposes a new class on a Monday and ships an updated model by Friday, and measure the loop rather than the model. The model gets replaced; the way of working doesn’t.

FAQ

What is Smart Objects?

Smart Objects is an in-cabin rear-seat object tracker that Conner Ward built for BMW of North America in 2021 at the EN-54 Experience Design Lab. A camera in the BMW iX cabin detects and tracks objects on the rear seat — a racket, a backpack, a bottle — and infers what a passenger may have left behind.

What was Conner Ward's role on Smart Objects?

Conner Ward built the end-to-end Smart Objects pipeline at BMW of North America's EN-54 Experience Design Lab — the in-cabin camera capture, the object-detection model, the labeling loop, the Jetson-side tracker, and the rear-seat head-unit visualization on the BMW iX.

What technology did Smart Objects use?

Smart Objects used an Intel RealSense camera, an NVIDIA Jetson for on-board inference, and AWS Rekognition Custom Labels for object detection, with training data labeled via Amazon Mechanical Turk through SageMaker Ground Truth. Conner Ward built it for BMW of North America in 2021.