Engineering note · Synthetic training data
Synthetic rust masks: GPT Image 2.5 Sunburst vs Nano Banana 2.1
I generated synthetic image-and-mask pairs with GPT Image 2.5 Sunburst and Nano Banana 2.1 to prepare training data for an RF-DETR rust segmentation model. The intended model will return rust segmentation masks from inspection images. In this note, I compare the two generators’ strengths and failure modes.
I have not trained RF-DETR on these data yet. I plan to cover training and evaluation in a follow-up engineering note in a few weeks. The masks shown here come from the image generators, not from a trained rust detector.
What did this small comparison show?
Nano Banana 2.1 looked more promising on simple, isolated rust patches. GPT Image produced better-aligned masks in the boat-hull and distant-railing examples. Neither set was reliable enough to accept as training labels without inspection and, in many cases, revision. This is a qualitative pilot, not a general model ranking or an RF-DETR benchmark.

The experiment: the same prompts, not the same images
I reused eight complete English prompts for the Nano Banana run, with one new output per prompt. I did not select only the best results after generation. Nano Banana received the scene descriptions, not the earlier GPT images as references. The scenes cover painted posts, access caps, railings, structural beams, a mooring bollard, a boat hull and a deliberately rust-free hard negative.
Each prompt asks for one side-by-side image: an inspection-style RGB photograph on the left, and a spatially registered black-and-white rust mask on the right. White means visibly rusted exposed iron or steel. Black means background and non-rust, including intact paint, shadows, dirt, algae, water, reflections and mere runoff staining on intact coating. The prompt also asks the mask to preserve intact-paint islands as holes.
- Prompt coverage
- 8 prompts, one saved sample per model per prompt; 16 samples in total.
- Nano Banana model record
gemini-nano-banana-2.1, generated through Picsart.- Nano Banana settings
- 21:9, 2K,
thinkingLevel: high, seed20261013. An exact 2:1 option was unavailable. - Nano Banana output dimensions
- 3168 × 1344 px per full pair; 1584 × 1344 px per half.
- Preparation
- Midpoint split, threshold 128, 8-connected regions, minimum area 1 pixel. No automatic dilation or region merging.
- Evaluation completed
- Visual review and mask-format checks. No training, no independent ground truth, no IoU, Dice or mAP scores.
Model provenance: I identify the OpenAI run here as GPT Image 2.5 Sunburst. Its archived image-tool response does not preserve an exact backend model-version ID. The Nano Banana export records the model identifier above. These saved outputs support a sample-level comparison, not a fully reproducible backend-version benchmark.
The same prompt does not produce the same photograph. Resolution, camera geometry, corrosion extent and scene complexity differ between the outputs. A better-looking result can partly reflect an easier generated scene. The seed does not make samples identical across services, and eight examples cannot establish either model’s general reliability.
Results at a glance
These assessments describe the saved examples below. “Looks better” does not mean “approved for training”.
| Scene | Visual assessment | Main concern |
|---|---|---|
| 01 · Painted post: isolated patches | Nano Banana looks better | Small boundaries still need review |
| 02 · Access cap: small spots and paint islands | Mixed result | Visible corrosion omitted elsewhere in the scene |
| 03 · Close guardrail: rust, paint and a welded joint | Mixed result | Intact welded or painted surfaces labelled as rust |
| 04 · Understructure: beam edges and occlusion | Nano Banana edge, with caveats | Small components and unequal scene difficulty |
| 05 · Mooring bollard: a broad patch with holes | Nano Banana edge, with caveats | Good main patch, incomplete or excessive boundaries |
| 06 · Boat hull: registration around openings | GPT Image looks better | Nano Banana mask shifted onto pale paint |
| 07 · Distant railing: small targets and repeated bars | GPT Image looks better | Mask on the wrong bar; small-target displacement |
| 08 · Hard negative: rust-like distractors | No clear difference | Empty masks still require semantic review |
Inspect the images and their generated masks
Use each Mask opacity slider to fade between RGB alone (0%) and the coloured mask layer (100%). Mask only shows a white-on-black view of the same generated label. Controls are independent for each sample; the sliders also work with the arrow keys.
Magenta: generated positive rust pixels. Cyan: their inner boundary. Neither colour is a model confidence score.
These are web previews, reduced to at most 960 px on the longest edge. RGB previews use WebP; mask layers are lossless PNGs, resized with nearest-neighbour sampling. The measurements refer to the original prepared masks, not these display copies. Use the previews to inspect the examples, not as native-resolution training annotations.
01 / Painted post: isolated patches
Nano Banana looks betterGPT Image 2.5 Sunburst
Original panel: 1024 × 768 px · Positive mask: 4.09% · 15 connected regions
Both main patches are in approximately the right places. Parts of the upper and left boundary of the larger patch include pale, intact or detached paint, while some small brown spots are omitted. The long runoff stain is correctly not labelled all the way down. The boundary still needs close inspection.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 5.81% · 2 connected regions
The two main rust patches and the notches formed by pale paint follow the generated mask well. There are fewer extraneous small regions than in the GPT sample. This is the most promising positive example in this set, but small boundary differences still need review; it is not proof of pixel-accurate annotation.
Identical prompt sent to both generators — scene 01
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: A pale cream painted cylindrical steel riverside post in a medium close-up, post slightly left of center in the left panel. One irregular dark orange-brown flaky corrosion island on its front at mid height and a small separate patch close to the base. Most paint is intact, mildly weathered. Out-of-focus grey river, green grass and stone paving behind it. Soft overcast light, realistic subdued colors. Rust should occupy roughly 3-7 percent of the left image. Clearly visible ragged boundaries.
02 / Access cap: small spots and paint islands
Mixed resultGPT Image 2.5 Sunburst
Original panel: 887 × 887 px · Positive mask: 3.98% · 13 connected regions
The main spots and two internal paint islands are represented. The extent of corrosion on the lower rim and near the screw is not fully covered, and some contours differ from the RGB image. Finding the obvious spots is not the same as labelling all visible corrosion.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 2.72% · 18 connected regions
The larger spots on the cap and the main rim patch align well. However, visible brown corrosion on the surrounding dark steel plate remains unlabelled, and some small rim patches are missing. The prompt asked for neutral grey dirt elsewhere. Better local contours do not resolve incomplete labelling of the whole scene.
Identical prompt sent to both generators — scene 02
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: An oblique close-up of a round light-grey painted steel access cap on a dark steel deck. Around twelve clearly separated small orange-brown corrosion spots plus one thin irregular corroded section on the rim. Include two irregular islands of intact pale paint within the largest rim patch. Other marks are neutral grey dirt, not rust. Moderate diffuse daylight, sharp enough to see the small spots. The cap occupies most of the left panel. Avoid hundreds of subpixel specks; make every requested rust spot resolvable.
03 / Close guardrail: rust, paint and a welded joint
Mixed resultGPT Image 2.5 Sunburst
Original panel: 886 × 887 px · Positive mask: 14.43% · 30 connected regions
The broad rust patch and its large intact-paint island are useful features. Several small white regions near the top fall on pale paint. The boundary between runoff staining and exposed rust is also uncertain in places. This is not ready-made ground truth.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 6.87% · 12 connected regions
The elongated main patch and the intact-paint holes are well represented. At the connections, however, larger pale or grey welded and painted surfaces without visible rust are labelled positive. That is a semantic error, even where the main patch looks geometrically convincing. Neither sample is a clear overall winner.
Identical prompt sent to both generators — scene 03
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: A close inspection photo looking diagonally down at an off-white painted bridge guardrail, one horizontal cylindrical top tube and one vertical support meeting at a welded T-joint. One elongated irregular ochre-orange corrosion patch exposes flaky steel along the front face of the tube, with intact white paint islands; a smaller contiguous rusty patch follows the weld. Dark grey asphalt and hard diagonal railing shadows in the background. The tube runs from upper left towards lower right within the left panel. Bright side daylight, natural phone color. Distinguish shadow from rust.
04 / Understructure: beam edges and occlusion
Nano Banana edge, with caveatsGPT Image 2.5 Sunburst
Original panel: 1024 × 768 px · Positive mask: 5.68% · 51 connected regions
The beam and the broad rust strip roughly correspond, but bright bolt heads are included as positives and visible rusty sections are omitted. Occluded, dark and rusty surfaces are not consistently separated. I would revise this sample before using it for training.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 7.39% · 86 connected regions
The long rust strips generally follow the mask better, and the false-positive pale bolt heads are less prominent. Some bright edges are still included and small rusty areas are missed. There are 86 connected regions; the preparation report estimates that 73 would be narrower than two pixels at a 312-pixel bounding size. This scene is also simpler than the GPT scene, so part of the apparent advantage may come from an easier image.
Identical prompt sent to both generators — scene 04
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: The underside of a small riverside steel structure, three off-white painted beams crossing obliquely, with a few elongated rust strips along exposed lower flanges, seams and one bolt group. One beam partly occludes another: only visible rust is masked. Paint remains over most surfaces. Rust varies from ochre to dark brown. Deep black gaps between beams, muted green water glimpsed behind, diffuse shade, moderate perspective. Keep the number of rust islands moderate and their boundaries clearly readable; no dense artificial repeated pattern.
05 / Mooring bollard: a broad patch with holes
Nano Banana edge, with caveatsGPT Image 2.5 Sunburst
Original panel: 886 × 887 px · Positive mask: 13.97% · 14 connected regions
The main top region and two large paint islands appear in the mask. The generator also drew corrosion around the rim and baseplate, much of which is unlabelled. A revision should either label all visible rust or generate a more tightly controlled scene.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 14.89% · 3 connected regions
The large top patch and its two paint islands align well. This is a better starting point than the GPT sample, whose heavily corroded baseplate is largely omitted. However, pale paint enters the mask at the right edge of the top patch, and small side or base areas are missed. Different amounts of generated corrosion make this an imperfect model-to-model comparison.
Identical prompt sent to both generators — scene 05
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: A low cylindrical steel mooring bollard seen from above at about 45 degrees on a paved riverbank. The circular top has one broad connected rough orange-brown corrosion region covering much of its surface, enclosing two irregular islands of remaining very dark charcoal paint. The vertical sides have faded pale paint and one small separate rusty chip. Paving, dry grass and a strong cast shadow surround it. The dark paint islands and cast shadow are NOT corrosion and must remain black in the mask. The whole bollard fits within the left panel.
06 / Boat hull: registration around openings
GPT Image looks betterGPT Image 2.5 Sunburst
Original panel: 887 × 887 px · Positive mask: 1.90% · 12 connected regions
The red stripe, water reflections and algae are correctly negative. Around the drainage openings, parts of the mask extend onto pale paint; a brownish fixing near the upper hose is not included. The dark interiors and rusty rims still need separate review.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 1.35% · 13 connected regions
The masks beside both openings are visibly shifted to the left: they label pale paint and miss the right-hand edges of the brown rust. The separation between the dark openings and rusty rims also fails in places. The GPT sample has errors too, but the main patches are substantially better registered. Both samples correctly leave the red stripe and water negative.
Identical prompt sent to both generators — scene 06
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: A close oblique view of a white painted steel boat hull at the waterline. Two small drainage openings have clearly exposed rusty chipped metal around the lower rims. Nearby intact paint has a faint brown runoff streak, which is NOT labeled as corrosion. There is a thin green algae band at the waterline, dark water reflections, and a short clean red painted draft stripe on the hull; these are all negative. A black ribbed hose crosses the upper background. Only the small rough exposed corroded metal around the drains is white on the mask. The dark interiors of the openings remain black.
07 / Distant railing: small targets and repeated bars
GPT Image looks betterGPT Image 2.5 Sunburst
Original panel: 958 × 821 px · Positive mask: 1.06% · 7 connected regions
The three main targets can be identified, but the mask on the middle thin vertical bar is displaced downward relative to the visible rust. Other boundaries are not pixel-exact either. A single global translation would not reliably repair all regions.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 4.58% · 4 connected regions
One small patch is labelled on the neighbouring bar instead of the rusty bar. The pale upper end of the nearby post is positive, and paint near the lower connection also enters the mask. Positive mask pixels cover 4.58% of the image, although the prompt requested roughly 0.5–2% rust. The GPT sample also has a shifted patch, but this Nano Banana sample has more substantial failures overall.
Identical prompt sent to both generators — scene 07
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: A wider handheld inspection photo looking along an off-white painted riverside pedestrian bridge railing receding into the distance. Visible water on the far side, grey walkway in the foreground, repeated vertical bars. Three distinct, modest rust patches on the NEAREST railing section: at the front top joint, at one lower welded connection, and a small patch on a nearby vertical bar. Farther railing has intact paint. Rust occupies roughly 0.5-2 percent of the left image; maintain enough resolution to see it. Soft autumn daylight, realistic perspective, no people, no readable text.
08 / Hard negative: rust-like distractors
No clear differenceGPT Image 2.5 Sunburst
Original panel: 1004 × 783 px · Positive mask: 0.00% · 0 connected regions
The thresholded mask is completely empty. Orange-red paint, a brown leaf, shadows and dirt provide useful negative distractors. Some tiny brownish marks on the coating still need a human decision. An empty generated mask is a useful check, not automatic approval of the sample.
Nano Banana 2.1 · Picsart
Original panel: 1584 × 1344 px · Positive mask: 0.00% · 0 connected regions
The mask is completely empty: red paint, brown leaves, dirt and algae remain negative. A pale chipped-paint area departs from the request for entirely intact coating, but no positive label is appropriate without visible rust. Both negative examples are useful candidates for review.
Identical prompt sent to both generators — scene 08
Create one synthetic computer-vision training sample as a clean two-panel diptych. Use case: photorealistic-natural. LAYOUT: exactly two equal-width panels touching at the exact vertical midpoint, no gutter, no border, no captions, no legend, no text labels. Use a wide landscape canvas; each half has the same dimensions. LEFT is an ordinary realistic RGB inspection photograph. RIGHT is its spatially registered binary semantic rust mask at exactly the same scale, camera projection, crop and pixel positions. MASK CONTRACT: pure white #FFFFFF only for visibly corroded exposed iron/steel, including visibly rusty flakes. Pure black #000000 for everything else. Each white region must have exactly the location, size, ragged boundary and interior holes of the corresponding rusty area in the left image. Preserve intact paint islands as black holes. All disjoint patches share white; touching patches are a single connected region. No instance colors. The right panel must contain no photographic detail, shading, grey tones, edges of non-rust objects, or texture inside white regions. No outlines. Do not mirror the geometry. LABEL RULE: intact paint of any color, red paint, bare shiny metal, shadows, dirt, moss/algae, pavement, water and reflected rust are black. Paint loss is positive only where exposed rust is visible. Mere runoff staining on intact paint is black. Do not invent rust hidden under paint or behind objects. PHOTO: plausible handheld phone inspection, physically coherent steel geometry and irregular natural corrosion, no cinematic grading, no beauty-advertising look, no watermark. Compose both panels together with matching rust boundaries. SCENE: A completely rust-free pale grey painted steel guardrail at a riverside walkway. Include a small patch of intact orange-red identification paint with smooth brush edges, some neutral grey dried mud, black cast shadows, green algae on nearby concrete, and a brown fallen leaf resting nearby. All steel coating is intact with NO actual rust, no corroded exposed metal, no brown chipped edges. These visual distractors are not rust. LEFT is a realistic inspection photograph under mixed sun and shade. RIGHT MUST BE AN ENTIRELY SOLID PURE BLACK RECTANGLE with no marks at all.
A clean binary mask is not necessarily a correct label
Several Nano Banana mask panels contain few intermediate-grey pixels and threshold cleanly. That is a useful output-format property, but it does not prove that the positive pixels sit on rust. A crisp outline can still be shifted onto intact paint, as the hull and railing examples show. Different output resolutions also make raw grey-pixel fractions unsuitable as a model leaderboard.
The positive-area percentages and connected-region counts above are descriptive mask statistics. A larger percentage is not higher recall, and fewer regions are not higher precision. Without an independently checked reference mask, they cannot tell me how much real corrosion was correctly labelled.
The preparation checks establish that a pair can be split, thresholded and converted consistently. They do not decide whether a brown patch is rust or repair an incorrectly placed region. I would still review the boundaries, exclusions, holes and small components before accepting a sample.
Binary semantic labels versus RF-DETR instances
The generator supplies one foreground class, rust, as a binary semantic mask. RF-DETR’s segmentation workflow uses per-object masks; in my preparation plan, each connected positive region becomes one rust annotation. That is a deliberate annotation convention, not proof that a connected region corresponds to one physically meaningful corrosion defect.
Touching patches remain connected, diagonal contact counts under 8-connectivity, and intact-paint holes must be preserved. The Nano Banana preparation report contains a trial COCO RLE export with 138 connected regions across eight images. That demonstrates export consistency, not 138 verified rust annotations, and it is not evidence that RF-DETR training or its actual data loader has been run.
In the source review, the Nano Banana painted-post and hard-negative samples remained needs_review; the other six Nano Banana examples were marked needs_revision. None was automatically approved for training.
What I would change before scaling up
I would start another controlled trial with simple close-up posts and isolated patches, where Nano Banana looked promising. Complex structures, holes and distant thin bars should be separate difficulty groups. I would not start an unchecked large generation batch with either model on the evidence of these eight prompts.
- Control the scene. Use fewer objects and explicitly rust-free backgrounds, so the generator has fewer opportunities to draw unlabelled corrosion.
- Specify the hard negatives. Restate that clean welds, end caps, intact paint, dark openings and runoff staining are negative. These are proposed prompt changes, not fixes already validated by this experiment.
- Review both geometry and meaning. Correct or reject shifted regions, missing corrosion and paint false positives. Inspect very small components at the intended training resolution.
- Repeat prompts. Multiple outputs per scene are needed to investigate consistency. One favourable sample is not a reliability estimate.
- Evaluate on independent real images. Keep related structures and capture sequences in the same split, and reserve a separately annotated real-image test set before judging deployment quality.
Questions answered
Which image generator was better for rust masks?
There was no universal winner in this pilot. Nano Banana looked stronger for several simpler patches; GPT Image was better aligned in the hull and distant-railing examples. Scene differences and the small sample prevent a general accuracy claim.
Can these generated masks be used as training ground truth immediately?
I would not accept them unchecked. The examples include displaced boundaries, missing rust and intact surfaces labelled positive. Format validation does not replace semantic and spatial review.
Are these RF-DETR predictions or training results?
No. Both RGB images and the initial masks were produced by image generators. RF-DETR training has not been performed on these data; it is the planned next stage.
Why are there no IoU, Dice or mAP scores?
There is no independently annotated reference set for this comparison. Scoring the two generated masks against each other would not be meaningful because they belong to different generated images.
References and related work
The observations in this note are my review of the sixteen saved samples. The following official documentation describes the models and the intended training workflow; it does not independently validate my generated labels.















