Get Started#
This guide walks you through installation, configuration, and first run of the Dine-In Order Accuracy system.
Table of Contents#
Prerequisites#
Docker 24.0+ with Compose V2
Intel GPU with drivers installed
16 GB RAM minimum (64 GB recommended for production)
50 GB free disk space
Notes: KV Cache on iGPU / low-RAM systems: 16 GB RAM is sufficient for inference. For first-time model export, a higher-memory host (48–64 GB) is recommended. On iGPU platforms, the KV cache is allocated from system RAM — set
export CACHE_SIZE=2before runningsetup_models.shto reduce KV cache to 2 GB (default is 4 GB). See ovms-service/README.md — Tuning the KV Cache Size for a full per-platform guide.
docker --version
docker compose version
Installation#
Step 1: Clone the Repository#
git clone https://github.com/intel-retail/order-accuracy.git
cd order-accuracy/dine-in
Step 2: Configure the Environment#
# Create .env from template
make init-env
# Edit .env if needed — defaults work for most setups
# Initialize git submodules (for benchmark tools)
make update-submodules
Step 3: Setup OVMS Model (First Time Only)#
The setup script reads model configuration (device, precision, model name) from dine-in/.env (created in Step 2), so complete Step 2 before running this step.
cd ../ovms-service
./setup_models.sh --app dine-in # Downloads and exports model (~30-60 min first time)
cd ../dine-in
Note: Only needed once. Model files are shared between Dine-In and Take-Away.
This downloads Qwen2.5-VL-7B-Instruct (~7 GB) and converts it to OpenVINO™ INT8 format. This is only needed once — the model files are shared with Take-Away.
Step 4: Prepare Test Data#
Before running the application, you must prepare your test data:
Add Images: Place your food tray images in the
images/folderSupported formats:
.jpg,.jpeg,.pngImages should clearly show the food items on the tray
Update Orders: Edit
configs/orders.jsonwith your test ordersEach order should have an
order_idand list ofitemsorder_idshould match yourimage_id
Update Inventory: Edit
configs/inventory.jsonto match your menu itemsDefine all possible food items that can appear in orders
Include item names, categories, and any relevant metadata
Step 5: Build and Start#
# Pull images from registry (default)
make build && make up
# OR build locally from source
make build REGISTRY=false && make up
This starts 4 containers:
Container |
Ports |
Purpose |
|---|---|---|
|
7861, 8083 |
Gradio UI + FastAPI |
|
8002 |
VLM model server (OVMS) |
|
8081, 9091 |
Semantic matching |
|
8084 |
System metrics |
Verifying Installation#
# API health check
make test-api
# Or directly
curl http://localhost:8083/health
# Check OVMS model
curl http://localhost:8002/v1/config | jq .
Open http://localhost:7861 for the Gradio UI, or http://localhost:8083/docs for the REST API docs.
First Order Validation#
Via Gradio UI#
Open
http://localhost:7861Select a scenario from the dropdown
Review the order manifest
Click “Validate Plate”
View accuracy score, matched/missing/extra items, and performance metrics
Via REST API#
The bundled MCD-1001.png image shows Filet-O-Fish and Cheesy Fries on the tray.
Two test scenarios are provided:
Negative test case — order does not match tray (demonstrates mismatch detection):
curl -X POST "http://localhost:8083/api/validate" \
-F "image=@images/MCD-1001.png" \
-F 'order={"items":[{"name":"Cheeseburger","quantity":1},{"name":"French Fries","quantity":1}]}'
# Expected: order_complete=false, accuracy_score=0.0
Positive test case — order matches tray (demonstrates successful validation):
curl -X POST "http://localhost:8083/api/validate" \
-F "image=@images/MCD-1001.png" \
-F 'order={"items":[{"name":"Filet-O-Fish","quantity":1},{"name":"Cheesy Fries","quantity":1}]}'
# Expected: order_complete=true, accuracy_score=1.0
Via Make#
# Services must be running first
make benchmark-single IMAGE_ID=MCD-1001
Changing Inference Device#
To switch between GPU and CPU, update TARGET_DEVICE in .env and re-run model setup:
# In .env
TARGET_DEVICE=CPU
cd ../ovms-service && ./setup_models.sh --app dine-in && cd ../dine-in
make down && make up
Quick Reference#
make up # Start services (registry image)
make up REGISTRY=false # Start with locally built image
make down # Stop services
make logs # View logs
make test-api # Health check
make benchmark-single IMAGE_ID=... # Quick test
make benchmark # Full benchmark
make benchmark-stream-density # Stream density test
make clean # Stop and remove volumes
make clean-images # Remove dangling Docker images
make clean-all # Remove all unused Docker resources
make help # All commands
Next Steps#
System Requirements - Check the detailed requirements
Build from Source - Build from source
How It Works - Learn about the architecture
How to Use - Customize settings
Benchmarking Guide - Run benchmarks
API Reference - Learn the API
Troubleshooting - Resolve common issues
Release Notes - Read about updates and improvements