blog/sfeerbeeld-uit-productfoto-comfyui.mdx
Alle notities

20 september 2026

Sfeerbeeld uit een productfoto op wit: de drie ingrepen die voor het model zitten

Voor mijn eigen kunstplantenshop heb ik kamerbeelden nodig met precies de planten die wij verkopen. Een beeldbank voert ze niet en twaalf interieurs fotograferen is geen optie. Ik heb twee routes tegen elkaar gezet met ComfyUI en per verandering dezelfde kamer opnieuw gedraaid: de plant in een bestaande sfeerfoto plakken, of de kamer laten maken rondom de productfoto op wit. De tweede won, en de drie ingrepen die het verschil maakten zitten alle drie in het beeld dat je aanlevert. Inclusief de meting die van twee op vier van de vier ging, de twee valkuilen in ComfyUI zelf die stil de verkeerde uitkomst geven, en de grens die dit soort beeld heeft in de Google-productfeed.

Jermaya Leijen

Jermaya Leijen

Google Ads-specialist & AI-engineer

Op neverleafs.nl, mijn eigen webshop in kunstplanten, staat bij elke plant een productfoto op een witte achtergrond. Die doet zijn werk in het overzicht en in de productfeed, maar hij laat niet zien wat een bezoeker eigenlijk wil weten: hoe staat dit ding straks bij mij in de kamer, en hoe groot is het dan.

Sfeerbeeld kopen bij een beeldbank lost dat niet op, want daar staan planten in die wij niet voeren. Zelf fotograferen betekent twaalf ingerichte interieurs en een studio. Dus heb ik uitgemeten wat een beeldmodel hiervan kan maken, met een harde eis vooraf: de plant moet het artikel uit de winkel blijven en alleen de kamer mag gemaakt zijn.

Lichte woonkamer in cremetinten met een linnen bank, een houten salontafel en een vloerkleed. Rechts staat een kunstmatige ficus van 180 cm in een hoge witte plantenbak met verticale ribbels, met bladschaduw op de muur erachter.

Hoe ik het heb getoetst

De opzet is een vergelijking en geen losse proef, want anders kun je achteraf niet zeggen waar de winst vandaan komt. Twaalf kamers, elk met een andere plant uit de live catalogus, gekozen op dezelfde hoogtegrenzen die de keuzehulp van de shop gebruikt. Per verandering draaide ik dezelfde kamer met dezelfde plant opnieuw en telde ik hoe vaak de uitkomst bruikbaar was.

Twee vragen lagen eronder. Eerst: leg je de plant in een bestaande sfeerfoto, of laat je de kamer maken rondom de productfoto op wit. Daarna, binnen de winnende route: zit de winst in de opdracht die je het model geeft, of in het beeld dat je aanlevert.

Waarom plakken in een bestaande sfeerfoto afvalt

De eerste route lijkt de veilige: je hebt al sfeerfoto’s, je knipt de plant eruit, je zet hem in een andere kamer en je laat het model het licht gelijktrekken. In de praktijk loopt die op drie dingen vast, en ze zijn geen van drieen op te lossen met een betere opdracht.

In elke sfeerfoto in onze beeldbank staat al een plant. Je vraagt het model dus om een kamer te maken waarin al groen staat, en dat groen wil er niet uit. De belichting is het tweede: een productfoto is in de studio gemaakt, vlak en van voren, en een kamer heeft licht dat ergens vandaan komt. Zonder gegoten schaduw op de vloer en zonder kleurzweem van het raam blijft het een sticker, hoe scherp de uitsnede ook is.

Het derde is fundamenteel. Om de plant te behouden moet je hem beschermen met een masker, en precies dat masker houdt het licht van de kamer bij de plant weg. Je vraagt het model om iets samen te laten vallen en verbiedt het tegelijk om het stuk aan te raken waar dat moet gebeuren.

De route die het wel doet keert de volgorde om: de productfoto op wit gaat erin en het model bouwt de kamer, de plantenbak, het licht en de schaduw in een keer. Er is dan niets beschermd dat ertegenin werkt.

Een woord in de opdracht dat al in het beeld staat, wordt verdubbeld

Dit kostte me de meeste rondes en het staat in geen enkele handleiding. Noem je in de opdracht een zelfstandig naamwoord dat al in het aangeleverde beeld staat, dan tekent het model er een tweede bij. “Place the plant in a living room” leverde twee planten op. “A woven basket” leverde twee manden op. Het model leest dat als een nieuw object en niet als een aanduiding van wat er al is.

Bij de eerste route moest ik die woorden er dus uit slopen, wat de opdracht onleesbaar maakte. Bij de tweede route speelt het probleem niet, omdat er geen pot en geen kamer in het aangeleverde beeld staat waar iets mee kan botsen. Dat verschil alleen al maakt de tweede route de bruikbare.

