<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex</title>
    <description>The latest articles on DEV Community by Alex (@pr0digy).</description>
    <link>https://dev.to/pr0digy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F335251%2F6d4ec420-b8c3-4411-ae2a-da4b3ff0eb13.png</url>
      <title>DEV Community: Alex</title>
      <link>https://dev.to/pr0digy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pr0digy"/>
    <language>en</language>
    <item>
      <title>Replacing objects in images: what the model changes</title>
      <dc:creator>Alex</dc:creator>
      <pubDate>Fri, 13 Nov 2026 10:18:50 +0000</pubDate>
      <link>https://dev.to/pr0digy/replacing-objects-in-images-what-the-model-changes-4cb5</link>
      <guid>https://dev.to/pr0digy/replacing-objects-in-images-what-the-model-changes-4cb5</guid>
      <description>&lt;p&gt;An image model can make a convincing replacement and still put it through another object or change something nearby. It can also turn a leather sofa beige while leaving leather creases in what should be linen. The work for Muse, our node canvas at &lt;a href="https://splayflo.ai" rel="noopener noreferrer"&gt;SplayFlo&lt;/a&gt;, spans 405 edited images across drawn and photorealistic scenes. The outputs came from nine named models or variants and Codex's image tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A reference picture produced a sofa with the rounded arms we wanted; a description alone produced straighter arms. Neither version fully reproduced the looped fabric.&lt;/li&gt;
&lt;li&gt;A red box is a practical way to mark what to replace. Editing a cropped piece and pasting it back kept everything outside that piece untouched, but some joins left visible seams. Native masks and boxes were not consistently better than red boxes; results varied by model.&lt;/li&gt;
&lt;li&gt;For furniture and material changes in generated rooms, Meta Muse produced 12 usable edits out of 15 and Nano Banana 10. Those were the highest counts among six models and tools, with three attempts per change. We were surprised that Meta Muse was also the cheapest paid model in this comparison, at $0.01 per image.&lt;/li&gt;
&lt;li&gt;A convincing image can still fail: one FLUX lamp's base fused into the sofa and floated above the floor. When Nano Banana replaced a desk and chair, the laptop disappeared in all three attempts. Naming the laptop, books, and plant in the prompt kept it in all six attempts. However, only three edits were usable overall.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When a convincing edit is unusable
&lt;/h2&gt;

&lt;p&gt;FLUX 3 Image produced a detailed brass lamp and changed little outside the marked area. We nearly called it one of the best results.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Room and marked lamp&lt;/th&gt;
&lt;th width="50%"&gt;FLUX 3 Image result&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/lamp-before.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Flamp-before.jpg" alt="Living room before editing, with a black tripod floor lamp outlined in red beside a gray sofa" width="800" height="534"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/lamp-after.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Flamp-after.jpg" alt="FLUX result with a brass lamp whose marble base is fused into the sofa arm and floats above the floor" width="800" height="534"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The marked input and the FLUX 3 Image result.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Original contact&lt;/th&gt;
&lt;th width="50%"&gt;Replacement contact&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/lamp-contact-before.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Flamp-contact-before.jpg" alt="Close-up of the sofa arm and the original tripod lamp's feet, with the red edit boundary beside the arm" width="532" height="465"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/lamp-contact-after.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Flamp-contact-after.jpg" alt="Close-up of the lamp's marble base fused into the sofa arm and floating above the floor" width="532" height="465"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The replacement's base beside the sofa arm. The red line marks the original edit boundary.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The lamp is badly misplaced: its marble base is fused into the sofa arm and floats above the floor. The result is unusable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#contact" rel="noopener noreferrer"&gt;Inspect the full-size lamp input and result.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Text prompts vs. image references
&lt;/h2&gt;

&lt;p&gt;The sofa in our reference was mustard bouclé, with a ribbed back, rounded arms, and wooden legs. One request described those features in words; another included a picture of the sofa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fsofa-reference.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fsofa-reference.png" alt="Original mustard bouclé sofa reference with rounded arms, ribbed back, and wooden legs" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The original sofa reference sent to the model. &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/sofa-reference.png" rel="noopener noreferrer"&gt;Open at full size.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Description only&lt;/th&gt;
&lt;th width="50%"&gt;Reference supplied&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/sofa-words.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fsofa-words.png" alt="Full room result from a written description: a mustard ribbed sofa with old cushions and throw and a flatter woven surface" width="800" height="533"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/sofa-with-reference.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fsofa-with-reference.png" alt="Full room result with the product reference: a mustard sofa with rounded arms and ribbed back" width="800" height="533"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Full output frames: the left edit used a written description, and the right also used the product image as a reference. Open either image at full size.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With the pictures, Codex's image tool returned 28 sofa and arch results that resembled the objects in the references. The four text-only results were plausible, but did not match the specific sofa or arch. The text-only sofa had straighter arms and a flatter weave; neither displayed sofa fully recovered the reference's looped bouclé.&lt;/p&gt;

