Nodaro Docs
DocumentationNode ReferenceModelsTemplatesAI Agents (MCP)DevelopersSelf-hostingResearchCompare

Vision Model Bake-off: seven AI models read the same four portraits

Seven AI vision models described the same four portraits at 20 settings. Claude Opus 5.5 at High won; more reasoning made no model read better, only slower.

Tal Asa ·

Before we chose the AI model behind Nodaro's Describe to Picker node, we had seven vision models describe the same four portraits at their default and at higher reasoning efforts: 20 settings, 80 reads. On detail and agreement, the models were close. On speed, they were more than 20 times apart. Claude Opus 5.5 at High gave one of the most detailed readings in about 9 seconds and never failed, so it is now the default. More reasoning made no model read better, only slower. The GPT models never named an ethnicity.

Models
7
Settings
20
Portraits
4
Reads
80
Pickers
5
Failed reads
3

What we found

Best overall

Claude Opus 5.5 at High is the best all-round setting.

It named 33.5 traits per portrait, agreed with the majority on 85% of them and answered in 9.1 seconds. All four of its reads succeeded.

Reasoning

More reasoning made no model read better.

Claude Opus 5.5 at Max took 17 times as long as at High and named 0.3 more traits. The highest GPT settings took 85 to 109 seconds and failed two reads.

Speed

The same job took 7 seconds or more than 2.5 minutes.

Claude Opus 5.5 was the fastest, with a median of 7.2 seconds at its default. Claude Opus 5.5 at Max was the slowest, at 154.5 seconds.

Value

Gemini 3.8 Flash is the best value.

At 11 credits a read, it agreed with the majority on 85% to 92% of its answers. It named fewer traits than the Claude models.

The surprise

The GPT models never named an ethnicity.

GPT-6 Astra and GPT-6.1 Sol left the field empty in all 21 of their reads. The other five models filled it on almost every portrait.

Noise

The same settings give different answers.

Three runs of Claude Fable 5 on the same settings varied by 3.5 traits per portrait and 6 points of agreement. Read smaller gaps as ties.

The scoreboard

Each setting read the same four portraits once. Traits per portrait is how many fields the setting filled, on average. Agreement is the share of those answers that matched the answer most settings gave for the same field and portrait.

ModelReasoning effortTraits per portraitAgreementMedian timeReadsCredits per read
Claude Opus 5.5Default32.085%7.2 s4 of 428
Claude Opus 5.5High33.585%9.1 s4 of 428
Claude Opus 5.5Max33.882%154.5 s4 of 428
Claude Fable 5Default33.087%11.0 s4 of 428
Claude Fable 5High, see note35.385%20.5 s4 of 428
Claude Fable 5Max, see note31.881%69.7 s4 of 428
Gemini 3.1 ProDefault32.880%28.2 s4 of 411
Gemini 3.1 ProDefault, Advanced mode31.080%27.4 s4 of 428
Gemini 3.8 FlashDefault30.091%17.2 s4 of 411
Gemini 3.8 FlashHigh31.385%22.0 s4 of 411
Gemini 3.8 FlashDefault, Advanced mode31.885%13.7 s4 of 411
Gemini 3.8 FlashHigh, Advanced mode28.092%19.8 s4 of 411
Kimi K3Default31.883%29.9 s4 of 411
Kimi K3High32.580%20.9 s4 of 411
GPT-6.1 SolDefault32.085%21.7 s3 of 411
GPT-6.1 SolHigh30.383%21.6 s4 of 411
GPT-6.1 SolMax30.383%84.6 s3 of 411
GPT-6 AstraDefault30.083%42.3 s4 of 411
GPT-6 AstraHigh30.383%43.8 s4 of 411
GPT-6 AstraVery high30.083%108.8 s3 of 411

Note on Claude Fable 5: in this test, Fable 5 wrote no reasoning at any effort. Its High and Max rows are repeat runs of its default, so they show how much one setting varies from run to run.

Does more reasoning help a model read a photo?

No. No model named measurably more traits at a higher reasoning effort, and no model agreed more. The cost was time, and on the GPT models, failed reads.

ModelLowest effortHighest effortChange in traitsChange in time
Claude Opus 5.5Default: 32.0 traits, 7.2 sMax: 33.8 traits, 154.5 s+1.821 times as long
GPT-6 AstraDefault: 30.0 traits, 42.3 sVery high: 30.0 traits, 108.8 s02.6 times as long, 1 failed read
GPT-6.1 SolDefault: 32.0 traits, 21.7 sMax: 30.3 traits, 84.6 s−1.73.9 times as long, 1 failed read
Gemini 3.8 FlashDefault: 30.0 traits, 17.2 sHigh: 31.3 traits, 22.0 s+1.31.3 times as long
Kimi K3Default: 31.8 traits, 29.9 sHigh: 32.5 traits, 20.9 s+0.7Faster

Every change in traits is smaller than the 3.5 traits that separated three identical runs of Claude Fable 5. Reading a photo into fixed catalog choices is mostly seeing, not thinking. A model either sees the jawline or it does not, and more reasoning does not change what it sees.