De licentie die de modelkeuze bepaalde

Het draait op een gehuurde GPU met ComfyUI, een A40 van 48 GB. Daarop staat Qwen-Image-Edit-2509 met de LoRA White_to_Scene, die precies hiervoor getraind is: witte achtergrond eruit, scene eromheen. Allebei onder Apache 2.0, dus de uitkomst mag commercieel gebruikt worden.

Dat was mijn eerste selectiecriterium, nog voor beeldkwaliteit. De bekendere alternatieven sluiten commercieel gebruik in hun ontwikkelaarslicentie uit. Dan heb je een mooi beeld dat je niet in je webshop mag zetten, en dat kom je pas tegen als het werk al gedaan is.

Schermafbeelding van het ComfyUI-werkblad, vijf gekleurde groepen naast elkaar: invoer met de plant op wit doek, modellen en LoRA, de opdracht in twee tekstknopen, de sampler, en rechts de uitvoer met het gemaakte kamerbeeld erin.

De verhouding die je vooraf in het doek zet

Een productfoto op wit is staand, meestal 2:3, en de plant vult hem van rand tot rand. Voer je die zo in, dan is er geen wit waar een kamer kan komen. Het model maakt dan een kamer die strak om de plant heen sluit, zonder vloer eronder en zonder meubel ernaast, en juist die twee vertellen de kijker hoe groot het ding is. Het resultaat oogt als een plant met behang erachter.

De ingreep: de foto eerst uitsnijden tot de plant zelf, daarna op een breder vlak plakken met de plant op een derde van de breedte. De rest blijft wit. Die witruimte is de opdracht, alleen dan in beeldvorm.

Het aangeleverde beeld: een liggend wit vlak met rechts een kunstmatige ficus zonder pot, en onder de stam een egaal grijze cilinder die de plaats van de plantenbak markeert. De linkerhelft is helemaal wit.

Daarbij hoort een tweede knop: hoe hoog de plant op dat vlak staat. Op zeventig procent van de beeldhoogte oogde hij groter dan de kamer aankon. Op achtenvijftig procent klopt de verhouding tegen een bankleuning en een raamkozijn. De hoogte van het artikel staat daarnaast met zoveel woorden in de opdracht, 180 cm bijvoorbeeld, want anders gokt het model.

Wat je aanlevert, houdt het model vast

Elke productfoto heeft een zwarte kweekpot. In een kamerbeeld wil je die niet, je wilt een plantenbak die bij het interieur past. Vragen om een andere pot werkt niet: het model neemt het aangeleverde onderwerp letterlijk over en tekende er dus een tweede bak omheen.

Dat is geen fout van het model, dat is wat een edit-model hoort te doen. Het onderwerp behouden is de hele reden dat ik dit model gebruik, want de plant moet het artikel uit de winkel blijven. De consequentie is dat alles wat je in het beeld laat staan, in het beeld blijft. Wie iets weg wil hebben, moet het weghalen voordat het model kijkt.

De kweekpot herkennen zonder de stam te raken

Op breedte zoeken werkt hier niet. Een philodendron heeft zoveel stelen dat de bundel bijna net zo breed is als de pot, dus een terugval in breedte wijst de rand niet aan. Op kleur werkt wel: een kweekpot is donker en vrijwel kleurloos, blad is dat nooit. Ik loop van de onderrand omhoog zolang een rij grotendeels uit donkergrijze pixels bestaat, met een paar rijen speling voor blad dat ervoor hangt.

Belangrijker dan de vondst is de weigering. Ligt het gevonden punt niet in het onderste vijfde deel, dan doe ik niets en laat ik de foto zoals hij is. Bij vier van de twaalf foto’s is dat zo, bijvoorbeeld bij een donkere sierpot of een plant met bijna zwart blad tot onderaan. Daar liever een kweekpot in beeld dan een afgesneden stam, want die eerste kun je zien en de tweede valt pas op als het beeld al ergens staat.

Een vorm stuurt sterker dan een zin

Met de pot eraf hield de stam halverwege het beeld op. De opdracht vroeg om een grote matte plantenbak op de vloer. Dat lukte twee van de vier keer. Bij de lichte varianten, betongrijs en kleibeige, liet het model de bak weg en liep de stam zo de vloer in. Die kleuren lijken op de vloer, dus er is voor het model weinig reden om daar een object te zien.

De zin naar voren halen in de opdracht hielp een ronde, en de ronde daarna weer niet. Een variant die maar de helft van de keren werkt is geen oplossing, alleen een gunstige steekproef. Toen heb ik de plantenbak als vorm op het doek gezet: een egaal grijze cilinder waar de stelen ophouden, uitgelijnd op de stam en niet op het midden van het blad, want bij een boom hangt de kruin naar een kant. Dat bracht het op vier van de vier. De tekst bepaalt sindsdien alleen nog materiaal en kleur, en de vier varianten die ik naast elkaar zette verschilden ook echt alleen daarin.