&lt;p&gt;The arch prompts differed: the text-only request asked for the existing arch rebuilt in a new material, so this is not a controlled comparison of the reference alone. The sofa's old cushions and throw stayed in some results and disappeared in others. In one collage, the pasted sofa covered tall flower stems; the model did not bring them back.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#reference" rel="noopener noreferrer"&gt;Inspect the sofa and arch reference comparisons.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes outside the marked area
&lt;/h2&gt;

&lt;p&gt;An edit can redraw parts of the picture outside the target. We replaced the cream arch in a plaza with an orange one, and the gray sofa in a room with a mustard one. Both scenes had drawn and photorealistic versions; the photorealistic scenes were generated, not photographs of real places.&lt;/p&gt;

&lt;p&gt;The red boxes show the objects to replace. Each pair below shows one whole-image result from Codex's image tool. Open an image to see it at full size.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Drawn plaza · before&lt;/th&gt;
&lt;th width="50%"&gt;Drawn plaza · after&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-drawn-plaza-input.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-drawn-plaza-input.jpg" alt="Drawn plaza before editing, with a red box around the cream arch" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-drawn-plaza-result.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-drawn-plaza-result.jpg" alt="Drawn plaza after editing, with an orange arch in place of the cream one" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The arch replacement in the drawn plaza.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Photorealistic plaza · before&lt;/th&gt;
&lt;th width="50%"&gt;Photorealistic plaza · after&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-photo-plaza-input.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-photo-plaza-input.jpg" alt="Photorealistic plaza before editing, with a red box around the cream arch" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-photo-plaza-result.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-photo-plaza-result.jpg" alt="Photorealistic plaza after editing, with an orange arch in place of the cream one" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The same arch replacement in the photorealistic plaza.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Drawn room · before&lt;/th&gt;
&lt;th width="50%"&gt;Drawn room · after&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-drawn-room-input.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-drawn-room-input.jpg" alt="Drawn room before editing, with a red box around the gray sofa" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-drawn-room-result.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-drawn-room-result.jpg" alt="Drawn room after editing, with a mustard sofa in place of the gray one" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The sofa replacement in the drawn room.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Photorealistic room · before&lt;/th&gt;
&lt;th width="50%"&gt;Photorealistic room · after&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-photo-room-input.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-photo-room-input.jpg" alt="Photorealistic room before editing, with a red box around the gray sofa" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/full/scene-photo-room-result.png" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Finspection%2Fthumb%2Fscene-photo-room-result.jpg" alt="Photorealistic room after editing, with a mustard sofa in place of the gray one" width="560" height="373"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The same sofa replacement in the photorealistic room.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The pictures above show one result for each case. The table measures 14 whole-image results per case; each percentage is the median share of the surrounding scene that changed.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Median share of sampled pixels changed outside the marked region and its 16-pixel margin, across 14 whole-image results for each scene and style. A pixel counted as changed when any color channel moved by more than 24/255.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scene&lt;/th&gt;
&lt;th&gt;Drawn&lt;/th&gt;
&lt;th&gt;Photorealistic&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Plaza, replace arch&lt;/td&gt;
&lt;td&gt;21.9%&lt;/td&gt;
&lt;td&gt;22.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Room, replace sofa&lt;/td&gt;
&lt;td&gt;5.0%&lt;/td&gt;
&lt;td&gt;2.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The plaza changed more than the room in both styles. A small change is not necessarily harmless: the FLUX lamp changed only 6.3% outside its box and still cut into the sofa.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#scene" rel="noopener noreferrer"&gt;Inspect the drawn and photorealistic scene inputs and results.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Red boxes, crops, and masks
&lt;/h2&gt;

&lt;p&gt;We marked the part to change with a red box on the full picture. We also tried cropping that part, editing the crop, and pasting it back. Three models accepted masks or boxes as separate inputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Red-box edits across models
&lt;/h3&gt;

