How We Test Dog Breed Detection
A transparent account of the reviewed photo benchmark, release gates, measured results, and important limits behind Dog Breed Detector.
Version 2026.1 · First published August 19, 2026 · Updated September 2, 2026
100
breeds in benchmark v2
500
accepted licensed photos
254
reviewed rejections retained
15
look-alike breed families
What the benchmark measures
The benchmark measures visual breed recognition from reviewed photographs. It records top-1 and top-3 accuracy, response-contract compliance, repeated-run stability, confidence calibration, latency, and estimated inference cost. Subject classification and mixed-dog behavior use separate gates because they answer different questions.
It does not measure genetic ancestry. A model can correctly identify a dog's strongest visible resemblance without knowing the dog's family tree.
Dataset construction and review
- 100 canonical breeds with five accepted photographs per breed.
- Three development photos, one regression photo, and one untouched holdout photo per breed.
- Photographs sourced from Wikimedia Commons with recorded author, license, URL, and SHA-256.
- Each accepted photo must show one meaningful dog subject with visible breed morphology.
- Near duplicates, wrong breeds, multiple dogs, weak visibility, and non-photographic media are rejected.
- Fifteen confusion packs group visually similar breeds for targeted error analysis.
Breed names and aliases are aligned against the AKC directory and FCI nomenclature. Review decisions remain recorded rather than silently discarded.
The three splits have different jobs. Development photos are the only ones used while iterating on prompts. The regression photo for each breed is the routine check that a model or prompt change has not broken something that used to work. The holdout photo is never looked at during tuning and is reserved for the final decision on a release, so a candidate cannot be shaped to fit it.
Look-alike breed families
The fifteen confusion packs tag families such as the upright-ear shepherds, the northern spitz breeds, the sighthounds, the Welsh corgis, the mastiff types, the black retrievers, and the schnauzers. 52 of the 100 breeds belong to a pack; the rest have no close twin in the set. Before a production decision, every error is inspected by confusion pair and tag rather than treated as one anonymous miss.
Each pack, the visible tells that separate its members, and the state of per-group measurement are published on our look-alike dog breed groups. Per-pack accuracy is added to that page only once it has been measured on a benchmark run.
Measured production release
Release decisions use a strict 30-breed clear-breed suite that is separate from the 100-breed benchmark: one independently licensed reference photo for each of 30 breeds, run three times each, so that accuracy, the response contract, latency, cost, and repeated-run stability all have enforced floors. Stability means the top answer for a photo did not change between repetitions. The production release evaluated on August 19, 2026 used the same prompt and response schema across those repeated clear-breed cases. The selected vision stage produced:
- 94.4% top-1 accuracy across 90 repeated clear-breed calls.
- 100% top-3 accuracy and 100% response-contract compliance.
- 96.7% repeated-run stability.
- 2.645 second median latency and 7.692 second p95 latency.
A separate 108-call subject-classifier gate reached 100% dog recall and 100% non-dog specificity on its reviewed fixtures. A 60-call mixed-dog robustness gate reached 100% dog detection and response-contract compliance without ancestry claims.
These are benchmark measurements, not a promise that 94.4% of every real-world upload will be correct. Phone photos, puppies, unusual grooming, occlusion, lighting, and breeds outside the evaluation set can be harder.
Confidence is not ancestry
The detector returns confidence-ranked visual matches. A 70% result means the first candidate was the strongest visual match in that response; it does not mean that a dog is genetically 70% that breed.
For a mixed dog, compare multiple photos and treat shared traits across the shortlist as clues. Use a laboratory DNA test when ancestry evidence matters.
Known limitations
The release suite is built from clear, well-lit reference photographs of adult dogs. The conditions below are not yet represented in it, so the measured accuracy above does not cover them. They are listed here because they are the situations in which a real upload is most likely to be wrong, and because independently sourced, expert-reviewed cases of each kind are the next additions to the benchmark.
- Lighting. Backlighting, heavy shadow, and indoor low light hide coat color and texture. A wet or backlit coat can look longer or darker than it is, which matters most for the black retrievers and the white companion dogs.
- Angle and framing. Close crops hide body proportions, head-on shots hide ear carriage and topline, and wide-angle phone lenses distort the muzzle. Size is invisible without something else in the frame, and size is the main difference inside the sighthound, schnauzer, and collie-type families.
- Puppies. Puppy coats, proportions, and ear set differ from the adult reference morphology the detector compares against. A Yorkshire Terrier puppy is black and tan with a short coat, and guardian breed puppies of several breeds look alike.
- Senior dogs. Grey muzzles, thinner coats, changed posture, and weight gain or loss move an older dog away from breed-standard photographs.
- Unusual coat colors. Rare, non-standard, or heavily faded colors push a dog toward a look-alike breed that usually wears that color. Grooming has the same effect: a pet clip removes the coat texture that separates several small companion breeds.
- Multiple dogs and occlusion. The benchmark rejects photos with more than one dog or a partly hidden subject, so behavior on those uploads is not measured. When the subject is ambiguous the detector can describe the wrong animal.
- Look-alike pairs. Closely related breeds can share structure, coat, and expression. The fifteen confusion packs exist to measure this, and only the upright-ear shepherd family currently has a production safeguard.
- Mixed dogs. Visible resemblance cannot establish genetic ancestry or predict individual behavior. The mixed-dog gate checks detection, the three-match response, and the absence of ancestry claims; it does not score parent breeds against DNA.
- Provider drift. Provider behavior, models, and pricing can change after a release is measured, which is why the suite is rerun before any change to the production model.
Dataset composition, version 2026.1
The table lists every breed in benchmark v2 with its benchmark id, how many of its five reviewed photos sit in each split, the confusion pack it belongs to, and the Creative Commons licenses under which its photos were published. It is generated from the benchmark manifests by an open script, so it changes only when the dataset changes.
Totals: 500 photos across 100 breeds, split 300 development, 100 regression, and 100 holdout. Licenses in use: CC BY 2.0 (166), CC BY-SA 4.0 (135), CC BY-SA 3.0 (108), CC0 (35), CC BY-SA 2.0 (28), CC BY 3.0 (12), CC BY 4.0 (11), CC BY-SA 2.5 (4), CC BY-SA 3.0 de (1). Every photo also records its author and source URL in the benchmark manifest.
How to read it: the three count columns always total five, because every breed has exactly three development photos, one regression photo, and one holdout photo. A breed with no confusion pack is scored on its own; a breed with a pack is also scored inside that family, and the pack name links to its entry on the research page. The licenses column shows which Creative Commons terms cover that breed's photos, so anyone reusing the composition can see at a glance whether attribution or share-alike terms apply. The CSV has the same columns with one header row and no comments, so it opens cleanly in a spreadsheet or a script.
To reproduce it, run the composition script in the repository against the benchmark manifests. The output is deterministic and carries no timestamp, so a diff between two versions shows exactly which breeds, splits, packs, or licenses changed and nothing else.
- Download the dataset composition (CSV)
- Read the confused-breeds research page for what each pack contains and why.
| Breed | Benchmark id | Dev | Reg | Holdout | Confusion pack | Licenses |
|---|---|---|---|---|---|---|
| Affenpinscher | affenpinscher | 3 | 1 | 1 | none | CC BY 2.0, CC BY 4.0, CC0 |
| Afghan Hound | afghan-hound | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC0 |
| Airedale Terrier | airedale-terrier | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Akita | akita | 3 | 1 | 1 | Northern spitz breeds | CC BY-SA 3.0, CC BY-SA 4.0 |
| Alaskan Malamute | alaskan-malamute | 3 | 1 | 1 | Northern spitz breeds | CC BY 2.0, CC BY-SA 4.0 |
| American Cocker Spaniel | american-cocker-spaniel | 3 | 1 | 1 | Companion spaniels | CC BY 2.0, CC BY-SA 2.0 |
| American Staffordshire Terrier | american-staffordshire-terrier | 3 | 1 | 1 | Bull-and-terrier breeds | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Australian Cattle Dog | australian-cattle-dog | 3 | 1 | 1 | none | CC BY-SA 2.5, CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Australian Kelpie | australian-kelpie | 3 | 1 | 1 | Upright-ear working shepherds | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Australian Shepherd | australian-shepherd | 3 | 1 | 1 | Collie-type herders | CC BY 2.0, CC BY-SA 4.0 |
| Australian Terrier | australian-terrier | 3 | 1 | 1 | Small rough-coated terriers | CC BY 2.0, CC BY-SA 3.0, CC0 |
| Basenji | basenji | 3 | 1 | 1 | none | CC BY 2.0, CC0 |
| Basset Hound | basset-hound | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.5, CC BY-SA 3.0, CC BY-SA 4.0 |
| Beagle | beagle | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Belgian Malinois | belgian-malinois | 3 | 1 | 1 | Upright-ear working shepherds | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Belgian Sheepdog | belgian-sheepdog | 3 | 1 | 1 | Upright-ear working shepherds | CC BY-SA 2.0, CC BY-SA 4.0 |
| Belgian Tervuren | belgian-tervuren | 3 | 1 | 1 | Upright-ear working shepherds | CC BY 2.0, CC BY-SA 3.0 |
| Bernese Mountain Dog | bernese-mountain-dog | 3 | 1 | 1 | none | CC BY 2.0, CC BY 4.0, CC BY-SA 4.0 |
| Bichon Frisé | bichon-frise | 3 | 1 | 1 | White companion dogs | CC BY 2.0, CC BY 3.0, CC BY-SA 3.0 de, CC BY-SA 4.0 |
| Bloodhound | bloodhound | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0 |
| Border Collie | border-collie | 3 | 1 | 1 | Collie-type herders | CC BY 3.0, CC BY 4.0, CC BY-SA 4.0, CC0 |
| Borzoi | borzoi | 3 | 1 | 1 | Sighthounds | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Boston Terrier | boston-terrier | 3 | 1 | 1 | Flat-faced companions | CC BY 2.0, CC BY 3.0, CC BY-SA 2.0 |
| Boxer | boxer | 3 | 1 | 1 | none | CC BY-SA 2.0, CC0 |
| Brittany | brittany | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0 |
| Brussels Griffon | brussels-griffon | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Bull Terrier | bull-terrier | 3 | 1 | 1 | Bull-and-terrier breeds | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 3.0, CC0 |
| Bullmastiff | bullmastiff | 3 | 1 | 1 | Mastiff types | CC BY-SA 2.5, CC BY-SA 3.0 |
| Cairn Terrier | cairn-terrier | 3 | 1 | 1 | Small rough-coated terriers | CC BY 4.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Cane Corso | cane-corso | 3 | 1 | 1 | Mastiff types | CC BY 3.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Cardigan Welsh Corgi | cardigan-welsh-corgi | 3 | 1 | 1 | Welsh corgis | CC BY 2.0, CC BY-SA 3.0 |
| Cavalier King Charles Spaniel | cavalier-king-charles-spaniel | 3 | 1 | 1 | Companion spaniels | CC BY 2.0, CC BY 3.0, CC BY-SA 4.0 |
| Chihuahua | chihuahua | 3 | 1 | 1 | none | CC BY-SA 3.0, CC BY-SA 4.0 |
| Chinese Crested | chinese-crested | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Chinese Shar-Pei | chinese-shar-pei | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 3.0 |
| Chow Chow | chow-chow | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0 |
| Collie | collie | 3 | 1 | 1 | Collie-type herders | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Dachshund | dachshund | 3 | 1 | 1 | none | CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Dalmatian | dalmatian | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Dobermann | dobermann | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 4.0 |
| Dogue de Bordeaux | dogue-de-bordeaux | 3 | 1 | 1 | Mastiff types | CC BY 2.0, CC BY-SA 3.0 |
| Dutch Shepherd | dutch-shepherd | 3 | 1 | 1 | Upright-ear working shepherds | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| English Bulldog | english-bulldog | 3 | 1 | 1 | none | CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| English Cocker Spaniel | english-cocker-spaniel | 3 | 1 | 1 | Companion spaniels | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| English Setter | english-setter | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0 |
| English Springer Spaniel | english-springer-spaniel | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 4.0, CC0 |
| Flat-Coated Retriever | flat-coated-retriever | 3 | 1 | 1 | Black retrievers | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| French Bulldog | french-bulldog | 3 | 1 | 1 | Flat-faced companions | CC BY 2.0, CC BY-SA 4.0 |
| German Shepherd Dog | german-shepherd-dog | 3 | 1 | 1 | Upright-ear working shepherds | CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Giant Schnauzer | giant-schnauzer | 3 | 1 | 1 | Schnauzers | CC BY-SA 3.0, CC BY-SA 4.0 |
| Golden Retriever | golden-retriever | 3 | 1 | 1 | none | CC BY 3.0, CC BY-SA 4.0 |
| Great Dane | great-dane | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 2.5, CC BY-SA 4.0 |
| Great Pyrenees | great-pyrenees | 3 | 1 | 1 | Large guardian dogs | CC BY 2.0, CC BY-SA 4.0 |
| Greyhound | greyhound | 3 | 1 | 1 | Sighthounds | CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Havanese | havanese | 3 | 1 | 1 | White companion dogs | CC BY 3.0, CC BY 4.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Irish Setter | irish-setter | 3 | 1 | 1 | none | CC BY 3.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Irish Wolfhound | irish-wolfhound | 3 | 1 | 1 | none | CC BY-SA 2.0, CC BY-SA 3.0 |
| Italian Greyhound | italian-greyhound | 3 | 1 | 1 | Sighthounds | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Japanese Chin | japanese-chin | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 3.0 |
| Keeshond | keeshond | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0 |
| Labrador Retriever | labrador-retriever | 3 | 1 | 1 | Black retrievers | CC BY 2.0, CC BY 4.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Leonberger | leonberger | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Lhasa Apso | lhasa-apso | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Maltese | maltese | 3 | 1 | 1 | White companion dogs | CC BY 2.0, CC BY-SA 4.0, CC0 |
| Mastiff | mastiff | 3 | 1 | 1 | Mastiff types | CC BY 2.0, CC BY-SA 2.0 |
| Miniature American Shepherd | miniature-american-shepherd | 3 | 1 | 1 | Collie-type herders | CC BY-SA 4.0, CC0 |
| Miniature Pinscher | miniature-pinscher | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 4.0 |
| Miniature Schnauzer | miniature-schnauzer | 3 | 1 | 1 | Schnauzers | CC BY 2.0, CC BY-SA 4.0, CC0 |
| Newfoundland | newfoundland | 3 | 1 | 1 | Large guardian dogs | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Norwegian Elkhound | norwegian-elkhound | 3 | 1 | 1 | none | CC BY 3.0, CC BY 4.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Old English Sheepdog | old-english-sheepdog | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0 |
| Papillon | papillon | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Parson Russell Terrier | parson-russell-terrier | 3 | 1 | 1 | Fox terrier types | CC BY-SA 3.0, CC BY-SA 4.0 |
| Pekingese | pekingese | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC0 |
| Pembroke Welsh Corgi | pembroke-welsh-corgi | 3 | 1 | 1 | Welsh corgis | CC BY 2.0, CC BY-SA 4.0, CC0 |
| Pomeranian | pomeranian | 3 | 1 | 1 | none | CC BY 2.0, CC BY 3.0, CC BY-SA 3.0 |
| Poodle | poodle | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Portuguese Water Dog | portuguese-water-dog | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Pug | pug | 3 | 1 | 1 | Flat-faced companions | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Rhodesian Ridgeback | rhodesian-ridgeback | 3 | 1 | 1 | none | CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Rottweiler | rottweiler | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 4.0, CC0 |
| Saint Bernard | saint-bernard | 3 | 1 | 1 | Large guardian dogs | CC BY 4.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Samoyed | samoyed | 3 | 1 | 1 | Northern spitz breeds | CC BY 2.0, CC BY-SA 4.0 |
| Scottish Terrier | scottish-terrier | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0 |
| Shetland Sheepdog | shetland-sheepdog | 3 | 1 | 1 | Collie-type herders | CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Shiba Inu | shiba-inu | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 4.0 |
| Shih Tzu | shih-tzu | 3 | 1 | 1 | none | CC BY-SA 4.0 |
| Siberian Husky | siberian-husky | 3 | 1 | 1 | Northern spitz breeds | CC BY 2.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Smooth Fox Terrier | smooth-fox-terrier | 3 | 1 | 1 | Fox terrier types | CC BY 2.0, CC BY-SA 4.0 |
| Soft Coated Wheaten Terrier | soft-coated-wheaten-terrier | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Staffordshire Bull Terrier | staffordshire-bull-terrier | 3 | 1 | 1 | Bull-and-terrier breeds | CC BY-SA 4.0, CC0 |
| Standard Schnauzer | standard-schnauzer | 3 | 1 | 1 | Schnauzers | CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Tibetan Mastiff | tibetan-mastiff | 3 | 1 | 1 | Mastiff types | CC BY 2.0, CC BY-SA 4.0 |
| Tibetan Terrier | tibetan-terrier | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 4.0 |
| Vizsla | vizsla | 3 | 1 | 1 | none | CC BY 2.0, CC BY 4.0, CC BY-SA 2.0, CC BY-SA 4.0 |
| Weimaraner | weimaraner | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC0 |
| West Highland White Terrier | west-highland-white-terrier | 3 | 1 | 1 | none | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0, CC0 |
| Whippet | whippet | 3 | 1 | 1 | Sighthounds | CC BY-SA 3.0 |
| Wire Fox Terrier | wire-fox-terrier | 3 | 1 | 1 | Fox terrier types | CC BY 3.0, CC BY-SA 3.0, CC BY-SA 4.0 |
| Yorkshire Terrier | yorkshire-terrier | 3 | 1 | 1 | Small rough-coated terriers | CC BY 2.0, CC BY-SA 3.0, CC BY-SA 4.0 |
Release and correction policy
Production candidates are compared on the same reviewed fixtures. Prompt changes use development and regression cases; the holdout is reserved for final decisions. A release must pass accuracy, response, stability, and latency gates before replacement.
The gate floors are written into the evaluator so they cannot drift between runs: at least 90% top-1, at least 29 of 30 top-3, 100% response-contract compliance, at least 80% repeated-run stability, a p95 latency no higher than 9 seconds, and an estimated cost no higher than $1.50 per 1,000 scans for the vision stage. A candidate that misses any floor is not released, however well it does on the others. Candidates that clear every floor are compared on a Pareto frontier of quality against cost, and the least expensive one that clears the agreed product floors is chosen.
A winner is never picked from a small smoke run. The comparison uses three full repetitions, every error is read by confusion pair and tag, and provider prices are rechecked on the day of the decision because the costs embedded in the evaluator are dated.
Report a reproducible problem through support. Methodology and results are updated when the model, prompt, benchmark, or release decision changes.
Change log
The version number and the dates on this page move together. A date changes only when the content changes, and a measured number changes only when a new run has been completed on the reviewed fixtures.
- 2026-08-19. First publication. Benchmark v2 dataset description, the production release results measured that day, the confidence-versus-ancestry explanation, and the release policy.
- 2026-09-02. Version 2026.1. Added the per-breed composition table, the downloadable composition CSV, an expanded known-limitations list, and the link to the confused-breeds research page. No measured number changed.