Lichte slaapkamer met wit beddengoed en een linnen hoofdbord. Naast het bed staat een kunstmatige rozenboom van 140 cm met roze bloemen in een witte geribbelde plantenbak, met daglicht door een vitrage erachter.

Twee valkuilen in ComfyUI zelf

De eerste kost je een halve dag als je hem niet kent: ComfyUI keert het alfakanaal van een masker om. Een leeg, doorzichtig masker gedraagt zich daardoor als een vol masker, en dan wordt het origineel over de hele uitkomst geplakt. Het beeld ziet eruit alsof het model niets gedaan heeft, terwijl het zijn werk gewoon deed en daarna werd overschreven. De oplossing is een masker als gewoon zwart RGB-beeld aanleveren en het rode kanaal uitlezen.

De tweede is de cache. ComfyUI herkent een geupload bestand aan zijn naam. Stuur je een nieuwe foto onder een naam die er al stond, dan kan een eerdere versie gebruikt worden, en dan reken je met het ene beeld en het andere masker. In de batch geef ik elke upload nu een willekeurig voorvoegsel. In het venster is het dezelfde valkuil in een ander jasje: het doek voor kamer X heette net zo als de oude sfeerfoto voor kamer X, dus wie het werkblad opende kreeg stilletjes het beeld van de route die ik had laten vallen. Sinds het doek- voor de naam staat, is dat weg.

Wat het kost per beeld

Twintig stappen duren ongeveer negentig seconden per beeld op die A40, dus twaalf kamers is een kwartiertje rekenen. De machine kost ongeveer een halve dollar per uur en stilstaan kost niets, dus de rekening gaat vrijwel helemaal over de tijd dat hij aan staat. Uitzetten na gebruik scheelt meer dan welke optimalisatie in de werkstroom ook.

De modellen samen zijn 31 GB. Op een machine zonder netwerkvolume haal je die na elke herstart opnieuw op, ongeveer vijf minuten. Dat is de afweging: een volume kost per maand, opnieuw ophalen kost vijf minuten per sessie.

Er is ook een snelle stand, vier stappen met een Lightning-LoRA erbij. Die is bruikbaar om te kijken of de compositie klopt, en niet voor het eindbeeld: de plantenbak en de schaduw worden er zichtbaar grover van.

De grens: dit is geen productfoto

De plant op deze beelden is de echte plant uit de winkel, dezelfde soort met hetzelfde blad en dezelfde verhoudingen. De kamer en de plantenbak zijn gemaakt. Dat onderscheid is niet cosmetisch, het bepaalt waar je het beeld mag gebruiken.

Voor de Google-productfeed gelden eigen regels voor de hoofdafbeelding, en een gegenereerd beeld dat het product niet exact toont wordt afgekeurd. Deze route laat het product met rust, wat helpt, maar het maakt de vraag niet minder scherp. Bouw je een kamer om een artikel heen, dan moet dat artikel daarin nog steeds kloppen met wat er in de doos zit.

Bij een van mijn twaalf kamers bleek de productfoto in de shop een andere plant te tonen dan de productnaam. Het kamerbeeld klopte netjes met de foto en niet met de naam. Dat is een datafout die er al zat en die zichtbaar werd doordat ik er een kamer omheen zette. Zulke beelden vergroten je bestaande productdata uit, in beide richtingen.

Wat ik ermee zou doen

De drie ingrepen die het verschil maakten zitten alle drie in het beeld dat je aanlevert: de verhouding op het doek, de kweekpot eraf, en de plantenbak als vorm in plaats van als zin. Aan de opdracht draaien voelt sneller, want je ziet meteen een nieuw beeld. Het meet alleen minder, omdat je per ronde vijf dingen tegelijk verandert zonder te weten welke ervan iets deed.

Praktisch: houd de opdrachttekst op een plek in je code, zodat het werkblad in de browser en de batch letterlijk dezelfde tekst gebruiken. Anders vergelijk je in het venster iets anders dan wat je serie oplevert, en dat merk je pas als de serie af is. En zet de dingen die altijd hetzelfde moeten, zoals de verhouding en de plaats van de plantenbak, in het beeld en niet in de zin.

Hoe ik dit soort werk verder opzet en meet staat in beslissen op bewijs.

Jermaya Leijen

Over de auteur

Jermaya Leijen

Hoi, ik ben Jermaya. Sinds 2013 zit ik in Google Ads en de laatste jaren bouw ik AI-agents die het repeterende werk overnemen. Hier schrijf ik op wat ik in de praktijk tegenkom: wat werkt, wat niet, en hoe ik het zelf zou aanpakken. Een vraag of gewoon even sparren? Ik lees alles. Bekijk mijn werk of stuur me een bericht.