&lt;p&gt;For the red-box comparison, the models had to replace an arch, a sofa, a lamp, and a small craft, and add an armchair in an empty corner. Each received a picture of the object to insert. Each listed paid model returned one result per scene; Codex returned two.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;One red-box result per scene for each listed paid model, two per scene for Codex.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Uncertain&lt;/th&gt;
&lt;th&gt;Fail&lt;/th&gt;
&lt;th&gt;Pass&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex tool&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;6/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Image&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Klein&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;0/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideogram 4.5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Krea 3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAI Image 2.6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;0/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta Muse Image&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;2/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana 2.1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3/5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One or two results per scene are too few to establish how reliably a model performs. The instructions were shared, but some output settings differed. For the craft, FLUX 3 Image, Krea, MAI, and Nano Banana were asked for 16:9 because their available ratios did not include the scene's approximately 5:3 frame.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#screen" rel="noopener noreferrer"&gt;Inspect an arch result from each model in the table.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the same five scenes, the table below shows three red-box attempts per scene from GPT Image 2.5 Flare, GPT Image 2.5 Sunburst, and Nano Banana, judged against the same checks.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three red-box attempts per scene for each model. These are separate from the single-attempt screen.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Uncertain&lt;/th&gt;
&lt;th&gt;Fail&lt;/th&gt;
&lt;th&gt;Pass&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Flare&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;8/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana 2.1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;6/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;8/15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Flare and Sunburst each passed 8 of 15; Nano Banana passed 6.&lt;/p&gt;

&lt;h3&gt;
  
  
  Crop and paste
&lt;/h3&gt;

&lt;p&gt;Cropping and pasting leaves everything outside the crop untouched. The join can still show: one lamp crop shifted, leaving seams through the sofa and rug. In the sofa case, a Codex crop rendered more of the reference's bouclé loops than the full-picture edit.&lt;/p&gt;

&lt;p&gt;For the arch, we sent a crop around the target with the reference picture, then resized and pasted the result back. The table compares this with the red-box edits, using three attempts per method where delivery succeeded. The prompts were adapted to each method.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Arch: passes / returned results. Three attempts were planned per method. FLUX 3 Image returned two red-box results; its third request closed without an image.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Red box&lt;/th&gt;
&lt;th&gt;Crop and paste&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex tool&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Image&lt;/td&gt;
&lt;td&gt;2/2&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Klein&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideogram 4.5&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Krea 3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAI Image 2.6&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Muse Image&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana 2.1&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nano Banana passed all three red-box edits and none of its crop-and-paste edits: people and market edges appeared doubled along the join. Meta's Muse Image model showed the opposite pattern, passing none of its red-box edits and two crop-and-paste edits. Codex and Ideogram passed all three with both methods. These results describe one scene.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#arch" rel="noopener noreferrer"&gt;Inspect the arch inputs and every returned comparison.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Native masks and boxes
&lt;/h3&gt;

&lt;p&gt;Sunburst and Ideogram can take a mask marking the edit area; FLUX 3 Klein takes box coordinates. The table compares each model's native control with red-box results for the same scene.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Four scenes, by model and method: passes / returned results. Uncertain results are identified separately. The native column uses a mask for Sunburst and Ideogram and boxes for FLUX 3 Klein.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model and scene&lt;/th&gt;
&lt;th&gt;Red box&lt;/th&gt;
&lt;th&gt;Native&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Klein · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#arch" rel="noopener noreferrer"&gt;Arch&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Klein · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#sofa" rel="noopener noreferrer"&gt;Sofa&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;0/3 (1 uncertain)&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Klein · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#lamp" rel="noopener noreferrer"&gt;Lamp&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Klein · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#armchair" rel="noopener noreferrer"&gt;Armchair&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideogram 4.5 · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#arch" rel="noopener noreferrer"&gt;Arch&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideogram 4.5 · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#sofa" rel="noopener noreferrer"&gt;Sofa&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;0/3 (3 uncertain)&lt;/td&gt;
&lt;td&gt;0/3 (2 uncertain)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideogram 4.5 · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#lamp" rel="noopener noreferrer"&gt;Lamp&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideogram 4.5 · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#armchair" rel="noopener noreferrer"&gt;Armchair&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#arch" rel="noopener noreferrer"&gt;Arch&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#sofa" rel="noopener noreferrer"&gt;Sofa&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#lamp" rel="noopener noreferrer"&gt;Lamp&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst · &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspection/method-followup-2026-10-31/index-rewrite-final-2026-11-03.html#armchair" rel="noopener noreferrer"&gt;Armchair&lt;/a&gt;
&lt;/td&gt;
&lt;td&gt;1/3 (2 uncertain)&lt;/td&gt;
&lt;td&gt;2/2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sunburst passed all three red-box arch edits and none with a native mask. Ideogram passed all three by either method. On the sofa, some results were uncertain because a throw or foreground object hid the cushion seam needed for the check. Sunburst's armchair mask has two returned results because one request produced no image.&lt;/p&gt;

