Gemma 4 vs Qwen: Local Vision Models for Photos on a Mac

Summary
- I wanted to search my photos by what was in them, without sending them to an AI company.
- I tested four local models on ten public pictures to check their descriptions against what was actually there.
- The fastest model made up people and a fire; even my chosen model missed a person at a window.
Have you ever thought about a moment and wished you could easily find that picture or video in your gallery? Perhaps you remembered two cats, a sofa, or a street sign, and wished you could search using those terms. It hasn’t always been easy, has it? Especially with tens of thousands of photos and videos in your iCloud or Google Photos account.
I had the same issue. So I decided to tackle it using local AI, because I wanted to keep my personal photos private. Everything had to run on my Mac, which limited me to models that were free, ran locally, and fit on my machine.
Gemma 4 vs Qwen comparisons gave me test scores, but didn’t tell me whether a model would invent things in my photos. Here’s what I found when I tested Google’s and Alibaba’s models myself.
Short answer: Gemma 4 26B-A4B gave me the best balance of speed and useful descriptions for my library. It noticed the upside-down sign and came close to the fastest model, which invented people and a fire. Here’s what worked and what still went wrong.
Four models, ten pictures
I gave four vision models, AI that describes pictures, the same prompt. One picture at a time, one model running. I checked each answer, with Claude helping me grade.
The ten pictures were public, not my personal photos: six from the COCO research collection1 and four faces and pets from other test sets.
| Model | Time for 10 pictures |
|---|---|
| Gemma 4 26B-A4B2 | 35 sec |
| Qwen3.6 35B-A3B3 | 30 sec |
| Gemma 4 31B4 | 95 sec |
| Qwen3.8 27B5 | 87 sec |
M5 Max MacBook Pro, 128 GB. One picture at a time. Compression settings and speed aids differed; details below.
Example 1: The upside-down sign
This photo has a stop sign, but the useful detail is that it’s upside down. That gives me a more specific way to search for it.
Describe subjects without names, setting, objects, colours, light, weather, mood, and readable text. Return at most 2,000 characters plus 5 to 15 search tags as JSON.
| Model | Orientation noted |
|---|---|
| Gemma 4 26B-A4B | Yes |
| Qwen3.6 35B-A3B | No |
| Gemma 4 31B | No |
| Qwen3.8 27B | Yes |
Prompt and results summarized from my original ten-photo test notes, not verbatim transcripts.
Gemma caught the detail I cared about, as did Qwen3.8. Across the ten photos, Gemma took 35 seconds to Qwen3.8’s 87.
Example 2: Counting people
Could any of them count this group correctly? There are 12 visible people. Each model got the same picture and prompt, without being told the count.
Describe this photograph using only what is visible. Include the subjects, setting, objects, colours, light, weather, mood, and any readable text. Do not identify people by name or invent details. Count all visible people, regardless of whether they are children or adults. Return a JSON object with exactly these keys: “people_count” (an integer), “description” (at most 2000 characters), and “tags” (5 to 15 short search tags).
| Model | People counted |
|---|---|
| Gemma 4 26B-A4B | 13 |
| Qwen3.6 35B-A3B | 11 |
| Gemma 4 31B | 11 |
| Qwen3.8 27B | 11 |
Exact counts returned in a separate single-photo check, using the same prompt and settings for all four. Full responses and setup are linked below.
All four described a tennis group, and all missed the count by one. No winner on counting here. The descriptions could still help me find the photo, but I wouldn’t trust them for an exact headcount.
Example 3: The invented fire
In a living-room photo, there was a person by the window, but no seated people or burning fire. Those distinctions matter when the description becomes searchable.
Describe the visible subjects, setting, objects and readable text, with search tags. Same prompt as Example 1.
| Model | Living-room result |
|---|---|
| Gemma 4 26B-A4B | Missed the person at the window. |
| Qwen3.6 35B-A3B | Invented two seated people and a burning fire. |
| Gemma 4 31B | Best description; noticed the person at the window. |
| Qwen3.8 27B | People described correctly. |
Same description prompt as Example 1. Results summarized from the original test notes, not verbatim responses.
Elsewhere, Gemma 26B got a baseball runner’s direction right; Qwen3.6 got it wrong. Qwen3.8 caught fine details, but also claimed a blurred flag said “United Nations.”
Five seconds saved wasn’t worth searching for a burning fire and getting a living room where there wasn’t one.
Example 4: Reading Hindi
I have plenty of Hindi in my library, so reading the words matters too. I gave all four models this constructed test image. It says “New Delhi, Platform number 3.”
Read all text in this image. Copy it exactly in its original script, preserving line breaks. Return only the copied text, without translation, explanation, or formatting.

