A suite of Intel® edge AI applications for real-time order validation in Quick Service Restaurant (QSR) environments, powered by Vision Language Models (VLM) and Intel® OpenVINO™ inference.
Order Accuracy automatically detects items in food trays, bags, or containers, compares them against expected order data, and identifies discrepancies before orders reach customers.
The platform provides two specialized applications optimized for different restaurant scenarios:
| Application | Use Case |
|---|---|
| Dine-In | Restaurant table service validation |
| Take-Away | Drive-through and counter service |
| Criteria | Dine-In | Take-Away |
|---|---|---|
| Input Type | Static images | Video streams (RTSP) |
| Throughput | Low-medium | High (parallel) |
| Latency Priority | Accuracy over speed | Speed and accuracy |
| Camera Setup | Fixed position | Multi-station |
| Typical Use | Table service | Drive-through, counter |
| Processing | Single request | Batch processing |
Image-based order validation for full-service restaurant expo operations. Staff place a plate or tray in the validation station and trigger a check via the Gradio UI or REST API. The system analyzes plate contents with a pre-trained Qwen2.5-VL model and reconciles detected items against the order manifest — no model fine-tuning required.
Best for: table service, fixed-position cameras, accuracy-prioritized single-image validation.
For full details see the Dine-In User Guide. Alternatively, see the Dine-In README for a quick overview of the application.
Real-time video stream validation for drive-through and counter service. The service ingests RTSP streams from multiple stations, selects relevant frames with a YOLO model, batches VLM requests, and validates orders in parallel across up to 8 workers — with circuit-breaker fault tolerance and automatic recovery for high-throughput deployments.
Best for: drive-through and counter service, multi-station camera setups, speed-and-accuracy continuous validation.
For full details see the Take-Away User Guide. Alternatively, see the Take-Away README for a quick overview of the application.
Both applications share a common set of services:
| Service | Description |
|---|---|
| OVMS VLM | OpenVINO™ Model Server running Qwen2.5-VL with an OpenAI-compatible API |
| Semantic Service | AI-powered item matching (exact → semantic → hybrid) with local fallback |
| MinIO Storage | S3-compatible object storage for frames, selections, and results |
| Gradio UI | Web interface for manual validation and demos |
The OVMS model files are exported once and shared by both applications. See the OVMS Service README for model setup and KV cache tuning guidance.
Choose an application and follow its Get Started guide:
For hardware and software prerequisites, see the system requirements for the application you plan to deploy:
⚠ Model Export RAM Requirement:
setup_models.shperforms INT8 quantization of Qwen2.5-VL-7B, which temporarily requires up to 40 GB of system RAM (FP16 model ~15 GB + INT8 compressed ~8 GB + calibration buffers ~8–15 GB). On platforms with 32 GB RAM (e.g. Wildcat Lake, Meteor Lake), the export OOMs and writes partial, corrupt XML files, causing theoa_ovms_vlmcontainer to fail at startup with "Unable to read the model" errors. Always runsetup_models.shon a system with at least 48 GB RAM (64 GB recommended). The exported model files can then be copied to lower-memory systems for inference-only deployments.ℹ OVMS KV Cache (
cache_size): The defaultCACHE_SIZE=4reserves 4 GB of VRAM for the KV cache. The INT8 model itself uses ~8 GB VRAM, so total VRAM ≈ 12 GB (fits in Intel Arc A770 16 GB). On integrated GPU platforms (Wildcat Lake, Meteor Lake), the KV cache is allocated from system RAM — on a 32 GB system this can exhaust all available memory. Use a smaller value (CACHE_SIZE=2) on iGPU platforms. Setexport CACHE_SIZE=<N>before runningsetup_models.sh, or editgraph.pbtxtdirectly after export. See OVMS Service README — Tuning the KV Cache Size for a full sizing guide and per-platform recommendations.
order-accuracy/
├── dine-in/ # Dine-In application
│ ├── src/ # Application source code
│ ├── docker-compose.yaml # Service orchestration
│ ├── Makefile # Build automation
│ └── README.md # Dine-In documentation
│
├── docs/user-guide
│ ├── dine-in/ # Dine-In user guide
│ └── take-away/ # Take-Away user guide
│
├── take-away/ # Take-Away application
│ ├── src/ # Application source code
│ ├── frame-selector-service/ # YOLO frame selection
│ ├── gradio-ui/ # Web interface
│ ├── docker-compose.yaml # Service orchestration
│ ├── Makefile # Build automation
│ └── README.md # Take-Away documentation
│
├── ovms-service/ # Shared OVMS configuration
├── performance-tools/ # Benchmarking scripts
└── README.md # This file
Copyright © 2025 Intel Corporation
Licensed under the Apache License, Version 2.0. See LICENSE for details.
For application-specific issues, refer to the respective documentation:
- Dine-In Issues: See Dine-In Troubleshooting
- Take-Away Issues: See Take-Away Troubleshooting
For platform-wide issues or feature requests, submit an issue with:
- Application name (dine-in / take-away)
- Steps to reproduce
- Expected vs. actual behavior
- Logs (
make logs)