&lt;p&gt;Some red-box images appear in more than one table. For Sunburst and Nano Banana, the paired comparisons use the first three attempts, chosen by time. Two AI agents independently checked 64 method-comparison images; a third reviewed their disagreements. A check against 15 previously judged images kept the same overall verdicts but found differences in individual answers. The agents rechecked lamp and sofa cases after the model identities were known.&lt;/p&gt;

&lt;h2&gt;
  
  
  Replacing furniture and materials
&lt;/h2&gt;

&lt;p&gt;The interior tests used generated stand-ins, not clients' rooms. We asked for five changes: a specific chair, a desk and chair together, shelf veneer from a swatch, leather changed to linen, and leather changed to aubergine. Codex's image tool and five model variants each returned three images per task, for 90 results. They used the same scenes, references, and instructions, but providers and output settings varied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chair reference&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fchair-reference.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fchair-reference.png" alt="Full reference showing a green curved-back chair on slender brass legs, with space around the entire chair" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Marked room&lt;/th&gt;
&lt;th width="50%"&gt;Nano Banana result&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/chair-before.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fchair-before.jpg" alt="Bedroom desk with a black chair outlined in red" width="650" height="650"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/chair-after.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fchair-after.jpg" alt="Bedroom with the green curved-back chair replacing the black chair at the desk" width="650" height="650"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The marked room and result are detail crops. The complete chair reference is shown above them.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Nano Banana returned two usable single-chair edits in three attempts. The result above matched the product's proportions and kept the desk and window in place.&lt;/p&gt;

&lt;p&gt;Replacing the desk and chair together was harder: none of the 18 edits was usable. Nano Banana lost the closed laptop in all three attempts, although the prompt said the things on the desk should stay.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Before: laptop behind chair&lt;/th&gt;
&lt;th width="50%"&gt;After: laptop gone&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/desk-before.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fdesk-before.jpg" alt="Original white desk with books, a partly hidden closed silver laptop, a potted plant, and a black chair, inside a red edit box" width="800" height="471"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/desk-after.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Fdesk-after.jpg" alt="Replacement wooden desk and green chair with books and plant still present but no laptop" width="800" height="471"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Detail crops of the desk before and after the edit. The closed laptop sits behind the old chair in the input.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The laptop sat inside the area that had to be edited with the desk. The books and plant survived, making the missing laptop easy to overlook.&lt;/p&gt;

&lt;p&gt;We changed one sentence in the prompt to name the laptop, books, and plant and describe where they belonged. Nano Banana kept the laptop in all six attempts, compared with none of the three using the general instruction. Three of those six results were usable overall; the others added a trailing vine or extra brass parts to the chair. These six images used a different prompt and are separate from the 90 results in the table below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#naming-what-stays" rel="noopener noreferrer"&gt;Inspect all six edits with the named desk items.&lt;/a&gt; &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#follow-up-r3-desk-chair" rel="noopener noreferrer"&gt;Compare the Meta Muse and FLUX desk edits.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Turning leather into linen brought a different problem. GPT Image 2.5 made the sofa beige but left leather-like creases on its seats. Nano Banana's three linen results lost those creases and passed the material check.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th width="50%"&gt;Nano Banana: linen&lt;/th&gt;
&lt;th width="50%"&gt;Sunburst: leather creases remain&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/linen-nano-banana.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Flinen-nano-banana.jpg" alt="Beige linen sofa generated by Nano Banana, with softer fabric folds across the seat" width="799" height="324"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/linen-sunburst.jpg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ff003.backblazeb2.com%2Ffile%2Faxgv-web%2Fjournal%2Fwhen-an-image-replacement-fails%2Fassets-v1%2Flinen-sunburst.jpg" alt="Beige sofa generated by GPT Image 2.5 Sunburst, with leather-like creases retained on the cushions" width="799" height="324"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Detail crops of the sofas. Both changed the color. At 2×, the right-hand result still has the old material's creases.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Results across five interior tasks
&lt;/h3&gt;

