Shelf and Planogram Audit

Train a VLM to detect out-of-stock positions, planogram violations, and pricing errors from retail shelf images.

Retail store shelf stocked with sauces, condiments, and baking products with price labels

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

Task
What the model does
Out-of-stock detection
Identifies empty shelf positions that should have product
Planogram compliance
Checks whether products are in the correct shelf location
Price tag verification
Flags missing or mismatched price labels
Facing count
Counts how many product facings are visible per SKU
Competitor monitoring
Identifies competitor products placed in your allocated space

Choose your task type

Approach
Best for
Output
Visual Question Answering (VQA)
Shelf compliance checks, out-of-stock questions
Text answer: "Two positions on the second shelf are empty."
Phrase Grounding
Locating the empty slot or misplaced product
Bounding box around the problem area
Freeform Text (JSON)
Full shelf audit reports with multiple checks per image
JSON: {"empty_slots": 2, "misplaced": 1, "missing_tags": 0}

Annotation examples

Image
Question
Answer
Fully stocked shelf
Are there any out-of-stock positions on this shelf?
No. All shelf positions appear stocked.
Shelf with gaps
Are there any out-of-stock positions on this shelf?
Yes. There are two empty positions on the second shelf from the top, in the center section.
Misplaced product
Is this shelf section arranged according to planogram?
No. A bottle of ranch dressing is placed in the ketchup section on the top shelf.

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

Structured Data Extraction

Return machine-readable audit results for integration with inventory systems.

Phrase Grounding

Highlight problem areas on shelf images for store associates.

Visual Question Answering

Full reference for VQA dataset setup and annotation best practices.