Shelf and Planogram Audit
Train a VLM to detect out-of-stock positions, planogram violations, and pricing errors from retail shelf images.
Retail stores lose sales every time a product is out of stock or in the wrong position. Store associates walk aisles checking shelves, but in a large store with thousands of SKUs, gaps get missed. By the time a problem is spotted, the lost revenue has already happened.
Datature Vi trains a model on photos of your shelves. You show it what correct shelf layouts look like and what violations look like (empty slots, wrong products, missing price tags), and the model learns to spot discrepancies from new shelf images. Associates take a quick photo with a phone, and the model reports what needs attention.
For an interactive overview of this application, visit the retail shelf audit use case on vi.datature.com.
Common applications
Choose your task type
Annotation examples
Tips:
- Photograph shelves from a consistent distance and angle (arm's length, centered on the section)
- Include images from different store locations if your stores have different fixture types
- Label using your store's own product and section naming conventions
Deploy and test
from vi.inference import ViModel
model = ViModel(
run_id="your-run-id",
secret_key=".your-secret-key.",
organization_id="your-organization-id",
)
result, error = model(
source="shelf_photo.jpg",
user_prompt="Are there any out-of-stock positions on this shelf?"
)
if error is None:
print(result.result.answer)Structured audit output
import json
from vi.inference import ViModel
model = ViModel(
run_id="your-run-id",
secret_key=".your-secret-key.",
organization_id="your-organization-id",
)
result, error = model(
source="shelf_photo.jpg",
user_prompt="Audit this shelf section for compliance.",
generation_config={"temperature": 0.0, "do_sample": False}
)
if error is None:
audit = json.loads(result.result)
# {"empty_slots": 2, "misplaced_products": 1, "missing_price_tags": 0, "compliance_score": "partial"}
print(f"Empty slots: {audit['empty_slots']}")
print(f"Compliance: {audit['compliance_score']}")Training tips
Photograph from a consistent distance: the model works best when training and production images are framed the same way. Pick a standard distance (arm's length from the shelf) and angle.
Include multiple store formats: if your stores have different shelf fixtures or lighting, include examples from each format in your training data.
Train per category: a model trained on the condiments aisle may not generalize to the frozen section. Train separate models or include examples from each category you want to monitor.
Cover time-of-day variation: shelves look different at store opening (fully stocked) versus end of day (partially depleted). Include both in your training set.
Next steps
Updated 4 days ago