&lt;p&gt;We counted an edit as usable only when no applicable check failed or remained uncertain. The checks covered the requested object or surface, its size and position, the objects that should survive, physical contact, and the surrounding room.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Usable interior results as returned, scored to the same calibrated standard. One Codex attempt per task and one FLUX aubergine attempt have one review; their totals are provisional.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table width="100%"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Chair&lt;/th&gt;
&lt;th&gt;Desk + chair&lt;/th&gt;
&lt;th&gt;Shelf&lt;/th&gt;
&lt;th&gt;Linen&lt;/th&gt;
&lt;th&gt;Aubergine&lt;/th&gt;
&lt;th&gt;Total&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;6/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flare&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sunburst&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;6/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;10/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta Muse&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;12/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX 3 Image&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;td&gt;0/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;7/15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Meta Muse produced 12 usable results out of 15 and Nano Banana 10. Both passed all three linen and aubergine edits; neither passed a desk-and-chair edit with the general preservation instruction. Meta Muse cost $0.01 per image in these tests; Codex's image tool had no separately reported per-image price.&lt;/p&gt;

&lt;p&gt;Two AI agents independently reviewed 84 of the 90 images; one had seen some outputs before, so the blinding was partial. A repeat review disagreed on four of 25 control images. The decisions were calibrated after the model identities were revealed, applying the same allowance for a barely discernible window-catch change across models. The remaining six images—five Codex and one FLUX—have one review, so those two totals are provisional. These counts describe the generated scenes and prompts, not a general model ranking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#interior" rel="noopener noreferrer"&gt;Inspect Codex, Flare, Sunburst, and Nano Banana results.&lt;/a&gt; &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#follow-up" rel="noopener noreferrer"&gt;Inspect Meta Muse and FLUX results by task.&lt;/a&gt; &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#codex-follow-up" rel="noopener noreferrer"&gt;Inspect the remaining Codex results.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Meta Muse's three chairs matched the product's rear-view shape. Two FLUX chairs did too; the other changed the laptop on the existing white desk. On the shelf task, one FLUX edit recolored the separate white desk and another covered only 98.9% of the original frame. Its remaining shelf edit passed. Two of its linen results kept the leather creases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#follow-up-r3-chair" rel="noopener noreferrer"&gt;Compare the chair edits.&lt;/a&gt; &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#follow-up-r3-shelf" rel="noopener noreferrer"&gt;Compare the shelf edits.&lt;/a&gt; &lt;a href="https://f003.backblazeb2.com/file/axgv-web/journal/when-an-image-replacement-fails/assets-v1/inspect-rewrite-2026-11-03.html#follow-up-r3-couch-fabric" rel="noopener noreferrer"&gt;Inspect the fabric edits.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flare and Sunburst are options from the same model family. Across 30 blind comparisons of their finish, neither consistently came out ahead. Their chair results differed: Sunburst's three edits passed under the common standard, while Flare's lost the laptop or added a leg.&lt;/p&gt;

&lt;p&gt;Two FLUX requests for an aubergine sofa returned no image. A third succeeded in 46 seconds; the delivery failures are recorded separately from the image-quality scores. Ideogram, FLUX 3 Klein, Krea, and MAI were not tested on the five interior changes. Codex's image tool did not disclose an exact model ID for its calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing a starting point
&lt;/h2&gt;

&lt;p&gt;The red box is a practical starting point. Cropping keeps everything outside the crop unchanged, but check the pasted edge for shifts and doubled details.&lt;/p&gt;

&lt;p&gt;For a chair or shelf edit like these, Meta Muse is a model to try first: it passed all three attempts on each, while Nano Banana passed two of three. Both passed all three linen edits. On the arch, Codex and Ideogram passed all three with either a red box or crop. Each of those comparisons has only three attempts per task.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>generativeai</category>
      <category>imagegeneration</category>
    </item>
    <item>
      <title>Telling an image model which picture is which</title>
      <dc:creator>Alex</dc:creator>
      <pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/pr0digy/telling-an-image-model-which-picture-is-which-1nhc</link>
      <guid>https://dev.to/pr0digy/telling-an-image-model-which-picture-is-which-1nhc</guid>
      <description>&lt;p&gt;When you send an image model several reference pictures, the prompt has to say which is which. The reliable way is an index at the top of the prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Image 1 is the foundation style.&lt;br&gt;&lt;br&gt;