High is the exception worth keeping on Claude Opus 5.5. It cost 2 seconds more than the default and gave the most traits of any setting that answered in under 20 seconds. Max added 145 seconds for 0.3 more traits.

Where the models agree and where they split

The models agree on what they can see and split on judgment. The table shows, for each field, the share of answers that matched the most common answer for the same portrait.

FieldPickerAgreementWhat happened
Eye spacingPerson100%Every setting that answered gave the same answer, on all four portraits
FabricStyling100%Every setting that answered gave the same answer, on all four portraits
Eye colorPerson100%Every named color matched, but a quarter of the answers left the field empty
Eye shapePerson97%Every setting that answered agreed on three portraits
Skin tonePerson92%Every setting that answered agreed on three portraits
AgePerson64%Mostly precision: "20s" against "Early 20s"
Skin texturePerson61%Three different answers per portrait
TypePerson58%The same woman was a "Woman", a "Girl Next Door" or a "Beautiful Woman"
Hair stateStyling51%Four different answers on each of the two portraits it applied to

Type is a judgment, not an observation, so the models split on it. One model sometimes gave a different type on a second run of the same photo.

Age split two ways. On the other three portraits, the models mostly agreed on the decade and differed on how precise to be. On the bearded man, the split was real: the Claude models and Gemini 3.8 Flash said 30s, and GPT, Gemini 3.1 Pro and Kimi K3 said 40s.

Ethnicity split by model, not by photo. GPT-6 Astra and GPT-6.1 Sol left it empty in every read. The other five models filled it, and most of them gave the same main answer on each portrait.

What we shipped

Describe to Picker now uses Claude Opus 5.5 at High by default. A default read costs 28 credits, because a premium model with a reasoning effort runs directly with its maker. Every model in the AI Model list stays available.

  • For the most detail, keep the default.
  • For the best value, choose Gemini 3.8 Flash. A read costs 11 credits and answers in under 25 seconds.
  • Leave Reasoning Effort at High or lower. Very high and Max made reads slower in this test, without better answers.
  • If ethnicity matters for your character, do not use a GPT model, or set ethnicity by hand on the Person picker. Its Fill empty only mode keeps your choice when the next photo is read.
  • For judgment fields such as Type, check the result. Models disagree on them, so choose the value you want by hand.

Describe to Picker fills the Person, Styling, Framing, Lens and Camera / Film Stock pickers from one photo. Consistent characters shows how to reuse the result across scenes.

How we ran it

  • Every setting read the same four portraits on Nodaro, on 2026-10-09, through the Describe to Picker node. The prompt, the picker catalogs and the photos were the same for every read.
  • Each read filled the five pickers at once: Person, Styling, Framing, Lens and Camera / Film Stock.
  • We ran each model at its default and at the higher reasoning efforts it offers. Every Claude read ran directly with its maker, where Claude's reasoning efforts are served. On the two Gemini models, we also ran Advanced mode, which runs the model directly with its maker.
  • The portraits are four stock photos from Unsplash, two women and two men. They show a laughing woman in a red sweater, a man with a dark quiff, a woman with short natural hair and a bearded man in black and white.
  • We do not show the photos or each portrait's full reading. The fields describe real people's bodies and backgrounds, so this page reports only totals across portraits.
  • Agreement compares each answer with the answer most settings gave. A tie scores nobody. A model can be right alone and still lose points, so agreement measures stability, not truth.
  • GPT-6.1 Sol at its default filled 4 fields that no other setting filled, and Kimi K3 at its default filled 1. Agreement does not count those answers.
  • Times are medians, from the start and the end of each run on the platform. Credits are what the platform charged per read on the test date.
  • Three reads failed, all on GPT models. GPT-6 Astra at Very high ran out of time. GPT-6.1 Sol at Max found the model busy, and GPT-6.1 Sol at its default ran out of time once. No Claude, Gemini or Kimi read failed.
  • One read per portrait per setting is a hint, not proof. The pattern across settings is the finding. The Image Model Bake-off used the same approach for image generation.

Frequently asked questions

Which AI model is best at describing a person in a photo?

In our test, Claude Opus 5.5 at High reasoning effort. It named 33.5 traits per portrait, agreed with the other models on 85% of them, answered in about 9 seconds and never failed. Nodaro's Describe to Picker node now uses it by default.

Does more reasoning effort help an AI model read a photo?

Not in this test. No model named measurably more traits at a higher effort. Claude Opus 5.5 at Max took 155 seconds instead of 9, and the GPT models at their highest efforts took up to 109 seconds and failed reads.

Which AI vision model is the best value for describing photos?

Gemini 3.8 Flash. At 11 credits a read, it agreed with the other models on 85% to 92% of its answers, in 14 to 22 seconds. It named fewer traits than the Claude models: 28 to 32 per portrait.

Why did the GPT models leave ethnicity empty?

GPT-6 Astra and GPT-6.1 Sol left the ethnicity field empty in all 21 of their reads, at every setting. The other five models filled it. If ethnicity matters for your character, choose another model or set it by hand on the Person picker.

Is agreement the same as accuracy?

No. Agreement is how often a model gave the answer most models gave. Nobody knows the true age or background of a stranger in a stock photo, so agreement shows which readings are stable, not which are true.

Last updated on

On this page