De mode-industrie is een zeer lucratieve handel, met een geschatte waarde van $ 2.1 biljoen in 2025, zoals gerapporteerd door de Wereldbank. Dit veld omvat een breed scala aan segmenten, zoals de creatie, productie, distributie en verkoop van kleding, schoenen en accessoires. De branche is voortdurend in verandering en er verschijnen regelmatig nieuwe stijlen en trends. Daarom moeten modebedrijven flexibel zijn en zich kunnen aanpassen om hun relevantie te behouden en succesvol te zijn in de markt.
Generatieve kunstmatige intelligentie (AI) verwijst naar AI-algoritmen die zijn ontworpen om nieuwe inhoud te genereren, zoals afbeeldingen, tekst, audio of video, op basis van een reeks aangeleerde patronen en gegevens. Het kan worden gebruikt om nieuwe en innovatieve kledingontwerpen te genereren en tegelijkertijd verbeterde personalisatie en kosteneffectiviteit te bieden. AI-gestuurde ontwerptools kunnen unieke kledingontwerpen creëren op basis van invoerparameters of stijlen die door potentiële klanten zijn gespecificeerd via tekstprompts. Bovendien kan AI worden gebruikt om ontwerpen te personaliseren naar de voorkeuren van de klant. Een klant kan bijvoorbeeld kiezen uit een verscheidenheid aan kleuren, patronen en stijlen, en AI-modellen genereren op basis van die selecties een uniek ontwerp. De acceptatie van AI in de mode-industrie wordt momenteel belemmerd door verschillende technische, haalbaarheids- en kostenuitdagingen. Deze obstakels kunnen nu echter worden verkleind door gebruik te maken van geavanceerde generatieve AI-methoden, zoals op natuurlijke taal gebaseerde beeldsemantische segmentatie en diffusie voor virtuele styling.
Deze blogpost beschrijft de implementatie van generatieve AI-ondersteunde mode online styling met behulp van tekstprompts. Machine learning (ML)-engineers kunnen tekst-naar-semantische segmentatie en in-painting-modellen verfijnen en implementeren op basis van vooraf getrainde CLIPSeq en Stable Diffusion met Amazon Sage Maker. Hierdoor kunnen modeontwerpers en consumenten virtuele modelleerafbeeldingen maken op basis van tekstprompts en hun favoriete stijlen kiezen.
Generatieve AI-oplossingen
De CLIPSeg model heeft een nieuwe semantische segmentatiemethode voor afbeeldingen geïntroduceerd waarmee u gemakkelijk modeartikelen in afbeeldingen kunt identificeren met behulp van eenvoudige tekstopdrachten. Het maakt gebruik van een tekstprompt of een afbeeldingsencoder om tekstuele en visuele informatie te coderen in een multimodale inbeddingsruimte, waardoor zeer nauwkeurige segmentatie van doelobjecten op basis van de prompt mogelijk is. Het model is getraind op een enorme hoeveelheid data met technieken zoals zero-shot transfer, supervisie in natuurlijke taal en multimodaal zelfgecontroleerd contrastief leren. Dit betekent dat u een vooraf getraind model kunt gebruiken dat openbaar beschikbaar is door Timo Luddecke et al zonder de noodzaak van maatwerk.
CLIPSeg is een model dat een tekst- en afbeeldingsencoder gebruikt om tekstuele en visuele informatie te coderen in een multimodale inbeddingsruimte om semantische segmentatie uit te voeren op basis van een tekstprompt. De architectuur van CLIPSeg bestaat uit twee hoofdcomponenten: een tekst-encoder en een beeld-encoder. De tekst-encoder neemt de tekstprompt op en converteert deze naar een tekstinsluiting, terwijl de beeld-encoder de afbeelding opneemt en omzet in een afbeelding-insluiting. Beide inbeddingen worden vervolgens aaneengeschakeld en door een volledig verbonden laag geleid om het uiteindelijke segmentatiemasker te produceren.
In termen van datastroom wordt het model getraind op een dataset van afbeeldingen en bijbehorende tekstprompts, waarbij de tekstprompts het te segmenteren doelobject beschrijven. Tijdens het trainingsproces worden de tekst-encoder en de afbeelding-encoder geoptimaliseerd om de toewijzing tussen de tekstprompts en de afbeelding te leren om het uiteindelijke segmentatiemasker te produceren. Zodra het model is getraind, kan het een nieuwe tekstprompt en afbeelding opnemen en een segmentatiemasker produceren voor het object dat in de prompt wordt beschreven.
Stable Diffusion is een techniek waarmee modeontwerpers zeer realistische beelden in grote hoeveelheden kunnen genereren, puur op basis van tekstbeschrijvingen, zonder dat langdurig en duur maatwerk nodig is. Dit is gunstig voor ontwerpers die snel modieuze stijlen willen creëren, en fabrikanten die gepersonaliseerde producten tegen lagere kosten willen produceren.
Het volgende diagram illustreert de architectuur en gegevensstroom van Stable Diffusion.
Vergeleken met traditionele op GAN gebaseerde methoden, is Stable Diffusion een generatieve AI die in staat is om stabielere en fotorealistische afbeeldingen te produceren die overeenkomen met de distributie van de originele afbeelding. Het model kan worden geconditioneerd voor een breed scala aan doeleinden, zoals tekst voor het genereren van tekst naar afbeelding, begrenzingsvakken voor het genereren van lay-out naar afbeelding, gemaskerde afbeeldingen voor in-painting en afbeeldingen met een lagere resolutie voor superresolutie. Verspreidingsmodellen hebben een breed scala aan zakelijke toepassingen en hun praktische toepassingen blijven evolueren. Deze modellen zullen enorm profiteren van verschillende sectoren, zoals mode, detailhandel en e-commerce, entertainment, sociale media, marketing en meer.
Genereer maskers van tekstprompts met behulp van CLIPSeg
Vogue online styling is een service waarmee klanten modeadvies en aanbevelingen van AI kunnen ontvangen via een online platform. Het doet dit door kleding en accessoires te selecteren die passen bij het uiterlijk van de klant, passen binnen hun budget en passen bij hun persoonlijke voorkeuren. Met het gebruik van generatieve AI kunnen taken gemakkelijker worden uitgevoerd, wat leidt tot meer klanttevredenheid en lagere kosten.
De oplossing kan worden ingezet op een Amazon Elastic Compute Cloud (EC2) p3.2xlarge-instantie, die één enkele V100 GPU met 16G-geheugen heeft. Er werden verschillende technieken gebruikt om de prestaties te verbeteren en het GPU-geheugengebruik te verminderen, wat resulteerde in een snellere beeldgeneratie. Deze omvatten het gebruik van fp16 en het inschakelen van geheugenefficiënte aandacht om de bandbreedte in het aandachtsblok te verminderen.
We begonnen door de gebruiker een modebeeld te laten uploaden, gevolgd door het downloaden en extraheren van het vooraf getrainde model uit CLIPSeq. De afbeelding wordt vervolgens genormaliseerd en verkleind om te voldoen aan de maximale grootte. Stable Diffusion V2 ondersteunt een beeldresolutie tot 768×768, terwijl V1 tot 512×512 ondersteunt. Zie de volgende code:
from models.clipseg import CLIPDensePredT # The original image
image = download_image(img_url).resize((768, 768)) # Download pre-trained CLIPSeq model and unzip the pkg
! wget https://owncloud.gwdg.de/index.php/s/ioHbRzFx6th32hn/download -O weights.zip
! unzip -d weights -j weights.zip # Load CLIP model. Available models = ['RN50', 'RN101', 'RN50x4', # 'RN50x16', 'RN50x64', 'ViT-B/32', 'ViT-B/16', 'ViT-L/14', 'ViT-L/14@336px']
model = CLIPDensePredT(version='ViT-B/16', reduce_dim=64)
model.eval() # non-strict, because we only stored decoder weights (not CLIP weights)
model.load_state_dict(torch.load('weights/rd64-uni.pth', map_location=torch.device('cuda')), strict=False) # Image normalization and resizing
transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), transforms.Resize((768, 768)),
])
img = transform(image).unsqueeze(0)
Met het gebruik van het vooraf getrainde CLIPSeq-model kunnen we het doelobject uit een afbeelding extraheren met behulp van een tekstprompt. Dit wordt gedaan door de tekstprompt in te voeren in de tekstencoder, die deze converteert naar een tekstinbedding. De afbeelding wordt vervolgens ingevoerd in de afbeeldingsencoder, die deze omzet in een afbeeldingsinbedding. Beide inbeddingen worden vervolgens aaneengeschakeld en door een volledig verbonden laag geleid om het uiteindelijke segmentatiemasker te produceren, dat het doelobject benadrukt dat wordt beschreven in de tekstprompt. Zie de volgende code:
# Text prompt
prompt = 'Get the dress only.' # predict
mask_image_filename = 'the_mask_image.png'
with torch.no_grad(): preds = model(img.repeat(4,1,1,1), prompt)[0] # save the mask image after computing the area under the standard # Gaussian probability density function and calculates the cumulative # distribution function of the normal distribution with ndtr. plt.imsave(mask_image_filename,torch.special.ndtr(preds[0][0]))
Met het nauwkeurige maskerbeeld van semantische segmentatie kunnen we in-painting gebruiken voor inhoudsvervanging. In-painting is het proces waarbij een getraind generatief model wordt gebruikt om ontbrekende delen van een afbeelding in te vullen. Door de maskerafbeelding te gebruiken om het doelobject te identificeren, kunnen we de in-painting-techniek toepassen om het doelobject te vervangen door iets anders, zoals een ander kledingstuk of accessoire. Hiervoor kan het Stable Diffusion V2-model worden gebruikt, omdat het in staat is fotorealistische afbeeldingen met een hoge resolutie te produceren die overeenkomen met de distributie van het originele beeld.
Verfijning van vooraf getrainde modellen met behulp van DreamBooth
Fine-tuning is een proces in deep learning waarbij een vooraf getraind model verder wordt getraind op een nieuwe taak met behulp van een kleine hoeveelheid gelabelde gegevens. In plaats van helemaal opnieuw te trainen, is het de bedoeling om een netwerk dat al is getraind op een grote dataset voor een vergelijkbare taak, verder te trainen op een nieuwe dataset om het meer gespecialiseerd te maken voor die specifieke taak.
Modeontwerpers kunnen ook een onderwerpgestuurd, nauwkeurig afgesteld Stable Diffusion in-painting-model gebruiken om een specifieke stijlklasse te genereren, zoals casual lange rokken voor dames. Om dit te doen, is de eerste stap het verstrekken van een set voorbeeldafbeeldingen in het doeldomein, ruwweg ongeveer 1 dozijn, met de juiste tekstlabels zoals de volgende en deze te binden aan een unieke identificatie die verwijst naar het ontwerp, de stijl, de kleur en de stof . Het label op de tekst speelt een cruciale rol bij het bepalen van de resultaten van het verfijnde model. Er zijn verschillende manieren om fijnafstemming te verbeteren door effectief te zijn snelle techniek en hier zijn een paar voorbeelden.
Sample text prompts to descibe some of the most common design elements of casual long skirts for ladies: Design Style: A-line, wrap, maxi, mini, and pleated skirts are some of the most popular styles for casual wear. A-line skirts are fitted at the waist and flare out at the hem, creating a flattering silhouette. Wrap skirts have a wrap closure and can be tied at the waist for a customizable fit. Maxi skirts are long and flowy, while mini skirts are short and flirty. Pleated skirts have folds that add texture and movement to the garment.
Pattern: Casual skirts can feature a variety of patterns, including stripes, florals, polka dots, and solids. These patterns can range from bold and graphic to subtle and understated.
Colors: Casual skirts come in a range of colors, including neutral shades likeblack, white, and gray, as well as brighter hues like pink, red, and blue. Some skirts may also feature multiple colors in a single garment, such asa skirt with a bold pattern that incorporates several shades.
Fabrics: Common fabrics used in casual skirts include cotton, denim, linen, and rayon. These materials offer different levels of comfort and durability, making it easy to find a skirt that suits your personal style and needs.
Het gebruik van een kleine set afbeeldingen om stabiele diffusie nauwkeurig af te stellen, kan leiden tot overfitting van het model. DreamBooth[5] pakt dit aan door gebruik te maken van een klassespecifiek verlies door voorafgaande conservering. Het leert in twee stappen een unieke identifier aan dat specifieke onderwerp te binden. Eerst wordt het model met lage resolutie verfijnd met de invoerafbeeldingen in combinatie met een tekstprompt die een unieke identificatie bevat en de naam van de klasse waartoe het onderwerp behoort, zoals "rok". In de praktijk betekent dit dat de afbeeldingen van het model passen en de afbeeldingen tegelijkertijd worden gesampled uit de visuele prior van de niet-afgestemde klasse. Deze eerder bewaarde afbeeldingen worden gesampled en gelabeld met behulp van de prompt "klasse zelfstandig naamwoord". Ten tweede zal het de componenten met superhoge resolutie verfijnen door afbeeldingen met een lage en hoge resolutie te koppelen aan de set invoerafbeeldingen, waardoor de uitvoer van het nauwkeurig afgestelde model trouw blijft aan kleine details.
Voor het nauwkeurig afstemmen van een vooraf getrainde in-painting-tekstencoder met de UNet voor afbeeldingen met een resolutie van 512 × 512 is ongeveer 22 GB VRAM of hoger nodig voor een resolutie van 768 × 768. Idealiter zou de fijnafstelling van samples moeten worden aangepast aan de gewenste uitvoerbeeldresolutie om prestatieverlies te voorkomen. De tekstencoder produceert nauwkeurigere details, zoals modelvlakken. Een optie is om te draaien op een enkele AWS EC2 g5.2xlarge-instantie, nu beschikbaar in acht regio's of gebruik Hugging Face Accelerate om de nauwkeurig afgestelde code uit te voeren in een gedistribueerde configuratie. Voor extra geheugenbesparing kunt u een gesegmenteerde versie van attention kiezen die de berekening in stappen uitvoert in plaats van alles tegelijk door simpelweg DreamBooth's trainingsscript train_dreambooth_inpaint.py aan te passen om de pijplijn enable_attention_slicing()-functie toe te voegen.
Accelerate is een bibliotheek waarmee één fijnafstemmingscode kan worden uitgevoerd op elke gedistribueerde configuratie. Hugging Face en Amazon geïntroduceerd Hugging Face Deep Learning Containers (DLC's) om fijnafstemmingstaken te schalen over meerdere GPU's en knooppunten. U kunt de startconfiguratie voor Amazon SageMaker configureren met een enkele CLI-opdracht.
# From your aws account, install the sagemaker sdk for Accelerate
pip install "accelerate[sagemaker]" --upgrade # Configure the launch configuration for Amazon SageMaker accelerate config # List and verify Accelerate configuration
accelerate env # Make necessary modification of the training script as the following to save # output on S3, if needed
# - torch.save('/opt/ml/model`)
# + accelerator.save('/opt/ml/model')
Om een fijnafstellingstaak te starten, verifieert u de configuratie van Accelerate met behulp van CLI en geef de nodige trainingsargumenten, gebruik dan het volgende shellscript.
# Instance images — Custom images that represents the specific # concept for dreambooth training. You should collect # high #quality images based on your use cases.
# Class images — Regularization images for prior-preservation # loss to prevent overfitting. You should generate these # images directly from the base pre-trained model. # You can choose to generate them on your own or generate # them on the fly when running the training script.
# # You can access train_dreambooth_inpaint.py from huggingface/diffuser export MODEL_NAME="stabilityai/stable-diffusion-2-inpainting"
export INSTANCE_DIR="/data/fashion/gowns/highres/"
export CLASS_DIR="/opt/data/fashion/generated_gowns/imgs"
export OUTPUT_DIR="/opt/model/diffuser/outputs/inpainting/" accelerate launch train_dreambooth_inpaint.py --pretrained_model_name_or_path=$MODEL_NAME --train_text_encoder --instance_data_dir=$INSTANCE_DIR --class_data_dir=$CLASS_DIR --output_dir=$OUTPUT_DIR --with_prior_preservation --prior_loss_weight=1.0 --instance_prompt="A supermodel poses in long summer travel skirt, photorealistic" --class_prompt="A supermodel poses in skirt, photorealistic" --resolution=512 --train_batch_size=1 --use_8bit_adam --gradient_checkpointing --learning_rate=2e-6 --lr_scheduler="constant" --lr_warmup_steps=0 --num_class_images=200 --max_train_steps=800
Het verfijnde in-painting-model maakt het mogelijk om meer specifieke afbeeldingen te genereren voor de modeklasse die wordt beschreven door de tekstprompt. Omdat het is verfijnd met een reeks afbeeldingen met een hoge resolutie en tekstprompts, kan het model afbeeldingen genereren die beter zijn afgestemd op de klas, zoals formele avondjurken. Het is belangrijk op te merken dat hoe specifieker de klasse is en hoe meer gegevens er worden gebruikt voor fijnafstemming, hoe nauwkeuriger en realistischer de uitvoerafbeeldingen zullen zijn.
%tree -d ./finetuned-stable-diffusion-v2-1-inpainting
finetuned-stable-diffusion-v2-1-inpainting
├── 512-inpainting-ema.ckpt
├── feature_extractor
├── code
│ └──inference.py
│ ├──requirements.txt
├── scheduler
├── text_encoder ├── tokenizer
├── unet
└── vae
Implementeer een verfijnd in-painting-model met SageMaker voor gevolgtrekkingen
Met Amazon SageMaker kunt u de verfijnde Stable Diffusion-modellen inzetten voor real-time gevolgtrekkingen. Om het model naar te uploaden Amazon Simple Storage-service (S3) voor implementatie moet een archief-tarball model.tar.gz worden gemaakt. Zorg ervoor dat het archief direct alle bestanden bevat, niet een map die ze bevat. De DreamBooth-archiefmap voor fijnafstemming zou er als volgt uit moeten zien na het verwijderen van de intermitterende controlepunten:
De eerste stap bij het maken van onze inference-handler omvat het maken van het inference.py-bestand. Dit bestand dient als de centrale hub voor het laden van het model en het afhandelen van alle inkomende deductieverzoeken. Nadat het model is geladen, wordt de functie model_fn() uitgevoerd. Wanneer de noodzaak zich voordoet om gevolgtrekkingen uit te voeren, wordt de functie predict_fn() aangeroepen. Bovendien wordt de functie decode_base64() gebruikt om een JSON-tekenreeks in de payload om te zetten in een PIL-beeldgegevenstype.
%%writefile code/inference.py
import base64
import torch
from PIL import Image
from io import BytesIO
from diffusers import EulerDiscreteScheduler, StableDiffusionInpaintPipeline def decode_base64(base64_string): decoded_string = BytesIO(base64.b64decode(base64_string)) img = Image.open(decoded_string) return img def model_fn(model_dir): # Load stable diffusion and move it to the GPU scheduler = EulerDiscreteScheduler.from_pretrained(model_dir, subfolder="scheduler") pipe = StableDiffusionInpaintPipeline.from_pretrained(model_dir, scheduler=scheduler, revision="fp16", torch_dtype=torch.float16) pipe = pipe.to("cuda") pipe.enable_xformers_memory_efficient_attention() #pipe.enable_attention_slicing() return pipe def predict_fn(data, pipe): # get prompt & parameters prompt = data.pop("inputs", data) # Require json string input. Inference to convert imge to string. input_img = data.pop("input_img", data) mask_img = data.pop("mask_img", data) # set valid HP for stable diffusion num_inference_steps = data.pop("num_inference_steps", 25) guidance_scale = data.pop("guidance_scale", 6.5) num_images_per_prompt = data.pop("num_images_per_prompt", 2) image_length = data.pop("image_length", 512) # run generation with parameters generated_images = pipe( prompt, image = decode_base64(input_img), mask_image = decode_base64(mask_img), num_inference_steps=num_inference_steps, guidance_scale=guidance_scale, num_images_per_prompt=num_images_per_prompt, height=image_length, width=image_length, #)["images"] # for Stabel Diffusion v1.x ).images # create response encoded_images = [] for image in generated_images: buffered = BytesIO() image.save(buffered, format="JPEG") encoded_images.append(base64.b64encode(buffered.getvalue()).decode()) return {"generated_images": encoded_images}
Om het model naar een Amazon S3-bucket te uploaden, moet u eerst een model.tar.gz-archief maken. Het is cruciaal op te merken dat het archief rechtstreeks uit de bestanden moet bestaan en niet uit een map die ze bevat. Het bestand zou er bijvoorbeeld als volgt uit moeten zien:
import tarfile
import os # helper to create the model.tar.gz
def compress(tar_dir=None,output_file="model.tar.gz"): parent_dir=os.getcwd() os.chdir(tar_dir) with tarfile.open(os.path.join(parent_dir, output_file), "w:gz") as tar: for item in os.listdir('.'): print(item) tar.add(item, arcname=item) os.chdir(parent_dir) compress(str(model_tar)) # After we created the model.tar.gz archive we can upload it to Amazon S3. We will # use the sagemaker SDK to upload the model to our sagemaker session bucket.
from sagemaker.s3 import S3Uploader # upload model.tar.gz to s3
s3_model_uri=S3Uploader.upload(local_path="model.tar.gz", desired_s3_uri=f"s3://{sess.default_bucket()}/finetuned-stable-diffusion-v2-1-inpainting")
Nadat het modelarchief is geüpload, kunnen we het op Amazon SageMaker implementeren met behulp van HuggingfaceModel voor realtime gevolgtrekking. U kunt het eindpunt hosten met behulp van een g4dn.xlarge-instantie, die is uitgerust met een enkele NVIDIA Tesla T4 GPU met 16 GB VRAM. Autoscaling kan worden geactiveerd om aan wisselende verkeersbehoeften te voldoen. Zie voor informatie over het opnemen van automatisch schalen in uw eindpunt Lopende productie: automatisch schalende Hugging Face Transformers met Amazon SageMaker.
from sagemaker.huggingface.model import HuggingFaceModel # create Hugging Face Model Class
huggingface_model = HuggingFaceModel( model_data=s3_model_uri, # path to your model and script role=role, # iam role with permissions to create an Endpoint transformers_version="4.17", # transformers version used pytorch_version="1.10", # pytorch version used py_version='py38', # python version used
) # deploy the endpoint endpoint
predictor = huggingface_model.deploy( initial_instance_count=1, instance_type="ml.g4dn.xlarge" )
De methode huggingface_model.deploy() retourneert een object HuggingFacePredictor dat kan worden gebruikt om gevolgtrekkingen aan te vragen. Het eindpunt vereist een JSON met een invoersleutel, die de invoerprompt voor het model vertegenwoordigt om een afbeelding te genereren. U kunt het genereren ook regelen met parameters zoals num_inference_steps, guidance_scale en "num_images_per_prompt". De functie predictor.predict() retourneert een JSON met een "generated_images"-sleutel, die de vier gegenereerde afbeeldingen bevat als base64-gecodeerde tekenreeksen. We hebben twee hulpfuncties toegevoegd, decode_base64_to_image en display_images, om respectievelijk het antwoord te decoderen en de afbeeldingen weer te geven. De eerste decodeert de base64-gecodeerde tekenreeks en retourneert een PIL.Image-object, en de laatste geeft een lijst met PIL.Image-objecten weer. Zie de volgende code:
import PIL
from io import BytesIO
from IPython.display import display
import base64
import matplotlib.pyplot as plt
import json # Encoder to convert an image to json string
def encode_base64(file_name): with open(file_name, "rb") as image: image_string = base64.b64encode(bytearray(image.read())).decode() return image_string # Decode to to convert a json str to an image def decode_base64_image(base64_string): decoded_string = BytesIO(base64.b64decode(base64_string)) img = PIL.Image.open(decoded_string) return img # display PIL images as grid
def display_images(images=None,columns=3, width=100, height=100): plt.figure(figsize=(width, height)) for i, image in enumerate(images): plt.subplot(int(len(images) / columns + 1), columns, i + 1) plt.axis('off') plt.imshow(image) # Display images in a row/col grid
def image_grid(imgs, rows, cols): assert len(imgs) == rows*cols w, h = imgs[0].size grid = PIL.Image.new('RGB', size=(cols*w, rows*h)) grid_w, grid_h = grid.size for i, img in enumerate(imgs): grid.paste(img, box=(i%cols*w, i//cols*h)) return grid
Laten we verder gaan met de in-painting-taak. Geschat wordt dat het ongeveer 15 seconden duurt om drie afbeeldingen te produceren, gezien de invoerafbeelding en het masker dat is gemaakt met behulp van CLIPSeg met de eerder besproken tekstprompt. Zie de volgende code:
num_images_per_prompt = 3
prompt = "A female super-model poses in a casual long vacation skirt, with full body length, bright colors, photorealistic, high quality, highly detailed, elegant, sharp focus" # Convert image to string
input_image_filename = "./imgs/skirt-model-2.jpg"
encoded_input_image = encode_base64(input_image_filename)
encoded_mask_image = encode_base64("./imgs/skirt-model-2-mask.jpg") # Set in-painint parameters
guidance_scale = 6.7
num_inference_steps = 45 # run prediction
response = predictor.predict(data={ "inputs": prompt, "input_img": encoded_input_image, "mask_img": encoded_mask_image, "num_images_per_prompt" : num_images_per_prompt, "image_length": 768 }
) # decode images
decoded_images = [decode_base64_image(image) for image in response["generated_images"]] # visualize generation
display_images(decoded_images, columns=num_images_per_prompt, width=100, height=100) # insert initial image in the list so we can compare side by side
image = PIL.Image.open(input_image_filename).convert("RGB")
decoded_images.insert(0, image) # Display inpainting images in grid
image_grid(decoded_images, 1, num_images_per_prompt + 1)
De ingeschilderde afbeeldingen kunnen samen met de originele afbeelding worden weergegeven voor visuele vergelijking. Bovendien kan het in-painting-proces worden beperkt met behulp van verschillende parameters, zoals guidance_scale, die de sterkte van het begeleidingsbeeld tijdens het in-painting-proces regelt. Hierdoor kan de gebruiker het uitvoerbeeld aanpassen en de gewenste resultaten bereiken.
Amazon SageMaker-jumpstart biedt Stable Diffusion-sjablonen voor verschillende modellen, waaronder tekst-naar-afbeelding en opschaling. Voor meer informatie verwijzen wij u naar SageMaker JumpStart biedt nu Stable Diffusion- en Bloom-modellen. In de nabije toekomst zullen er meer Jumpstart-sjablonen beschikbaar zijn.
Beperkingen
Hoewel CLIPSeg meestal goed presteert bij het herkennen van gewone objecten, heeft het moeite met meer abstracte of systematische taken, zoals het tellen van het aantal objecten in een afbeelding, en met complexere taken, zoals voorspellen hoe dichtbij het dichtstbijzijnde object, zoals een handtas, op een foto is. Zero-shot CLIPSeq worstelt ook in vergelijking met taakspecifieke modellen met zeer fijnmazige classificatie, zoals het verschil tussen twee vage ontwerpen, varianten van kleding of stijlclassificatie. CLIPSeq heeft ook nog steeds een slechte generalisatie naar afbeeldingen die niet in de pre-training dataset voorkomen. Ten slotte is waargenomen dat CLIP's zero-shot classifiers gevoelig kunnen zijn voor bewoordingen of fraseringen en soms "prompt engineering" met vallen en opstaan vereisen om goed te presteren. Overschakelen naar een ander semantisch segmentatiemodel voor de backbone van CLIPSeq, zoals BEiT, met een 62.8% mIOU op de ADE20K-dataset, zou de resultaten mogelijk kunnen verbeteren.
Modeontwerpen die zijn gegenereerd met behulp van Stable Diffusion blijken beperkt te zijn tot delen van kleding die op zijn minst even voorspelbaar zijn geplaatst in de bredere context van de modemodellen, en die voldoen aan inbedding van hoog niveau die je redelijkerwijs zou kunnen verwachten in een hyperscale dataset die wordt gebruikt tijdens het trainen van het vooraf getrainde model. De echte limiet van generatieve AI is dat het model uiteindelijk volledig denkbeeldige en minder authentieke output zal produceren. Daarom zijn de door AI gegenereerde modeontwerpen misschien niet zo gevarieerd of uniek als die van menselijke ontwerpers.
Conclusie
Generatieve AI biedt de modesector de mogelijkheid om hun praktijken te transformeren door middel van betere gebruikerservaringen en kostenefficiënte bedrijfsstrategieën. In dit bericht laten we zien hoe we generatieve AI kunnen gebruiken om modeontwerpers en consumenten in staat te stellen gepersonaliseerde modestijlen te creëren met behulp van virtuele modellering. Met de hulp van bestaande Amazon SageMaker Jumpstart-sjablonen en toekomstige sjablonen, kunnen gebruikers deze geavanceerde technieken snel omarmen zonder diepgaande technische expertise, terwijl de veelzijdigheid behouden blijft en de kosten worden verlaagd.
Deze innovatieve technologie biedt nieuwe kansen voor bedrijven en professionals die betrokken zijn bij het genereren van content, in verschillende sectoren. Generatieve AI biedt voldoende mogelijkheden voor het verbeteren en creëren van inhoud. Probeer de recente toevoegingen aan de Jumpstart-sjablonen in uw SageMaker Studio, zoals het verfijnen van tekst-naar-beeld- en opschalingsmogelijkheden.
We willen Li Zhang, Karl Albertsen, Kristine Pearce, Nikhil Velpanur, Aaron Sengstacken, James Wu en Neelam Koshiya bedanken voor hun steun en waardevolle input die hebben bijgedragen aan de verbetering van dit werk.
Over de auteurs
Alfred Schen is een Senior AI/ML-specialist bij AWS. Hij heeft gewerkt in Silicon Valley, waar hij technische en leidinggevende functies bekleedde in diverse sectoren, waaronder de gezondheidszorg, financiën en hightech. Hij is een toegewijde toegepaste AI/ML-onderzoeker, die zich concentreert op CV, NLP en multimodaliteit. Zijn werk is tentoongesteld in publicaties zoals EMNLP, ICLR en Public Health.
Dr Vivek Madan is een Applied Scientist bij het Amazon SageMaker JumpStart-team. Hij promoveerde aan de Universiteit van Illinois in Urbana-Champaign en was postdoctoraal onderzoeker bij Georgia Tech. Hij is een actief onderzoeker op het gebied van machine learning en algoritmeontwerp en heeft artikelen gepubliceerd op EMNLP-, ICLR-, COLT-, FOCS- en SODA-conferenties
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/virtual-fashion-styling-with-generative-ai-using-amazon-sagemaker/
- 1
- 10
- 100
- 7
- a
- Aaron
- in staat
- Over
- SAMENVATTING
- versnellen
- versneller
- toegang
- accessoires.
- volbracht
- Account
- accuraat
- Bereiken
- over
- actieve
- aanpassen
- toegevoegd
- Extra
- Daarnaast
- toevoegingen
- adressen
- Adoptie
- vergevorderd
- advies
- Na
- AI
- AI / ML
- algoritme
- algoritmen
- Alles
- Het toestaan
- toestaat
- al
- Amazone
- Amazon Sage Maker
- Amazon SageMaker JumpStart
- bedragen
- en
- Kleding
- verschijnen
- toepassingen
- toegepast
- Solliciteer
- ongeveer
- architectuur
- Archief
- GEBIED
- argumenten
- kunstmatig
- kunstmatige intelligentie
- ASA
- Hulp
- aandacht
- audio
- Authentiek
- Beschikbaar
- AWS
- Ruggegraat
- bandbreedte
- Bank
- baseren
- gebaseerde
- omdat
- begon
- heilzaam
- voordeel
- Betere
- tussen
- binden
- verbindend
- Blok
- Blog
- Bloeien
- Blauw
- schept
- lichaam
- pin
- dozen
- Helder
- helderder
- begroting
- bedrijfsdeskundigen
- Business Applications
- berekent
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- mogelijkheden
- in staat
- gevallen
- business casual outfit
- centraal
- uitdagingen
- kansen
- verandering
- Kies
- klasse
- classificatie
- Sluiten
- sluiting
- Kleding
- Cloud
- code
- verzamelen
- kleur
- columns
- hoe
- comfort
- Gemeen
- Bedrijven
- vergelijken
- vergeleken
- vergelijking
- Aanvulling
- complex
- componenten
- berekening
- Berekenen
- computergebruik
- concept
- Configuratie
- gekoppeld blijven
- constante
- Consumenten
- containers
- bevat
- content
- Inhoud genereren
- verband
- voortzetten
- onder controle te houden
- controles
- converteren
- Overeenkomend
- Kosten
- kon
- bedekt
- en je merk te creëren
- aangemaakt
- Wij creëren
- het aanmaken
- kritisch
- cruciaal
- Op dit moment
- gewoonte
- klant
- Klanttevredenheid
- Klanten
- aanpasbare
- maatwerk
- gegevens
- verlagen
- toegewijd aan
- deep
- diepgaand leren
- eisen
- Denim
- implementeren
- ingezet
- inzet
- beschrijven
- beschreven
- Design
- ontworpen
- ontwerpers
- ontwerpen
- gewenste
- gedetailleerd
- gegevens
- bepalen
- verschil
- anders
- Verspreiding
- direct
- besproken
- Display
- displays
- verdeeld
- distributie
- diversen
- domein
- Download
- tientallen
- duurzaamheid
- gedurende
- e-commerce
- gemakkelijk
- effectief
- doeltreffend
- geeft je de mogelijkheid
- elimineren
- omarmen
- in staat stellen
- maakt
- waardoor
- omvat
- Endpoint
- Ingenieurs
- verbeteren
- verzekeren
- Onstpanning
- uitgerust
- fout
- geschat
- avond
- uiteindelijk
- ontwikkelen
- voorbeeld
- voorbeelden
- bestaand
- verwachten
- kosten
- duur
- Ervaringen
- expertise
- exporteren
- extract
- stof
- stoffen
- Gezicht
- gezichten
- Mode
- sneller
- Kenmerk
- vrouw
- weinig
- trouw
- veld-
- Dien in
- Bestanden
- vullen
- finale
- Tot slot
- financiën
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- einde
- Voornaam*
- geschikt
- gloed
- flexibel
- stroom
- Focus
- gevolgd
- volgend
- volgt
- formeel
- Voormalig
- Naar voren
- gevonden
- vaak
- oppompen van
- vol
- geheel
- functie
- functies
- verder
- Bovendien
- toekomst
- kleding
- voortbrengen
- gegenereerde
- generatie
- generatief
- generatieve AI
- krijgen
- gegeven
- GPU
- GPU's
- Grafisch
- grijs
- meer
- sterk
- Raster
- handvat
- Behandeling
- harnas
- met
- Gezondheid
- gezondheidszorg
- Hoogte
- geholpen
- hier
- Hoge
- high-level
- hoge-resolutie
- hoger
- highlights
- zeer
- bezit
- houdt
- gastheer
- Hoe
- How To
- Echter
- HTML
- HTTPS
- Naaf
- KnuffelenGezicht
- menselijk
- idee
- identificatie
- identificeren
- Illinois
- beeld
- afbeeldingen
- denkbeeldig
- uitvoering
- importeren
- belangrijk
- verbeteren
- verbeterd
- in
- diepgaande
- omvatten
- omvat
- Inclusief
- Inkomend
- opnemen
- meer
- industrieën
- -industrie
- informatie
- eerste
- innovatieve
- invoer
- installeren
- instantie
- verkrijgen in plaats daarvan
- Intelligentie
- geïntroduceerd
- betrokken zijn
- IT
- artikelen
- Jobomschrijving:
- json
- sleutel
- label
- labels
- taal
- Groot
- lancering
- lagen
- leidend
- LEARN
- geleerd
- leren
- Lengte
- niveaus
- Li
- Bibliotheek
- LIMIT
- Beperkt
- Lijst
- laden
- het laden
- lang
- uit
- Het verlagen van
- winstgevend
- machine
- machine learning
- Hoofd
- onderhouden
- Het handhaven
- maken
- maken
- leidinggevende
- Fabrikanten
- in kaart brengen
- Markt
- Marketing
- maskeren
- Maskers
- Match
- materieel
- matplotlib
- middel
- Media
- Geheugen
- methode
- methoden
- vermist
- ML
- model
- modellen
- meer
- meest
- beweging
- beweging
- meervoudig
- naam
- Naturel
- Nabij
- noodzakelijk
- Noodzaak
- nodig
- behoeften
- netwerk
- Neutraal
- New
- nlp
- knooppunten
- een
- roman
- aantal
- Nvidia
- object
- objecten
- obstakels
- bieden
- het aanbieden van
- Aanbod
- EEN
- Een uit duizenden
- online.
- kansen
- geoptimaliseerde
- Keuze
- bestellen
- origineel
- OS
- het te bezitten.
- gepaarde
- pairing
- papieren
- parameters
- bijzonder
- onderdelen
- voorbij
- pad
- Patronen
- patronen
- Uitvoeren
- prestatie
- presteert
- permissies
- persoonlijk
- Personalisatie
- Verpersoonlijken
- Gepersonaliseerde
- Fotorealistisch
- Foto's
- pijp
- pijpleiding
- platform
- Plato
- Plato gegevensintelligentie
- PlatoData
- dan
- arm
- Populair
- vormt
- posities
- Post
- potentieel
- mogelijk
- PRAKTISCH
- praktijk
- praktijken
- voorspellen
- het voorspellen van
- voorspelling
- predictor
- voorkeuren
- bij voorkeur
- cadeautjes
- voorkomen
- die eerder
- Voorafgaand
- produceren
- productie
- Producten
- professionals
- gepast
- zorgen voor
- biedt
- publiek
- volksgezondheid
- publicaties
- in het openbaar
- gepubliceerde
- puur
- doel
- doeleinden
- Python
- pytorch
- kwaliteit
- snel
- reeks
- vast
- real-time
- realistisch
- ontvangen
- recent
- aanbevelingen
- Rood
- verminderen
- Gereduceerd
- referenties
- verwijst
- relevantie
- gemeld
- vertegenwoordigt
- te vragen
- verzoeken
- vereisen
- vereist
- onderzoeker
- Resolutie
- antwoord
- resultaat
- verkregen
- Resultaten
- <HR>Retail
- terugkeer
- Retourneren
- RGB
- Rol
- ruw
- lopen
- lopend
- sagemaker
- verkoop
- tevredenheid
- Bespaar
- Bespaar geld
- Scale
- Wetenschapper
- sdk
- Tweede
- seconden
- sector
- Sectoren
- segmentatie
- segmenten
- selecteren
- senior
- gevoelig
- bedient
- service
- Sessie
- reeks
- verscheidene
- scherp
- Shell
- Bermuda's
- moet
- showcase
- kant
- Silicium
- Silicon Valley
- gelijk
- Eenvoudig
- eenvoudigweg
- gelijktijdig
- single
- Maat
- Klein
- So
- Social
- social media
- oplossing
- sommige
- iets
- Tussenruimte
- special
- specialist
- gespecialiseerde
- specifiek
- gespecificeerd
- stabiel
- standaard
- Land
- Stap voor
- Stappen
- Still
- mediaopslag
- opgeslagen
- strategieën
- sterkte
- Strepen
- strijd
- stijl
- onderwerpen
- succes
- dergelijk
- zomer
- Supermodel
- toezicht
- steunen
- op maat gemaakt
- Nemen
- neemt
- doelwit
- Taak
- taken
- team
- tech
- Technisch
- technieken
- Technologie
- templates
- termen
- Tesla
- De
- De omgeving
- de wereld
- hun
- daarom
- drie
- Door
- Gebonden
- naar
- tools
- fakkel
- TOTAAL
- traditioneel
- verkeer
- Trainen
- getraind
- Trainingen
- overdracht
- Transformeren
- transformers
- reizen
- Trends
- proces
- Triljoen
- voor
- unieke
- universiteit-
- geüpload
- Gebruik
- .
- Gebruiker
- gebruikers
- doorgaans
- gebruik maken van
- gebruikt
- maakt gebruik van
- Gebruik makend
- vakantie
- Vallei
- waardevol
- waarde
- variëteit
- divers
- groot
- controleren
- versie
- Video
- Virtueel
- W
- manieren
- welke
- en
- wit
- WIE
- breed
- Grote range
- bredere
- Breedte
- wil
- binnen
- zonder
- bewoordingen
- Mijn werk
- werkte
- wereld
- Wereldbank
- zou
- wikkel
- wu
- X
- You
- Your
- zephyrnet
- Postcode