Image 2 is the air fleet.&lt;br&gt;&lt;br&gt;
Image 3 is the sketch to put the style and the fleet on.&lt;/p&gt;

&lt;p&gt;…then the actual request&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The index works every time, but writing one for every request is a chore, especially on an iPad with no keyboard. We tested two ways to skip it, on Codex's image tool and in Muse, our node canvas at &lt;a href="https://splayflo.ai" rel="noopener noreferrer"&gt;SplayFlo&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File names.&lt;/strong&gt; Save each picture under a meaningful name and use that name in the prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labels.&lt;/strong&gt; Draw each picture's name onto the picture itself, in a frame.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File names.&lt;/strong&gt; In the tested workflows, uploads were renamed before reaching the model, so the names we gave the files did not identify the references.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labels.&lt;/strong&gt; With each reference framed under its name, the model followed the label over the order 15 times out of 16 across four models in Muse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Names matter.&lt;/strong&gt; When a label's name described a different picture, the model sometimes followed the meaning instead. Use names that match the picture, or abstract ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No visible leakage.&lt;/strong&gt; None of 16 renders drew a label, its letters or a frame into the scene.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The file name never arrives
&lt;/h2&gt;

&lt;p&gt;File names were the cheapest to test. We sent one reference picture and asked the model to draw a sign with that picture's file name on it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;File sent&lt;/td&gt;
&lt;td&gt;&lt;code&gt;zebra-umbrella-42.png&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sign, render 1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;16b5080a4fdd77172f12d9e1ca146cf5.png&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sign, render 2&lt;/td&gt;
&lt;td&gt;another 32-character code&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The codes differ, and neither is the file's checksum: somewhere between our request and the model, every reference is uploaded again under a random name. Whatever we call the file, the model never sees it.&lt;/p&gt;

&lt;h2&gt;
  
  
  No labels: order decides
&lt;/h2&gt;

&lt;p&gt;Without names, the model has two things to go on: what each picture shows, and the order the pictures arrive in. When the pictures look different, their content is enough:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Rift City scene built from four references came out right with names in the prompt instead of a numbered legend, in either order. In another Rift City scene, we used Blender to &lt;a href="https://axgv.dev/journal/rift-city-beach-at-your-door" rel="noopener noreferrer"&gt;repair inconsistent views for an AI video&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Two vehicle sheets, passenger craft and freight haulers, were matched correctly even with their file names swapped.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Craft from the passenger fleet fly above the arch; craft from the freight fleet are parked in a row on the plaza.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1jgh9ak3zkrsk0i8hwz3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1jgh9ak3zkrsk0i8hwz3.jpg" alt="A plaza under a white arch with a row of parked freight haulers, a crane and container carriers in front, and passenger craft flying above" width="562" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passenger craft, flying&lt;/strong&gt; sheet sent as &lt;code&gt;freight fleet.png&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Freight haulers, parked&lt;/strong&gt; sheet sent as &lt;code&gt;passenger fleet.png&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;All 8 renders parked the haulers and flew the passenger craft, whatever the files were called and whichever sheet went first. This one had the names swapped.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pictures of the same kind are the hard case, because only a name can tell them apart. We used two character sheets, Max and Pav, with the same prompt for every render, and varied the file names and which picture was sent first. A separate judge, who didn't know the setup, checked who sat on the bench.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Max sits on the bench on the left holding a green kite. Pav stands on the right, waving.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Renders with Max on the bench, as the prompt asks.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File names&lt;/th&gt;
&lt;th&gt;Max's picture sent first&lt;/th&gt;
&lt;th&gt;Pav's picture sent first&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Right names&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;0 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swapped names&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;0 of 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No names&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;0 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Numbered legend&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;3 of 3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Without a numbered legend, the kid on the bench was always the one whose picture went first, whatever the file names. Only the legend got it right in both orders.&lt;/p&gt;

&lt;h2&gt;
  
  
  A name drawn on the picture
&lt;/h2&gt;

