Most AI images look fine. Competent. Like something generated by averaging every stock photo ever taken and calling it creativity.
Fine isn’t good enough when your brand has a point of view.
I’ve been running into this problem over the last few months. The trigger was Maxime Labonne’s LLM Twin concept where he trains a language model to write the way you write, not the way the internet writes. I wondered if I could apply the concept here with images?
So I built it. A two-part system that learns your brand’s visual aesthetic, then generates new images that actually look like they came from your team. I’m calling it a Visual AI Twin.
Consider this a working experiment, it’s good enough to be useful, open enough to improve.
The problem with Nano Banana, Midjourney, Et al.
Nano Banana, Midjourney, DALL-E, Stable Diffusion, they’re all trained on the whole internet. Which means they generate the average of everything. Ask for a product shot and you get something that could belong to any brand on earth. Technically impressive. Visually anonymous.
You can fight this with clever prompts. But then you’re spending an hour tweaking seed values and CFG scales to get something close to what you wanted, and the next time you run the same prompt it looks completely different.
The root cause: the model doesn’t know what your brand looks like. It only knows what everything looks like.
The fix is to stop fighting the model and start teaching it.
The system: three parts, one pipeline
The full process has three stages. Two of them you set up yourself using existing tools. The third is GauntLLMet, which I built to handle the part that didn’t exist yet.
Stage one: reading your images
Feed your brand’s image library through a vision model. I use Qwen3-VL-30B, it runs locally, matches the quality of hosted alternatives from OpenAi, Google and Antropic and costs nothing per image. It analyses each image and returns structured data: a caption, recreation instructions, a style and quality assessment, and a text-to-image prompt.
The annotation prompt asks the model to describe images as a professional annotator would specific rather than general, noting positions, relationships, colour, visible text. It also asks for an “artist’s message”: the intent behind the image, not just what’s in it. That second layer is where brand voice starts to form.
Stage two: training two models
The annotations become two datasets. One trains the diffusion model (the thing that generates pixels) using DiffSynth Studio. This is a CSV of image filenames paired with the text-to-image prompts from stage one.
Learning rate matters here: I use 1e-4 decaying to 1e-5, and I drop prompts entirely 5% of the time to push the model toward learning style rather than memorising descriptions.
The other trains a small language model using Unsloth to write prompts in your brand’s voice. Input is the artist’s message. Output is a short strategic brief: what to make, and why. Both tools have good examples and notebooks to walk you through the fine-tuning; you don’t need to write the training code from scratch.
Stage three: GauntLLMet
This is the part I built because nothing else did it.
GauntLLMet runs a competition. Your fine-tuned language models generate prompt candidates. A judge model critiques them head-to-head — harsh art director, not helpful assistant. Winners go to your fine-tuned diffusion model. A vision model then filters the output, discarding anything below a quality threshold.
The whole loop runs while you do something else. You come back to a folder of options worth looking at.
What the results look like
I ran the first real test twinning David Shrigley the British artist known for his deliberately crude drawings and deadpan humour. It’s a hard test: his style is specific, strange, and instantly recognisable. Generic AI tools tend to either make his work look polished (wrong) or just produce random scribbles (also wrong).
The system got it. Not every output, but enough to be useful. The ones that worked had the right awkwardness, the right handwriting quality, the right flat affect. More importantly, they felt like they came from a consistent place and not like someone had typed “crude drawing, dark humour” into a search box.









The source code is at github /electricazimuth/GauntLLMet.
Before you start
You need a decent GPU. The pipeline is designed to run locally with no API costs, no data leaving your machine but that means you’re doing real compute. A 24GB card handles it comfortably.
You also need images. Fifty is a floor, a few hundred gives the diffusion model enough to learn from without overfitting to individual shots.
The annotation step takes time upfront but pays off fast. The quality of what Qwen3-VL extracts directly determines the quality of what the language model learns to write, which directly determines what gets generated. Garbage in is still garbage out, even with good models.
One thing I didn’t expect: how much the artist’s message layer matters. It would have been easy to skip it and just use image descriptions. But descriptions tell you *what*, not *why*. Training on intent rather than content is what makes the output feel like it has a reason to exist.
The broader point
Local vision models have quietly gotten very good. Qwen3-VL-30B running on my own hardware performed better than Google’s Gemini in my tests on this annotation task which changes the economics of a project like this completely. No per-image API costs, no rate limits, no data privacy concerns.
You can run this entire process offline, on your own machine, with genuinely competitive model quality, that’s new, and it opens up a lot of options for brands.
Try it for your brand. Let me know what works and what doesn’t for you.


