Why Tiny?
Because the host is tiny on purpose: Raspberry Pi 5. Instead of pretending it is a cloud server, TinyCyclops leans into edge constraints and keeps the parent web service lightweight.
Raspberry Pi + HAILO npu OCR
Alphanumeric OCR only for now. Tiny is still learning the rest! -)
Preset Workload 1
Default: work block 20, HEF batch 10 and 500 images.
ICDAR (International Conference on Document Analysis and Recognition) 2015 Robust
Reading Competition (Challenge 4: Incidental Scene Text) test images and ground
truth are provided by the
RRC website. Dataset terms and license are available at the
official RRC downloads page.
Preset Workload 2
Default: work block 20, HEF batch 10 and 1,000 images randomly selected from
354,998 validated source images.
Images are drawn from the
Zenodo CCPD2019 archive
(Chinese City Parking Dataset 2019, CC-BY-4.0), a large real-world Chinese license
plate dataset captured across varied parking scenes.
Custom Input
Tiny can process up to 10 images at once. Thumbnails enter Processed Frames immediately, then move through Uploaded, Processing, and Done states. No worries: images are held only temporarily while OCR runs.
Architecture
TinyCyclops is a Raspberry Pi 5 + HAILO OCR demo designed around a simple constraint: the accelerator is precious, so every byte around it has to move with intent. The web layer does not reinvent OCR. It stages workloads, explains progress, and lets the HAILO-backed pipeline do the heavy lifting.
Because the host is tiny on purpose: Raspberry Pi 5. Instead of pretending it is a cloud server, TinyCyclops leans into edge constraints and keeps the parent web service lightweight.
Because the HAILO-8 path behaves like one precious eye. The demo admits one OCR workload at a time, protects the HEF runtime from contention, and rejects extra visitors politely instead of hiding them in a queue.
Images are loaded into a memory-resident WorkBlock pipeline, detection results are cropped in memory, and recognition follows without slow handoffs. Finished image frames are released as soon as their OCR result is collected.
Presets are declared centrally. ICDAR is a fixed 500-image scene text run. CCPD uses a validated 354,998-image index and draws a fresh category-balanced 1,000-image list on every Start.
CCPD does not copy the source tree. Each job materializes only job-local symlinks
under runs/web_ccpd_*/input_images, then records the exact list in
workload_manifest.json.
FastAPI serves the console, upload API, artifacts, thumbnails, and Server-Sent Events. A single worker policy guards the HAILO runtime; busy requests are rejected immediately with a user-visible message.
Each run starts a short-lived child process that owns Paddle, OpenCV, and HAILO native state. When the child exits, the OS can reclaim accelerator and native memory cleanly.
Work blocks separate image grouping from HEF batch size. Detection, crop, and recognition stay close to memory, while progress events stream back to the browser as frames complete.
The browser shows the system thinking: randomizing, processing, thumbnails, selected originals, detected text overlays, FPS, detections, elapsed time, and downloadable run artifacts.
IMAGE SELECTED
Processed Frames
Artifacts
ICDAR 2015/CCPD dataset used for demo purposes.
Copyright © 2026 setflux. All rights reserved.