&lt;p&gt;The second idea puts the name where no upload step can strip it: in the pixels. Same kids, same prompt, plus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frame:&lt;/strong&gt; each picture in a dark frame, its name on a bar above it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt line:&lt;/strong&gt; one extra sentence saying the labels and frames aren't part of the picture, the kind an app can add on its own.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Renders that seated the kid labeled MAX.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Labels&lt;/th&gt;
&lt;th&gt;Max's picture sent first&lt;/th&gt;
&lt;th&gt;Pav's picture sent first&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Right&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;3 of 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swapped&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All 9 renders followed the label, in both orders. With the labels swapped, that put Pav, the kid in the yellow shirt, on the bench: the model read the label and ignored the order.&lt;/p&gt;

&lt;p&gt;That was one model, Codex's. To check others, we sent the same framed pictures through Muse to four image models. Muse sends references as a plain list of pictures, so the frames are the only names the model sees. Two renders per model per setup, judged blind.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In the no-label column, the count shows renders that followed the order. In the two labeled columns, it shows renders that followed the label.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;No labels, Pav first&lt;/th&gt;
&lt;th&gt;Labels swapped, Max first&lt;/th&gt;
&lt;th&gt;Labels right, Pav first&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT Image 2.5 Flare (via fal)&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;1 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana 2.1 (via fal)&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MAI-Image-2.6 Flash (via OpenRouter)&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meta Muse Image (via OpenRouter)&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Without labels, all four models put the first-sent kid on the bench, 8 of 8. Where the label and the order pointed at different kids, the label won 15 of 16. The one miss: Flare once seated Pav although Max's picture was correctly labeled MAX.&lt;/p&gt;

&lt;h2&gt;
  
  
  Names that mean something
&lt;/h2&gt;

&lt;p&gt;Back on Codex's image tool, we tried three more kinds of reference from our Rift City cards: two characters, two craft and two places, all with made-up names. Each prompt asks for one of the pair by name, in two setups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Labels right,&lt;/strong&gt; the requested picture sent second.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labels swapped,&lt;/strong&gt; the requested picture sent first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Renders that drew the picture labeled with the requested name.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;Labels right&lt;/th&gt;
&lt;th&gt;Labels swapped&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Characters: Pim, Taro&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Craft: the Kestrel, the Orbis&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Places: Vell Square, Ossa Gardens&lt;/td&gt;
&lt;td&gt;4 of 4&lt;/td&gt;
&lt;td&gt;0 of 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Places, abstract names: Kesh, Tolvar&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;td&gt;2 of 2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;With correct labels, the label won 10 of 10, against the order every time. With swapped labels, characters and craft still followed the label. Places didn't: every render drew the arch plaza.&lt;/p&gt;

&lt;p&gt;The reason is in the names. "Vell Square" sounds like the plaza and "Ossa Gardens" like the green deck. The prompt asked for Vell Square, the swapped label put that name on the gardens, and the model drew the plaza anyway, correcting our wrong label. With meaningless names, Kesh and Tolvar, the model followed the label in both setups.&lt;/p&gt;

&lt;p&gt;Asked for Vell Square meaning won&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference 1: plaza, labeled OSSA GARDENS&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhgt2plj4mapgddbd5sv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhgt2plj4mapgddbd5sv.jpg" alt="A plaza under a tall white arch with market stalls, in a dark frame labeled OSSA GARDENS" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference 2: garden, labeled VELL SQUARE&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhg0pbgzyuz6gf6537vik.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhg0pbgzyuz6gf6537vik.jpg" alt="A green deck of raised walkways and waterfalls among towers, in a dark frame labeled VELL SQUARE" width="799" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Result: plaza&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyz3x0f92q2d7dtjsym8r.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyz3x0f92q2d7dtjsym8r.jpg" alt="The plaza under the white arch with market stalls and a fountain" width="562" height="999"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Asked for Kesh label won&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference 1: plaza, labeled TOLVAR&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqxaeqqaqm58e7ak8w8as.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqxaeqqaqm58e7ak8w8as.jpg" alt="The plaza under the tall white arch with market stalls, in a dark frame labeled TOLVAR" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference 2: garden, labeled KESH&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjanzwf1iv420741we5l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyjanzwf1iv420741we5l.jpg" alt="The green deck of raised walkways and waterfalls, in a dark frame labeled KESH" width="799" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Result: garden&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ms7qapvrmgg2jus7vfi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9ms7qapvrmgg2jus7vfi.jpg" alt="The green deck with looping raised walkways, waterfalls and a round pool among towers" width="562" height="999"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The same two places, labels swapped both times. Under descriptive names the model drew the plaza, labeled OSSA GARDENS, because Vell Square sounds like a plaza. Under abstract names it drew the picture labeled KESH.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The model doesn't copy reference pictures blindly. It works out what each one shows, a plaza with a market, a garden deck with waterfalls, and matches that against the meaning of the names in the prompt. The vehicle sheets showed the same effect.&lt;/p&gt;

