AutoVision

On-device car recognition ยท v5.13.0

Know every car on the road โ€” from one photo.

AutoVision is a vehicle make and model recognition engine that goes one level deeper: generation. Not just โ€œBMW 3 Series,โ€ but โ€œE90 (2005โ€“2011)โ€ vs โ€œF30 (2012โ€“2018).โ€ Ship it inside your app with the on-device SDK, or run it as a self-hosted car recognition API. No cloud dependency, no per-photo bill shock.

896model-generations
76makes
93.85%top-1 accuracy*
<50 mson-device
44 MBFP16 model

*93.85% top-1 on a clean held-out validation set โ€” real-world street photos score lower.

Identified38 ms ยท on-device

BMW 3 Series F30

2012โ€“2018 ยท rarity COMMON

confidence96%
engine 5.13.0model 5.13.0taxonomy 5.13.0-897
Rejectedtop1 โ†’ null

rejection_reason: not_a_car

Candidates still returned for inspection. Reasons: not_a_car ยท low_confidence ยท ambiguous

rejected truetaxonomy 5.13.0-897

Stylized illustration of the response contract โ€” not a screenshot.

Capabilities

Built for production, not demos

Every design decision assumes your users will point it at things that aren't cars, in bad light, at weird angles โ€” and that your legal team will read the license.

Generation-level identification

Distinguishes facelifts and redesigns across 896 model-generation classes, each with production year ranges and a six-tier rarity tag.

Runs entirely on-device

44 MB FP16 model, <50 ms with the Android GPU delegate, Core ML on iOS. Photos never leave the device โ€” a privacy story you can put in writing.

Rejection is a first-class answer

Non-car photos, low-confidence calls, and known confusion pairs are explicitly rejected with a machine-readable reason โ€” the engine tells you when not to trust it.

Calibrated confidence

ECE 0.049 โ€” confidence scores behave like probabilities, so your thresholds mean what you think they mean.

Versioned inference contract

Every response carries engine, model, and taxonomy versions. Python SDK, Android SDK, and REST API return the same logical shape.

Source-available

SDKs, API server, class list, and model card are public. Evaluate everything โ€” accuracy claims included โ€” before paying anything.

Quickstart

A car identification SDK you can wire up before lunch

Grab the weights from the v5.13.0 release, point the SDK at the folder, classify. Rejection is part of the return type, not an exception you discover in production.

# pip install, point at the release folder, classify
from autovision import AutoVision

engine = AutoVision("models/v5.13.0")
result = engine.classify("photo.jpg", top_k=5)

if result.rejected:
    print(result.rejection_reason)  # not_a_car | low_confidence | ambiguous
else:
    car = result.top1
    print(f"{car.make} {car.model} ({car.year_start}โ€“{car.year_end}) {car.confidence:.0%}")

On-device SDK

Android (TFLite FP16 + GPU delegate), iOS (Core ML), Python. Offline, <50 ms, images stay on the phone.

Self-hosted API

Docker + FastAPI on your own infrastructure. Same response contract over HTTP, for web apps and batch pipelines.

Read before you buy

The model card documents evaluation, known issues, and limits โ€” the sales pitch and the caveats in one place.

Use cases

Where a car recognition API can be put to work

In production today in Boby's Garage, the car-spotting app this engine was built for. The usecases/ folder illustrates further possible integrations โ€” five example Python scripts plus an Android pattern in Kotlin.

Parking & ANPR/ALPR enrichment

Plate registered to a Golf, camera sees an SUV โ€” catch cloned plates by cross-checking vehicle make and model against the plate read.

Dealer & auction inventory

Batch-tag photo sets with make, model, generation, and year range; route low-confidence shots to human review.

Marketplace listing autofill

Pre-fill listing forms from the seller's photos and flag listings whose photos don't match the claimed vehicle.

Enthusiast & consumer apps

Offline car-spotting with rarity-tier gamification โ€” the engine behind a live car-spotting app on both app stores.

Honest limits

What it won't do

We'd rather you find out here than in production:

  • Closed taxonomy โ€” a car outside the 896 covered classes gets mapped to its nearest covered lookalike or rejected; it can't say "unknown model X".
  • No trim/engine detection, no color, damage, license plate, or VIN reading.
  • Assumes one dominant vehicle per photo โ€” it's a classifier, not a detector or counter.
  • Degraded on interiors, heavy occlusion, night shots, renders and toys. No motorcycles, trucks, or buses.
  • *93.85% top-1 is on a clean held-out validation set โ€” real-world street photos score lower, and thresholds are tuned to prefer rejection over wrong answers.

