Branża modowa to m.in bardzo lukratywny biznes, o szacowanej wartości 2.1 bln USD do 2025 r., jak podał Bank Światowy. Ta dziedzina obejmuje różnorodne segmenty, takie jak tworzenie, produkcja, dystrybucja i sprzedaż odzieży, obuwia i akcesoriów. Branża podlega ciągłym zmianom, często pojawiają się nowe style i trendy. Dlatego firmy modowe muszą być elastyczne i zdolne do adaptacji, aby zachować swoją aktualność i odnieść sukces na rynku.
Generatywna sztuczna inteligencja (AI) odnosi się do algorytmów AI zaprojektowanych do generowania nowych treści, takich jak obrazy, tekst, dźwięk lub wideo, w oparciu o zestaw wyuczonych wzorców i danych. Można go wykorzystać do generowania nowych i innowacyjnych projektów odzieży, oferując jednocześnie lepszą personalizację i opłacalność. Narzędzia do projektowania oparte na sztucznej inteligencji mogą tworzyć unikalne projekty odzieży na podstawie parametrów wejściowych lub stylów określonych przez potencjalnych klientów za pomocą monitów tekstowych. Ponadto sztuczną inteligencję można wykorzystać do personalizacji projektów zgodnie z preferencjami klienta. Na przykład klient może wybierać spośród różnych kolorów, wzorów i stylów, a modele AI wygenerują jedyny w swoim rodzaju projekt na podstawie tych wyborów. Wdrożenie sztucznej inteligencji w branży modowej jest obecnie utrudnione przez różne wyzwania techniczne, związane z wykonalnością i kosztami. Jednak te przeszkody można teraz złagodzić, wykorzystując zaawansowane metody generatywnej sztucznej inteligencji, takie jak segmentacja semantyczna obrazu oparta na języku naturalnym i dyfuzja do wirtualnego stylizowania.
Ten wpis na blogu szczegółowo opisuje implementację generatywnej stylizacji online mody wspomaganej sztuczną inteligencją przy użyciu monitów tekstowych. Inżynierowie uczenia maszynowego (ML) mogą precyzyjnie dostroić i wdrożyć modele segmentacji tekstu na segmentację semantyczną i malowania w oparciu o wstępnie wytrenowane CLIPSeq i stabilną dyfuzję z Amazon Sage Maker. Umożliwia to projektantom mody i konsumentom tworzenie wirtualnych obrazów modelek w oparciu o podpowiedzi tekstowe i wybieranie preferowanych stylów.
Generatywne rozwiązania AI
Połączenia KLIPSY np model wprowadził nowatorską metodę segmentacji semantycznej obrazu, umożliwiającą łatwą identyfikację elementów mody na zdjęciach za pomocą prostych poleceń tekstowych. Wykorzystuje monit tekstowy lub koder obrazu do kodowania informacji tekstowych i wizualnych w multimodalnej przestrzeni osadzania, umożliwiając bardzo dokładną segmentację obiektów docelowych na podstawie monitu. Model został przeszkolony na ogromnej ilości danych za pomocą technik, takich jak transfer zero-shot, nadzór nad językiem naturalnym i multimodalne samonadzorowane uczenie się kontrastywne. Oznacza to, że możesz użyć wstępnie wytrenowanego modelu, który jest publicznie dostępny przez Timo Luddecke i wsp. bez potrzeby dostosowywania.
CLIPSeg to model, który wykorzystuje koder tekstu i obrazu do kodowania informacji tekstowych i wizualnych w multimodalnej przestrzeni osadzania w celu przeprowadzenia segmentacji semantycznej na podstawie monitu tekstowego. Architektura CLIPSeg składa się z dwóch głównych komponentów: kodera tekstu i kodera obrazu. Koder tekstu pobiera monit tekstowy i konwertuje go na osadzanie tekstu, podczas gdy koder obrazu pobiera obraz i konwertuje go na osadzanie obrazu. Oba osadzania są następnie łączone i przepuszczane przez w pełni połączoną warstwę w celu wytworzenia ostatecznej maski segmentacji.
Jeśli chodzi o przepływ danych, model jest szkolony na zbiorze danych obrazów i odpowiednich monitów tekstowych, w których monity tekstowe opisują obiekt docelowy do segmentacji. Podczas procesu uczenia koder tekstu i koder obrazu są optymalizowane w celu nauczenia się mapowania między monitami tekstowymi a obrazem w celu utworzenia ostatecznej maski segmentacji. Gdy model zostanie przeszkolony, może przyjąć nowy monit tekstowy i obraz oraz utworzyć maskę segmentacji dla obiektu opisanego w monicie.
Stabilna dyfuzja to technika, która pozwala projektantom mody generować wysoce realistyczne obrazy w dużych ilościach wyłącznie na podstawie opisów tekstowych, bez potrzeby długich i kosztownych dostosowań. Jest to korzystne dla projektantów, którzy chcą szybko tworzyć modne style, oraz producentów, którzy chcą wytwarzać spersonalizowane produkty po niższych kosztach.
Poniższy diagram ilustruje architekturę stabilnej dyfuzji i przepływ danych.
W porównaniu z tradycyjnymi metodami opartymi na GAN, Stable Diffusion jest generatywną sztuczną inteligencją, która jest zdolna do tworzenia bardziej stabilnych i fotorealistycznych obrazów, które pasują do dystrybucji oryginalnego obrazu. Model może być uwarunkowany w szerokim zakresie celów, takich jak tekst do generowania tekstu na obraz, obwiednie do generowania układu na obraz, zamaskowane obrazy do malowania i obrazy o niższej rozdzielczości do super-rozdzielczości. Modele dyfuzyjne mają szeroki zakres zastosowań biznesowych, a ich praktyczne zastosowania wciąż ewoluują. Modele te przyniosą ogromne korzyści różnym branżom, takim jak moda, handel detaliczny i e-commerce, rozrywka, media społecznościowe, marketing i inne.
Generuj maski z monitów tekstowych za pomocą CLIPSeg
Stylizacja online Vogue to usługa, która umożliwia klientom otrzymywanie porad i rekomendacji modowych od sztucznej inteligencji za pośrednictwem platformy internetowej. Czyni to poprzez dobór odzieży i akcesoriów, które uzupełniają wygląd klienta, mieszczą się w jego budżecie i odpowiadają jego osobistym preferencjom. Dzięki wykorzystaniu generatywnej sztucznej inteligencji zadania można wykonywać z większą łatwością, co prowadzi do zwiększenia zadowolenia klientów i zmniejszenia wydatków.
Rozwiązanie można wdrożyć na Amazon Elastic Compute Cloud (EC2) instancja p3.2xlarge, która ma jeden procesor graficzny V100 z pamięcią 16 GB. Zastosowano kilka technik, aby poprawić wydajność i zmniejszyć zużycie pamięci GPU, co zaowocowało szybszym generowaniem obrazu. Obejmują one użycie fp16 i umożliwienie efektywnej pamięci uwagi w celu zmniejszenia przepustowości w bloku uwagi.
Zaczęliśmy od przesłania przez użytkownika obrazu mody, a następnie pobrania i wyodrębnienia wstępnie wytrenowanego modelu z CLIPSeq. Obraz jest następnie normalizowany i zmieniany w celu dostosowania go do limitu rozmiaru. Stable Diffusion V2 obsługuje rozdzielczość obrazu do 768×768, podczas gdy V1 obsługuje do 512×512. Zobacz następujący kod:
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)
Korzystając z wytrenowanego wcześniej modelu CLIPSeq, jesteśmy w stanie wyodrębnić obiekt docelowy z obrazu za pomocą podpowiedzi tekstowych. Odbywa się to poprzez wprowadzenie zachęty tekstowej do kodera tekstu, który konwertuje ją na osadzenie tekstu. Obraz jest następnie wprowadzany do kodera obrazu, który przekształca go w osadzony obraz. Oba osadzenia są następnie łączone i przepuszczane przez w pełni połączoną warstwę w celu utworzenia ostatecznej maski segmentacji, która wyróżnia obiekt docelowy opisany w monicie tekstowym. Zobacz następujący kod:
# 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]))
Dzięki dokładnemu obrazowi maski z segmentacji semantycznej możemy użyć in-paintingu do podmiany treści. Malowanie to proces polegający na użyciu wyszkolonego modelu generatywnego w celu uzupełnienia brakujących części obrazu. Używając obrazu maski do identyfikacji obiektu docelowego, możemy zastosować technikę malowania w celu zastąpienia obiektu docelowego czymś innym, na przykład innym elementem garderoby lub akcesorium. Do tego celu można wykorzystać model Stable Diffusion V2, który jest w stanie generować fotorealistyczne obrazy o wysokiej rozdzielczości, które odpowiadają rozkładowi oryginalnego obrazu.
Precyzyjne dostrajanie na podstawie wstępnie wyszkolonych modeli przy użyciu programu DreamBooth
Dostrajanie to proces głębokiego uczenia się, w którym wstępnie wyszkolony model jest dalej szkolony w zakresie nowego zadania przy użyciu niewielkiej ilości oznaczonych danych. Zamiast trenować od zera, chodzi o to, aby wziąć sieć, która została już przeszkolona na dużym zbiorze danych dla podobnego zadania, i dalej trenować ją na nowym zbiorze danych, aby uczynić ją bardziej wyspecjalizowaną do tego konkretnego zadania.
Projektanci mody mogą również korzystać z ukierunkowanego tematycznie, precyzyjnie dostrojonego modelu obrazu Stable Diffusion w celu wygenerowania określonej klasy stylu, na przykład swobodnych długich spódnic dla pań. Aby to zrobić, pierwszym krokiem jest dostarczenie zestawu przykładowych obrazów w domenie docelowej, około 1 tuzina, z odpowiednimi etykietami tekstowymi, takimi jak poniższe, i powiązanie ich z unikalnym identyfikatorem, który odnosi się do projektu, stylu, koloru i tkaniny . Etykieta na tekście odgrywa kluczową rolę w określaniu wyników precyzyjnie dostrojonego modelu. Istnieje kilka sposobów na poprawienie precyzyjnego strojenia poprzez efektywne szybka inżynieria a oto kilka przykładów.
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.
Użycie małego zestawu obrazów do precyzyjnego dostrojenia stabilnej dyfuzji może spowodować przeuczenie modelu. DreamBooth[5] rozwiązuje ten problem, stosując specyficzną dla klasy utratę wcześniejszego zachowania. Uczy się wiązać unikalny identyfikator z tym konkretnym tematem w dwóch krokach. Najpierw dostraja model o niskiej rozdzielczości za pomocą obrazów wejściowych sparowanych z podpowiedzią tekstową, która zawiera unikalny identyfikator i nazwę klasy, do której należy przedmiot, na przykład „spódnica”. W praktyce oznacza to jednoczesne posiadanie obrazów dopasowanych do modelu i obrazów próbkowanych z wizualnego przeora klasy niedostrojonej. Te wcześniej zachowane obrazy są próbkowane i oznaczane za pomocą monitu „rzeczownik klasowy”. Po drugie, precyzyjnie dostroi komponenty o superwysokiej rozdzielczości, łącząc obrazy o niskiej i wysokiej rozdzielczości z zestawu obrazów wejściowych, co pozwala na zachowanie wierności na wyjściu precyzyjnie dostrojonego modelu z małymi szczegółami.
Precyzyjne dostrojenie wstępnie przeszkolonego kodera tekstu do malowania za pomocą UNet dla obrazów o rozdzielczości 512 × 512 wymaga około 22 GB pamięci VRAM lub więcej dla rozdzielczości 768 × 768. Idealnie dostrojone próbki powinny być zmieniane w celu dopasowania do pożądanej rozdzielczości obrazu wyjściowego, aby uniknąć pogorszenia wydajności. Koder tekstu tworzy dokładniejsze szczegóły, takie jak powierzchnie modelu. Jedną z opcji jest uruchomienie na pojedynczej instancji AWS EC2 g5.2xlarge, dostępnej teraz w osiem regionów lub użyj Hugging Face Accelerate, aby uruchomić dopracowany kod w rozproszonej konfiguracji. Aby uzyskać dodatkową oszczędność pamięci, możesz wybrać pokrojoną wersję uwagi, która wykonuje obliczenia etapami zamiast wszystkich naraz, po prostu modyfikując skrypt szkoleniowy DreamBooth train_dreambooth_inpaint.py, aby dodać funkcję potoku enable_attention_slicing().
Accelerate to biblioteka, która umożliwia uruchomienie jednego kodu dostrajania w dowolnej konfiguracji rozproszonej. Wprowadzono Hugging Face i Amazon Kontenery do głębokiego uczenia się twarzy (DLC) skalować zadania precyzyjnego dostrajania na wiele procesorów graficznych i węzłów. Możesz skonfigurować konfigurację uruchamiania dla Amazon SageMaker za pomocą jednego polecenia CLI.
# 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')
Aby uruchomić zadanie dostrajania, sprawdź konfigurację Accelerate za pomocą CLI i podaj niezbędne argumenty szkoleniowe, a następnie użyj następującego skryptu powłoki.
# 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
Precyzyjnie dostrojony model malowania pozwala na generowanie bardziej szczegółowych obrazów do klasy mody opisanej w monicie tekstowym. Ponieważ został dopracowany za pomocą zestawu obrazów o wysokiej rozdzielczości i monitów tekstowych, model może generować obrazy bardziej dopasowane do klasy, takie jak oficjalne suknie wieczorowe. Należy zauważyć, że im bardziej szczegółowa klasa i im więcej danych użytych do dostrajania, tym dokładniejsze i bardziej realistyczne będą obrazy wyjściowe.
%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
Wdróż precyzyjnie dostrojony model do malowania, używając SageMaker do wnioskowania
Dzięki Amazon SageMaker możesz wdrażać precyzyjnie dostrojone modele Stable Diffusion do wnioskowania w czasie rzeczywistym. Aby przesłać model do Usługa Amazon Simple Storage (S3) w celu wdrożenia należy utworzyć archiwum tar model.tar.gz. Upewnij się, że archiwum zawiera bezpośrednio wszystkie pliki, a nie folder, który je zawiera. Po wyeliminowaniu sporadycznych punktów kontrolnych folder archiwum dostrajania programu DreamBooth powinien wyglądać następująco:
Pierwszym krokiem w tworzeniu naszej obsługi wnioskowania jest utworzenie pliku inference.py. Ten plik służy jako centralne centrum ładowania modelu i obsługi wszystkich przychodzących żądań wnioskowania. Po załadowaniu modelu wykonywana jest funkcja model_fn(). Gdy zachodzi potrzeba przeprowadzenia wnioskowania, wywoływana jest funkcja predict_fn(). Ponadto funkcja decode_base64() jest wykorzystywana do konwersji łańcucha JSON zawartego w ładunku na typ danych obrazu PIL.
%%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}
Aby przesłać model do zasobnika Amazon S3, należy najpierw utworzyć archiwum model.tar.gz. Ważne jest, aby pamiętać, że archiwum powinno składać się bezpośrednio z plików, a nie z folderu, który je przechowuje. Na przykład plik powinien wyglądać następująco:
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")
Po przesłaniu archiwum modelu możemy wdrożyć je w Amazon SageMaker za pomocą HuggingfaceModel do wnioskowania w czasie rzeczywistym. Możesz hostować punkt końcowy za pomocą instancji g4dn.xlarge, która jest wyposażona w pojedynczy procesor graficzny NVIDIA Tesla T4 z 16 GB pamięci VRAM. Automatyczne skalowanie można aktywować, aby obsłużyć różne wymagania ruchu. Aby uzyskać informacje na temat włączania skalowania automatycznego do punktu końcowego, zobacz Rozpoczęcie produkcji: automatyczne skalowanie transformatorów do przytulania twarzy za pomocą 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" )
Metoda huggingface_model.deploy() zwraca obiekt HuggingFacePredictor, którego można użyć do zażądania wnioskowania. Punkt końcowy wymaga kodu JSON z kluczem wejściowym, który reprezentuje monit wejściowy dla modelu w celu wygenerowania obrazu. Możesz także kontrolować generowanie za pomocą parametrów, takich jak num_inference_steps, guide_scale i „num_images_per_prompt”. Funkcja predictor.predict() zwraca JSON z kluczem „generated_images”, który przechowuje cztery wygenerowane obrazy jako łańcuchy zakodowane w base64. Dodaliśmy dwie funkcje pomocnicze, decode_base64_to_image i display_images, aby odpowiednio zdekodować odpowiedź i wyświetlić obrazy. Pierwsza z nich dekoduje zakodowany ciąg znaków base64 i zwraca obiekt PIL.Image, a druga wyświetla listę obiektów PIL.Image. Zobacz następujący kod:
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
Przejdźmy do zadania związanego z malowaniem. Oszacowano, że wytworzenie trzech obrazów zajmie około 15 sekund, biorąc pod uwagę obraz wejściowy i maskę utworzoną za pomocą CLIPSeg z omówionym wcześniej monitem tekstowym. Zobacz następujący kod:
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)
Namalowane obrazy mogą być wyświetlane razem z oryginalnym obrazem w celu wizualnego porównania. Ponadto proces malowania w trakcie malowania można ograniczyć za pomocą różnych parametrów, takich jak nawigacja_skala, która kontroluje siłę obrazu wskazówek podczas procesu malowania. Pozwala to użytkownikowi dostosować obraz wyjściowy i osiągnąć pożądane rezultaty.
Szybki start Amazon SageMaker oferuje szablony stabilnej dyfuzji dla różnych modeli, w tym zamiany tekstu na obraz i skalowania w górę. Aby uzyskać więcej informacji, zapoznaj się z SageMaker JumpStart zapewnia teraz modele stabilnej dyfuzji i rozkwitu. Dodatkowe szablony Jumpstart będą dostępne w niedalekiej przyszłości.
Ograniczenia
Chociaż CLIPSeg zwykle dobrze radzi sobie z rozpoznawaniem typowych obiektów, ma problemy z bardziej abstrakcyjnymi lub systematycznymi zadaniami, takimi jak liczenie liczby obiektów na obrazie, oraz z bardziej złożonymi zadaniami, takimi jak przewidywanie, jak blisko na zdjęciu znajduje się najbliższy obiekt, taki jak torebka. Zero-shot CLIPSeq ma również problemy w porównaniu z modelami specyficznymi dla zadań w bardzo szczegółowej klasyfikacji, takiej jak rozróżnienie dwóch niejasnych projektów, wariantów ubioru lub klasyfikacji stylu. CLIPSeq nadal ma słabe uogólnienie do obrazów, które nie są uwzględnione w zbiorze danych przed treningiem. Wreszcie zaobserwowano, że klasyfikatory CLIP typu „zero-shot” mogą być wrażliwe na sformułowania lub frazowanie i czasami wymagają „szybkiej inżynierii” metodą prób i błędów, aby dobrze działać. Przejście na inny model segmentacji semantycznej dla szkieletu CLIPSeq, np BEiT, który może pochwalić się 62.8% mIOU w zbiorze danych ADE20K, może potencjalnie poprawić wyniki.
Stwierdzono, że projekty modowe wygenerowane przy użyciu funkcji Stable Diffusion ograniczają się do części odzieży, które są co najmniej w przewidywalny sposób umieszczone w szerszym kontekście modeli mody i które są zgodne z osadzonymi na wysokim poziomie, których można zasadnie oczekiwać w zestaw danych w hiperskali używany podczas szkolenia wstępnie wytrenowanego modelu. Prawdziwym ograniczeniem generatywnej sztucznej inteligencji jest to, że model ostatecznie wytworzy całkowicie wyimaginowane i mniej autentyczne wyniki. Dlatego projekty modowe generowane przez sztuczną inteligencję mogą nie być tak zróżnicowane ani unikalne, jak te tworzone przez ludzkich projektantów.
Wnioski
Generative AI zapewnia sektorowi modowemu możliwość przekształcenia swoich praktyk dzięki lepszym doświadczeniom użytkowników i opłacalnym strategiom biznesowym. W tym poście pokazujemy, jak wykorzystać generatywną sztuczną inteligencję, aby umożliwić projektantom mody i konsumentom tworzenie spersonalizowanych stylów mody za pomocą wirtualnego modelowania. Z pomocą istniejących i przyszłych szablonów Amazon SageMaker Jumpstart użytkownicy mogą szybko zastosować te zaawansowane techniki bez potrzeby posiadania dogłębnej wiedzy technicznej, a wszystko to przy zachowaniu wszechstronności i obniżeniu kosztów.
Ta innowacyjna technologia stwarza nowe możliwości dla firm i profesjonalistów zajmujących się tworzeniem treści w różnych branżach. Generative AI zapewnia szerokie możliwości ulepszania i tworzenia treści. Wypróbuj najnowsze dodatki do szablonów Jumpstart w swoim Studio SageMaker, takie jak dostrajanie funkcji zamiany tekstu na obraz i skalowanie.
Chcielibyśmy podziękować Li Zhangowi, Karlowi Albertsenowi, Kristine Pearce, Nikhilowi Velpanurowi, Aaronowi Sengstackenowi, Jamesowi Wu i Neelamowi Koshiyi za ich wsparcie i cenny wkład, który pomógł ulepszyć tę pracę.
O autorach
Alfreda Shena jest starszym specjalistą AI/ML w AWS. Pracował w Dolinie Krzemowej, zajmując stanowiska techniczne i kierownicze w różnych sektorach, w tym w służbie zdrowia, finansach i zaawansowanych technologiach. Jest oddanym badaczem stosowanej AI/ML, koncentrującym się na CV, NLP i multimodalności. Jego prace były prezentowane w publikacjach takich jak EMNLP, ICLR i Public Health.
Dr Vivek Madan jest naukowcem stosowanym w zespole Amazon SageMaker JumpStart. Uzyskał stopień doktora na Uniwersytecie Illinois w Urbana-Champaign i był pracownikiem naukowym podoktoranckim w Georgia Tech. Jest aktywnym badaczem w dziedzinie uczenia maszynowego i projektowania algorytmów oraz publikował artykuły na konferencjach EMNLP, ICLR, COLT, FOCS i SODA
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/virtual-fashion-styling-with-generative-ai-using-amazon-sagemaker/
- 1
- 10
- 100
- 7
- a
- Aaron
- Zdolny
- O nas
- ABSTRACT
- przyśpieszyć
- akcelerator
- dostęp
- akcesoria
- realizowane
- Konto
- dokładny
- Osiągać
- w poprzek
- aktywny
- przystosować
- w dodatku
- Dodatkowy
- do tego
- wzbogacenie
- Adresy
- Przyjęcie
- zaawansowany
- Rada
- Po
- AI
- AI / ML
- algorytm
- Algorytmy
- Wszystkie kategorie
- Pozwalać
- pozwala
- już
- Amazonka
- Amazon Sage Maker
- Amazon SageMaker JumpStart
- ilość
- i
- Strój
- zjawić się
- aplikacje
- stosowany
- Aplikuj
- w przybliżeniu
- architektura
- Archiwum
- POWIERZCHNIA
- argumenty
- sztuczny
- sztuczna inteligencja
- ASA
- Wsparcie
- Uwaga
- audio
- Autentyczny
- dostępny
- AWS
- Kręgosłup
- przepustowość
- Bank
- baza
- na podstawie
- bo
- rozpoczął
- korzystny
- korzyści
- Ulepsz Swój
- pomiędzy
- związania
- wiążący
- Blokować
- Blog
- Kwitnąć
- Niebieski
- szczyci się
- ciało
- Skrzynki
- Jasny
- jaśniejsze
- budżet
- biznes
- Aplikacje biznesowe
- oblicza
- nazywa
- możliwości
- zdolny
- Etui
- casual
- centralny
- wyzwania
- duża szansa,
- zmiana
- Dodaj
- klasa
- klasyfikacja
- Zamknij
- zamknięcie
- Odzież
- Chmura
- kod
- zbierać
- kolor
- kolumny
- jak
- komfort
- wspólny
- Firmy
- porównać
- w porównaniu
- porównanie
- Komplement
- kompleks
- składniki
- obliczenia
- obliczać
- computing
- pojęcie
- systemu
- połączony
- stały
- Konsumenci
- Pojemniki
- zawiera
- zawartość
- Generowanie treści
- kontekst
- kontynuować
- kontrola
- kontroli
- konwertować
- Odpowiedni
- Koszty:
- mógłby
- pokryty
- Stwórz
- stworzony
- Tworzenie
- tworzenie
- krytyczny
- istotny
- Obecnie
- zwyczaj
- klient
- Zadowolenie klienta
- Klientów
- konfigurowalny
- dostosowywanie
- dane
- spadek
- dedykowane
- głęboko
- głęboka nauka
- wymagania
- Denim
- rozwijać
- wdrażane
- Wdrożenie
- opisać
- opisane
- Wnętrze
- zaprojektowany
- projektanci
- projekty
- życzenia
- szczegółowe
- detale
- określaniu
- różnica
- różne
- Transmitowanie
- bezpośrednio
- omówione
- Wyświetlacz
- wyświetlacze
- dystrybuowane
- 分配
- inny
- domena
- pobieranie
- dziesiątki
- trwałość
- podczas
- e-commerce
- z łatwością
- Efektywne
- wydajny
- Elementy
- eliminując
- objąć
- umożliwiać
- Umożliwia
- umożliwiając
- obejmuje
- Punkt końcowy
- Inżynierowie
- wzmocnienie
- zapewnić
- rozrywka
- wyposażony
- błąd
- szacunkowa
- wieczór
- ostatecznie
- ewoluuje
- przykład
- przykłady
- Przede wszystkim system został opracowany
- oczekiwać
- wydatki
- drogi
- Doświadczenia
- ekspertyza
- eksport
- wyciąg
- tkanina
- tekstylia
- Twarz
- twarze
- Moda
- szybciej
- Cecha
- Płeć żeńska
- kilka
- wierność
- pole
- filet
- Akta
- wypełniać
- finał
- W końcu
- finansować
- Znajdź
- w porządku
- i terminów, a
- dopasować
- Rozbłysk
- elastyczne
- pływ
- Skupiać
- następnie
- następujący
- następujący sposób
- formalny
- Dawny
- Naprzód
- znaleziono
- często
- od
- pełny
- w pełni
- funkcjonować
- Funkcje
- dalej
- Ponadto
- przyszłość
- odzież
- Generować
- wygenerowane
- generacja
- generatywny
- generatywna sztuczna inteligencja
- otrzymać
- dany
- GPU
- GPU
- Graficzny
- szary
- większy
- bardzo
- Krata
- uchwyt
- Prowadzenie
- uprząż
- mający
- Zdrowie
- opieki zdrowotnej
- wysokość
- pomógł
- tutaj
- Wysoki
- na wysokim szczeblu
- wysoka rozdzielczość
- wyższy
- pasemka
- wysoko
- przytrzymanie
- posiada
- gospodarz
- W jaki sposób
- How To
- Jednak
- HTML
- HTTPS
- Piasta
- Przytulanie twarzy
- człowiek
- pomysł
- identyfikator
- zidentyfikować
- Illinois
- obraz
- zdjęcia
- wyimaginowany
- realizacja
- importować
- ważny
- podnieść
- ulepszony
- in
- informacje
- zawierać
- obejmuje
- Włącznie z
- Przybywający
- włączenie
- wzrosła
- przemysłowa
- przemysł
- Informacja
- początkowy
- Innowacyjny
- wkład
- zainstalować
- przykład
- zamiast
- Inteligencja
- wprowadzono
- zaangażowany
- IT
- szt
- Praca
- json
- Klawisz
- Etykieta
- Etykiety
- język
- duży
- uruchomić
- warstwa
- prowadzący
- UCZYĆ SIĘ
- dowiedziałem
- nauka
- Długość
- poziomy
- Li
- Biblioteka
- LIMIT
- Ograniczony
- Lista
- załadować
- załadunek
- długo
- od
- Opuszczenie
- lukratywny
- maszyna
- uczenie maszynowe
- Główny
- utrzymać
- Utrzymywanie
- robić
- Dokonywanie
- kierowniczy
- Producenci
- mapowanie
- rynek
- Marketing
- maska
- Maski
- Mecz
- materiały
- matplotlib
- znaczy
- Media
- Pamięć
- metoda
- metody
- brakujący
- ML
- model
- modele
- jeszcze
- większość
- ruch
- ruch
- wielokrotność
- Nazwa
- Naturalny
- Blisko
- niezbędny
- Potrzebować
- potrzeba
- wymagania
- sieć
- Neutralny
- Nowości
- nlp
- węzły
- normalna
- powieść
- numer
- Nvidia
- przedmiot
- obiekty
- Przeszkody
- oferta
- oferuje
- Oferty
- ONE
- Jedyny w swoim rodzaju
- Online
- Okazja
- zoptymalizowane
- Option
- zamówienie
- oryginalny
- OS
- własny
- sparowany
- łączenie w pary
- Papiery
- parametry
- szczególny
- strony
- minęło
- ścieżka
- Wzór
- wzory
- wykonać
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- wykonuje
- uprawnienia
- osobisty
- personalizacja
- personalizować
- Personalizowany
- Fotorealistyczne
- Zdjęcia
- rura
- rurociąg
- Platforma
- plato
- Analiza danych Platona
- PlatoDane
- Proszę
- biedny
- Popularny
- stwarza
- Pozycje
- Post
- potencjał
- potencjalnie
- Praktyczny
- praktyka
- praktyki
- przewidzieć
- przewidywanie
- przepowiednia
- Urządzenie prognozujące
- preferencje
- Korzystny
- prezenty
- zapobiec
- poprzednio
- Wcześniejszy
- wygląda tak
- produkować
- Produkcja
- Produkty
- specjalistów
- właściwy
- zapewniać
- zapewnia
- publiczny
- zdrowie publiczne
- publikacje
- publicznie
- opublikowany
- czysto
- cel
- cele
- Python
- płomień
- jakość
- szybko
- zasięg
- real
- w czasie rzeczywistym
- realistyczny
- otrzymać
- niedawny
- zalecenia
- Czerwony
- zmniejszyć
- Zredukowany
- referencje
- odnosi
- mających znaczenie
- Zgłoszone
- reprezentuje
- zażądać
- wywołań
- wymagać
- Wymaga
- badacz
- Rozkład
- odpowiedź
- dalsze
- wynikły
- Efekt
- detaliczny
- powrót
- powraca
- RGB
- Rola
- w przybliżeniu
- run
- bieganie
- sagemaker
- sole
- klientów
- Zapisz
- Oszczędności
- Skala
- Naukowiec
- Sdk
- druga
- sekund
- sektor
- Sektory
- segmentacja
- Segmenty
- wybierając
- senior
- wrażliwy
- służy
- usługa
- Sesja
- zestaw
- kilka
- ostry
- Powłoka
- Short
- powinien
- prezentacja
- bok
- Krzem
- Silicon Valley
- podobny
- Prosty
- po prostu
- jednocześnie
- pojedynczy
- Rozmiar
- mały
- So
- Obserwuj Nas
- Media społecznościowe
- rozwiązanie
- kilka
- coś
- Typ przestrzeni
- specjalny
- specjalista
- wyspecjalizowanym
- specyficzny
- określony
- stabilny
- standard
- Stan
- Ewolucja krok po kroku
- Cel
- Nadal
- przechowywanie
- przechowywany
- strategie
- jest determinacja.
- Paski
- Zmagania
- styl
- przedmiot
- sukces
- taki
- lato
- Supermodelka
- nadzór
- podpory
- dostosowane
- Brać
- trwa
- cel
- Zadanie
- zadania
- zespół
- tech
- Techniczny
- Techniki
- Technologia
- Szablony
- REGULAMIN
- Tesla
- Połączenia
- Strefa
- świat
- ich
- w związku z tym
- trzy
- Przez
- Związany
- do
- narzędzia
- pochodnia
- CAŁKOWICIE
- tradycyjny
- ruch drogowy
- Pociąg
- przeszkolony
- Trening
- przenieść
- Przekształcać
- Transformatory
- podróżować
- Trendy
- próba
- Trylion
- dla
- wyjątkowy
- uniwersytet
- przesłanych
- Stosowanie
- posługiwać się
- Użytkownik
- Użytkownicy
- zazwyczaj
- wykorzystać
- wykorzystany
- wykorzystuje
- Wykorzystując
- wakacje
- Dolina
- Cenny
- wartość
- różnorodność
- różnorodny
- Naprawiono
- zweryfikować
- wersja
- Wideo
- Wirtualny
- W
- sposoby
- który
- Podczas
- biały
- KIM
- szeroki
- Szeroki zasięg
- szerszy
- szerokość
- będzie
- w ciągu
- bez
- sformułowanie
- Praca
- pracował
- świat
- Bank Światowy
- by
- owinąć
- wu
- X
- You
- Twój
- zefirnet
- Zamek błyskawiczny