&lt;p&gt;When a name's meaning and a drawn label disagree, the meaning can win. That's less a bug than a property of some image models, and it says how to name references: with something that doesn't contradict the picture. Muse never sends swapped labels; they were only a test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Labels don't leak
&lt;/h2&gt;

&lt;p&gt;Labels are text inside the picture, and image models copy what they're given, so we checked whether labels end up in renders. On Codex's image tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sent:&lt;/strong&gt; Lex's character card and the Foundation Style card, both framed. Then the same with Max.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt:&lt;/strong&gt; Lex walking down a busy shopping street, a scene that invites signs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Varied:&lt;/strong&gt; which card went first, and whether the prompt ended with "No text, lettering or signs."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renders:&lt;/strong&gt; two per setup, 16 in all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;16 renders, judged blind with every sign, corner and edge enlarged.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Drew a label's letters (LEX, MAX, FOUNDATION, STYLE)&lt;/td&gt;
&lt;td&gt;0 of 16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Drew a frame or a title bar&lt;/td&gt;
&lt;td&gt;0 of 16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Drew the right kid&lt;/td&gt;
&lt;td&gt;16 of 16&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The only readable text in any render is a café chalkboard, in one whose prompt didn't ban text. The test can't show whether the renders followed the style card: the character cards are drawn in the same style, so the renders would look the same either way.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Muse does with it
&lt;/h2&gt;

&lt;p&gt;Muse adds no new node. A generator's Inputs list gets one switch, Labeled. When it's on, every reference goes out in a dark frame with its name on a bar above it; when it's off, all of them go plain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzmetpil7ndm2u2e053v8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzmetpil7ndm2u2e053v8.jpg" alt="A Muse canvas: two media nodes, Passenger fleet and Freight fleet, wired into a Generate Image node, Spacecraft Assembly, whose Inputs list has the Labeled switch on and marks both inputs References · Labeled" width="800" height="839"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Two fleet sheets wired into Generate Image, with Labeled on. Each input now reads "References · Labeled".&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's all or none because labels only work when every reference has one: with a mix, the model matches the unlabeled pictures by order again. The label is the name of the node the picture comes from, and a max.png dropped onto the canvas is already named "max", so there's usually nothing to type.&lt;/p&gt;

&lt;p&gt;Every framed test prompt opened with a sentence naming the references and ended with "No text, lettering or signs." Neither was tested without, so Muse writes the opening sentence itself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Two reference images are supplied: Lex and Foundation Style. Each reference image shows its name on a label above it; the labels and dark frames are not part of the picture or its style.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The frame needed three fixes along the way. The first was label size. OpenAI says gpt-image-1 shrinks a reference to 512 px on its shortest side. At that size the tested MAX label was 36 px tall, but the first frame rule shrank labels on tall pictures and long names. The new rule keeps every label between 25 and 74 px: the bar grows with the picture, and long names wrap to two lines instead of shrinking.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Height at 512 px&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tested MAX&lt;/td&gt;
&lt;td&gt;36 px&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;First rule, 9:16&lt;/td&gt;
&lt;td&gt;26 px&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;First rule, long name&lt;/td&gt;
&lt;td&gt;12 px&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New rule&lt;/td&gt;
&lt;td&gt;25–74 px&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Label letter height once a reference is shrunk to 512 px on its shortest side.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The other two:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Edge.&lt;/strong&gt; A thin gray line now separates the picture from the frame. Without it, a card with dark edges ran straight into the dark frame, and a model couldn't see where the picture stopped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Size limit.&lt;/strong&gt; The framed picture stays within each model's size limit for a reference. Qwen Image accepts at most 2048 × 2048, so the picture is scaled down until the whole frame fits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bottom line:&lt;/strong&gt; the frame works. When it isn't enough, turn Labeled off: the index, with a description of each picture in the prompt, is still the bulletproof fallback.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was prepared with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>generativeai</category>
      <category>imagegeneration</category>
    </item>
  </channel>
</rss>