| Model | Returned text |
|---|---|
| Gemma 4 26B-A4B | नई दिल्ली प्लेटफॉर्म संख्या 3 |
| Qwen3.6 35B-A3B | नई दिल्ली प्लेटफॉर्म संख्या 3 |
| Gemma 4 31B | नई दिल्ली प्लेटफ़ॉर्म संख्या 3 |
| Qwen3.8 27B | नई दिल्ली प्लेटफॉर्म संख्या 3 |
Exact responses from a separate single-image check. Same settings for all four; full responses and setup.
Gemma 26B and both Qwens copied the text exactly. Gemma 31B used an alternate spelling of “platform.” This image gives me no reason to prefer Gemma 26B over Qwen for Hindi.
In my earlier, separate twelve-picture test, Gemma copied Hindi, Chinese, Spanish, a receipt and a booking code correctly. The faster macOS reader matched it on supported writing systems, but turned Hindi into Arabic-looking nonsense without flagging the failure. That ruled out the built-in reader for my library.
My choice: Gemma 4 26B-A4B
Gemma 4 26B-A4B and Qwen3.8 27B both did well. For the descriptions I needed, they were neck and neck in these small tests. Both noticed the upside-down sign and read the Hindi example. Neither got the group count right.
Gemma took 35 seconds for ten photos; Qwen3.8 took 87. That’s about 2.5 times as fast, saving 52 seconds on this batch. With thousands of photos to process, I went with Gemma.
It still missed a person and miscounted the group. For photo search, that tradeoff was worth it to me; I wouldn’t rely on it for exact headcounts.
Ten photos is a small sample. A bigger, more varied test could rank these models differently. This was enough to choose one for my library, not declare an overall winner.
Gemma now writes the descriptions every night in my local AI photo library, and it reads the faces when I find near-duplicate photos.
For your own library, start with pictures you can check, including the languages you use. Compare the descriptions with the images and time each model on your machine. Pay attention to errors that would give you misleading search results.
For technical readers, here are more details
Gemma uses about 27 GB on my Mac. At 3.5 seconds a picture, 10,000 photos would take about 10 hours sequentially, an estimate rather than a measured run. Models that don’t fit in memory may fail to load or use much slower disk space.
I skipped 100B+ models because they were slower and no better in my text tests. I expected them to be too slow for photos too. No statistical significance testing was performed on these small comparisons.
B means billions of learned parameters. A4B and A3B use only part of the model per token, roughly a piece of a word. This “mixture of experts” saves work, but the full model still needs memory. Dense models use all their parameters.
The models ran through MLX-VLM12 using compressed versions from the MLX community, including the 8-bit Gemma copy I chose.13 Compression saves memory by storing numbers less precisely. For the original ten-photo comparison on October 13, 2026, my Mac’s model list was:
| Model | Stored precision | Speed aid |
|---|---|---|
| Gemma 4 26B-A4B | 8-bit | None listed |
| Qwen3.6 35B-A3B | 8-bit | None listed |
| Gemma 4 31B | 4-bit | None listed |
| Qwen3.8 27B | 8-bit | MTP draft model |
A draft model proposes output for the main model to check, speeding up writing. Only Gemma 26B’s 8-bit setting was confirmed in the test record; the other settings come from my model inventory.
Answers ran 600 to 1,100 characters. All 40 were valid JSON, structured text a program can read, after stripping both Gemmas’ code-formatting marks.
COCO val2017 IDs: 139 (living room), 724 (sign), 785 (skier), 872 (baseball), 1000 (tennis court), 39769 (cats). The other four came from LFW and Oxford-IIIT Pets.
The temporary scripts and notes don’t pin every image, software version, or timing boundary (model loading and image preparation). These details let you repeat the approach, not reproduce exact timings.
All four models were released under Apache 2.0, as confirmed in October 2026, allowing personal and business use. Check the Gemma license14 and Qwen model cards for your version.
The October 21 counting check used MLX-VLM 0.7.8, MLX 0.32.4, and Transformers 5.19.0. Each model ran alone in a fresh server process on the unchanged 640 × 480 JPEG, with temperature 0, seed 0, thinking disabled, a 1,200-token limit, and no draft model. The exact prompt and full responses include model revisions and settings. It was one request per model, not a repeated accuracy benchmark.
The Hindi check used the same runtime versions and generation settings as the counting check, with a 1000 × 400 fixture rendered in Chromium using Kohinoor Devanagari for proper script shaping. One request per model, without a supplied reference transcription; the linked results preserve exact text, model revisions and settings. It does not recreate the earlier twelve-picture test.
Sources
- 1COCO. Common Objects in Context
- 2Hugging Face. Gemma 4 26B-A4B model card
- 3Hugging Face. Qwen3.6-35B-A3B model card
- 4Hugging Face. Gemma 4 31B model card
- 5Hugging Face. Qwen3.8-27B model card
- 6Flickr. anonymonk: Stop and think for a moment.
- 7Creative Commons. Attribution-NonCommercial-ShareAlike 2.0
- 8Flickr. o0bsessed: летние теннисные сборы
- 9Creative Commons. Attribution 2.0
- 10COCO. Validation image 139
- 11Creative Commons. Attribution-NonCommercial 2.0
- 12GitHub. MLX-VLM
- 13MLX Community. gemma-4-26b-a4b-it-8bit
- 14Google AI for Developers. Gemma 4 Apache License 2.0
All sources checked October 21, 2026.