Full details, known issues, and responsible-use guidance: the model card.

Model card

The numbers, as measured

Everything below is from the published model card for v5.13.0 โ€” measured, not marketed. Weights, class mapping, and checksums ship in the GitHub release.

MetricValueNotes
Top-1 accuracy93.85%*Clean held-out validation set โ€” real-world street photos score lower
Top-5 accuracy97.88%Same validation set
Calibration (ECE)0.049Confidence scores usable as approximate probabilities
Latency<50 msOn-device, modern Android phones with GPU delegate
Model size44 MBTFLite FP16 (primary); Core ML for iOS, ONNX for server
Coverage896 / 76Model-generation classes / makes, plus a background non-car class
Rejection reasonsnot_a_car ยท low_confidence ยท ambiguousMachine-readable; top1 is null when rejected

Pricing

Published pricing โ€” an industry first for generation-level recognition

Free for personal, research, and noncommercial use under the PolyForm Noncommercial License. Commercial use is licensed below โ€” every competitor makes you email sales to learn a number; here it is up front. Annual billing gets 2 months free.

Evaluation

Free ยท 30 days

Full commercial evaluation, non-production. No registration โ€” just tell us you're evaluating.

Self-Hosted API

Starter

$99/mo

  • One production instance of the Docker API
  • Up to 100k images/month
  • Email support
Most popular Self-Hosted API

Business

$299/mo

  • Up to 3 instances
  • 500k images/month
  • Priority support
  • Upgrade help on new model releases
On-Device SDK

Indie

$1,990/yr

  • One app (Android and/or iOS)
  • Unlimited devices
  • For companies under $1M annual revenue
On-Device SDK

Standard

$4,990/yr

  • One app, unlimited devices
  • No revenue cap
  • Priority support
  • Day-one model releases

Enterprise / OEM

Custom

Air-gapped deployment, OEM/redistribution rights, custom classes, white-label, SLAs.

License continuity, in writing: if AutoVision ever ceases operations, your license converts to a perpetual license for the model version you deployed. Your product never becomes unlicensed because we went away.

FAQ

Questions engineers actually ask

Short answers here; long answers in the model card and commercial terms.

Can I use AutoVision commercially, and what does the dual license mean?
AutoVision is source-available under a dual license. Personal, research, and noncommercial use is free under the PolyForm Noncommercial License 1.0.0. Commercial use โ€” revenue-generating products, or internal use at a for-profit company โ€” requires a paid license with published pricing: self-hosted API from $99/mo, on-device SDK from $1,990/yr, Enterprise custom. Model weights are covered by the same dual terms as the code.
What happens to my license if AutoVision shuts down?
License continuity is written into the commercial terms: if AutoVision ever ceases operations, your license converts to a perpetual license for the model version you deployed. Your product never becomes unlicensed because the vendor went away.
How accurate is it on real-world photos?
93.85% top-1 and 97.88% top-5 are measured on a clean held-out validation set (21,381 images, 897 classes). Real-world accuracy on uncurated street photos is lower. Rejection thresholds are deliberately tuned precision-over-recall โ€” the engine prefers rejecting an image over returning a wrong answer. Evaluate on your own image distribution before committing to accuracy targets; the 30-day evaluation tier exists for exactly this.
What happens with cars outside the 896 covered classes?
The taxonomy is closed. A car outside the 896 covered model-generations is mapped to its nearest covered lookalike or rejected โ€” it cannot answer "unknown model X". If coverage of a specific class matters to you, check class_mapping.json in the release before integrating.
Does it run on iOS?
Yes. The release ships a Core ML FP16 mlpackage for iOS alongside the TFLite FP16 model (44 MB) for Android and an ONNX export for servers. FP16 was verified at 32/32 top-1 agreement against FP32 on sampled validation images.
Where do my photos go?
Nowhere. With the on-device SDK, inference runs entirely on the phone and photos never leave the device. With the self-hosted API, images go to your own server โ€” there is no AutoVision cloud, no telemetry, and no per-photo metering that phones home.

Get started

Evaluate it against your own photos.

The weights, the SDKs, and the model card are all public. If the numbers hold up on your image distribution, the price is already on this page.