W listopadzie 2022 r. my ogłosił za pomocą których klienci AWS mogą generować obrazy z tekstu Stabilna dyfuzja modele używające Amazon SageMaker JumpStart. Dzisiaj z przyjemnością przedstawiamy nową funkcję, która umożliwia użytkownikom malowanie obrazów za pomocą modeli stabilnej dyfuzji. Inpainting odnosi się do procesu zastępowania części obrazu innym obrazem na podstawie zachęty tekstowej. Dostarczając oryginalny obraz, obraz maski przedstawiający część do zastąpienia oraz monit tekstowy, model stabilnej dyfuzji może wytworzyć nowy obraz, który zastępuje zamaskowany obszar obiektem, podmiotem lub środowiskiem opisanym w monicie tekstowym.
Możesz użyć malowania do przywracania zdegradowanych obrazów lub tworzenia nowych obrazów z nowymi tematami lub stylami w niektórych sekcjach. W dziedzinie projektowania architektonicznego malowanie metodą Stable Diffusion może być stosowane do naprawy niekompletnych lub uszkodzonych obszarów planów budynków, dostarczając precyzyjnych informacji ekipom budowlanym. W przypadku klinicznego obrazowania MRI głowa pacjenta musi być unieruchomiona, co może prowadzić do uzyskania wyników poniżej normy z powodu artefaktu kadrowania powodującego utratę danych lub zmniejszenie dokładności diagnostycznej. Malowanie obrazu może skutecznie pomóc złagodzić te nieoptymalne wyniki.
W tym poście przedstawiamy obszerny przewodnik dotyczący wdrażania i uruchamiania wnioskowania przy użyciu modelu inpainting Stable Diffusion na dwie metody: za pośrednictwem interfejsu użytkownika (UI) JumpStart w Studio Amazon SageMakeri programowo przez Interfejsy API JumpStart dostępny w SageMaker SDK dla Pythona.
Omówienie rozwiązania
Poniższe obrazy są przykładami inpaintingu. Oryginalne obrazy znajdują się po lewej stronie, obraz maski znajduje się pośrodku, a obraz wygenerowany przez model jest po prawej stronie. W przypadku pierwszego przykładu model otrzymał oryginalny obraz, obraz maski i podpowiedź tekstową „biały kot, niebieskie oczy, ubrany w sweter, leżący w parku”, a także podpowiedź negatywną „źle narysowane stopy. ” W przypadku drugiego przykładu zachęta tekstowa brzmiała: „Modelka z wdziękiem prezentuje swobodną długą sukienkę z mieszanką różowych i niebieskich odcieni”.
Uruchamianie dużych modeli, takich jak stabilna dyfuzja, wymaga niestandardowych skryptów wnioskowania. Musisz przeprowadzić kompleksowe testy, aby upewnić się, że skrypt, model i żądana instancja wydajnie ze sobą współpracują. JumpStart upraszcza ten proces, udostępniając gotowe do użycia skrypty, które zostały gruntownie przetestowane. Dostęp do tych skryptów można uzyskać jednym kliknięciem w interfejsie Studio lub za pomocą kilku wierszy kodu w programie Interfejsy API JumpStart.
Poniższe sekcje przeprowadzą Cię przez proces wdrażania modelu i uruchamiania wnioskowania przy użyciu interfejsu Studio lub interfejsów API JumpStart.
Pamiętaj, że korzystając z tego modelu, zgadzasz się na Licencja CreativeML Open RAIL++-M.
Uzyskaj dostęp do JumpStart przez interfejs użytkownika Studio
W tej sekcji zilustrujemy wdrażanie modeli JumpStart przy użyciu interfejsu Studio. Towarzyszący film wideo pokazuje lokalizowanie wstępnie wytrenowanego modelu malowania stabilnej dyfuzji w programie JumpStart i wdrażanie go. Strona modelu zawiera istotne szczegóły dotyczące modelu i jego użycia. Aby przeprowadzić wnioskowanie, używamy instancji typu ml.p3.2xlarge, która zapewnia wymaganą akcelerację GPU dla wnioskowania o małych opóźnieniach w przystępnej cenie. Po skonfigurowaniu instancji hostingowej SageMaker wybierz Rozmieścić. Punkt końcowy będzie działał i był przygotowany do obsługi żądań wnioskowania w ciągu około 10 minut.
JumpStart udostępnia przykładowy notatnik, który może przyspieszyć czas potrzebny do uruchomienia wnioskowania na nowo utworzonym punkcie końcowym. Aby uzyskać dostęp do notesu w Studio, wybierz Otwórz notatnik Użyj punktu końcowego ze Studio sekcja strony punktu końcowego modelu.
Używaj programu JumpStart z pakietem SDK SageMaker
Korzystanie z interfejsu użytkownika JumpStart umożliwia interaktywne wdrożenie wstępnie wytrenowanego modelu za pomocą zaledwie kilku kliknięć. Alternatywnie, możesz programowo zastosować modele JumpStart, używając interfejsów API zintegrowanych z SageMaker Python SDK.
W tej sekcji wybieramy odpowiedni wstępnie wytrenowany model w JumpStart, wdrażamy ten model w punkcie końcowym SageMaker i przeprowadzamy wnioskowanie na wdrożonym punkcie końcowym, a wszystko to przy użyciu zestawu SageMaker Python SDK. Poniższe przykłady zawierają fragmenty kodu. Aby uzyskać dostęp do pełnego kodu ze wszystkimi krokami zawartymi w tej demonstracji, zapoznaj się z Wprowadzenie do edycji obrazu JumpStart — Inpainting w trybie stabilnej dyfuzji przykładowy notatnik.
Wdróż wstępnie wytrenowany model
SageMaker wykorzystuje kontenery Docker do różnych zadań kompilacji i wykonywania. JumpStart wykorzystuje Kontenery do głębokiego uczenia SageMaker (DLC), które są specyficzne dla platformy. Najpierw pobieramy wszelkie dodatkowe pakiety, a także skrypty do obsługi uczenia i wnioskowania dla wybranego zadania. Następnie wstępnie wytrenowane artefakty modelu są pobierane oddzielnie model_uris
, co zapewnia elastyczność platformy. Pozwala to na użycie wielu wstępnie wytrenowanych modeli z jednym skryptem wnioskowania. Poniższy kod ilustruje ten proces:
Następnie udostępniamy te zasoby a Model SageMakera instancję i wdrożyć punkt końcowy:
Po wdrożeniu modelu możemy uzyskać z niego prognozy w czasie rzeczywistym!
Wkład
Dane wejściowe to obraz podstawowy, obraz maski i monit opisujący podmiot, przedmiot lub środowisko, które mają zostać zastąpione w zamaskowanej części. Tworzenie idealnego obrazu maski na potrzeby efektów podczas malowania obejmuje kilka najlepszych praktyk. Zacznij od konkretnego monitu i nie wahaj się eksperymentować z różnymi ustawieniami stabilnej dyfuzji, aby osiągnąć pożądane rezultaty. Użyj obrazu maski, który bardzo przypomina obraz, który chcesz pomalować. Takie podejście pomaga algorytmowi malowania w uzupełnieniu brakujących fragmentów obrazu, co daje bardziej naturalny wygląd. Obrazy wysokiej jakości zazwyczaj dają lepsze wyniki, więc upewnij się, że obrazy bazowe i maski są dobrej jakości i przypominają się nawzajem. Ponadto wybierz duży i gładki obraz maski, aby zachować szczegóły i zminimalizować artefakty.
Punkt końcowy akceptuje obraz podstawowy i maskę jako nieprzetworzone wartości RGB lub obraz zakodowany w formacie base64. Program obsługi wnioskowania dekoduje obraz na podstawie content_type
:
- W razie zamówieenia projektu
content_type = “application/json”
, wejściowy ładunek musi być słownikiem JSON z nieprzetworzonymi wartościami RGB, monitem tekstowym i innymi opcjonalnymi parametrami - W razie zamówieenia projektu
content_type = “application/json;jpeg”
, ładunek wejściowy musi być słownikiem JSON z obrazem zakodowanym w formacie base64, monitem tekstowym i innymi opcjonalnymi parametrami
Wydajność
Punkt końcowy może generować dwa typy danych wyjściowych: obraz RGB zakodowany w formacie Base64 lub słownik JSON wygenerowanych obrazów. Możesz określić żądany format wyjściowy, ustawiając plik accept
nagłówek do "application/json"
or "application/json;jpeg"
odpowiednio dla obrazu JPEG lub base64.
- W razie zamówieenia projektu
accept = “application/json”
, punkt końcowy zwraca słownik JSON z wartościami RGB dla obrazu - W razie zamówieenia projektu
accept = “application/json;jpeg”
, punkt końcowy zwraca słownik JSON z obrazem JPEG w postaci bajtów zakodowanych z kodowaniem base64.b64
Należy pamiętać, że wysyłanie lub odbieranie ładunku z nieprzetworzonymi wartościami RGB może spowodować przekroczenie domyślnych limitów wejściowego ładunku i rozmiaru odpowiedzi. W związku z tym zalecamy użycie obrazu zakodowanego w formacie base64 przez ustawienie content_type = “application/json;jpeg”
i zaakceptuj = „aplikacja/json;jpeg”.
Poniższy kod jest przykładowym żądaniem wnioskowania:
Obsługiwane parametry
Modele malowania metodą stabilnej dyfuzji obsługują wiele parametrów generowania obrazu:
- obraz – Oryginalny obraz.
- maska – Obraz, w którym zaciemniona część pozostaje niezmieniona podczas generowania obrazu, a biała część jest zastępowana.
- podpowiedź – Monit, aby poprowadzić generowanie obrazu. Może to być ciąg znaków lub lista ciągów znaków.
- num_inference_steps (opcjonalnie) – Liczba kroków odszumiania podczas generowania obrazu. Więcej kroków prowadzi do wyższej jakości obrazu. Jeśli jest określony, musi być dodatnią liczbą całkowitą. Należy pamiętać, że więcej kroków wnioskowania prowadzi do dłuższego czasu odpowiedzi.
- skala_wskazówek (opcjonalnie) – Wyższa skala prowadzenia powoduje, że obraz jest bardziej zbliżony do monitu, kosztem jakości obrazu. Jeśli określono, musi to być liczba zmiennoprzecinkowa.
guidance_scale<=1
jest ignorowany. - negatywna_prompt (opcjonalnie) – To prowadzi generowanie obrazu do tego monitu. Jeśli jest określony, musi to być ciąg znaków lub lista ciągów znaków i używany z
guidance_scale
. Jeśliguidance_scale
jest wyłączone, to również jest wyłączone. Co więcej, jeśli monit jest listą ciągów znaków, tonegative_prompt
musi być również listą ciągów znaków. - nasiona (opcjonalnie) – To naprawia losowy stan dla odtwarzalności. Jeśli jest określony, musi być liczbą całkowitą. Ilekroć użyjesz tego samego monitu z tym samym materiałem siewnym, wynikowy obraz będzie zawsze taki sam.
- wielkość_wsadu (opcjonalnie) – Liczba obrazów do wygenerowania w jednym przejściu do przodu. Jeśli używasz mniejszej instancji lub generujesz wiele obrazów, zmniejsz
batch_size
być małą liczbą (1–2). Liczba obrazów = liczba monitów*num_images_per_prompt
.
Ograniczenia i uprzedzenia
Mimo że Stable Diffusion ma imponującą wydajność w malowaniu, ma kilka ograniczeń i uprzedzeń. Obejmują one między innymi:
- Model może nie generować dokładnych twarzy lub kończyn, ponieważ dane treningowe nie zawierają wystarczającej liczby obrazów z tymi funkcjami.
- Model był szkolony na Zbiór danych LAION-5B, która zawiera treści dla dorosłych i może nie nadawać się do użytku w produkcie bez dalszych rozważań.
- Model może nie działać dobrze z językami innymi niż angielski, ponieważ model został przeszkolony na tekście w języku angielskim.
- Model nie może generować dobrego tekstu w obrazach.
- Malowanie metodą stabilnej dyfuzji zazwyczaj działa najlepiej w przypadku obrazów o niższych rozdzielczościach, takich jak 256×256 lub 512×512 pikseli. Podczas pracy z obrazami o wysokiej rozdzielczości (768×768 lub wyższej) metoda może mieć problemy z utrzymaniem pożądanego poziomu jakości i szczegółowości.
- Chociaż użycie materiału siewnego może pomóc w kontrolowaniu odtwarzalności, malowanie w trybie stabilnej dyfuzji może nadal dawać zróżnicowane wyniki przy niewielkich zmianach danych wejściowych lub parametrów. Może to utrudniać precyzyjne dostrojenie danych wyjściowych do określonych wymagań.
- Ta metoda może mieć problemy z generowaniem skomplikowanych tekstur i wzorów, zwłaszcza gdy obejmują one duże obszary obrazu lub są niezbędne do zachowania ogólnej spójności i jakości pomalowanego obszaru.
Aby uzyskać więcej informacji na temat ograniczeń i stronniczości, patrz Karta modelu stabilnej dyfuzji Inpainting.
Rozwiązanie do malowania z maską generowaną za pomocą monitu
CLIPSeq to zaawansowana technika głębokiego uczenia się, która wykorzystuje moc wstępnie wytrenowanych modeli CLIP (Contrastive Language-Image Pretraining) do generowania masek z obrazów wejściowych. Takie podejście zapewnia wydajny sposób tworzenia masek do zadań, takich jak segmentacja obrazu, malowanie i manipulacja. CLIPSeq używa CLIP do generowania opisu tekstowego obrazu wejściowego. Opis tekstowy jest następnie używany do generowania maski, która identyfikuje piksele na obrazie, które są istotne dla opisu tekstowego. Maski można następnie użyć do wyodrębnienia odpowiednich części obrazu do dalszego przetwarzania.
CLIPSeq ma kilka zalet w porównaniu z innymi metodami generowania masek z obrazów wejściowych. Po pierwsze, jest to bardziej wydajna metoda, ponieważ nie wymaga przetwarzania obrazu przez osobny algorytm segmentacji obrazu. Po drugie, jest dokładniejszy, ponieważ może generować maski, które są ściślej dopasowane do opisu tekstowego obrazu. Po trzecie, jest bardziej wszechstronny, ponieważ można go używać do generowania masek z szerokiej gamy obrazów.
Jednak CLIPSeq ma również pewne wady. Po pierwsze, technika ta może mieć ograniczenia pod względem przedmiotu, ponieważ opiera się na wstępnie wytrenowanych modelach CLIP, które mogą nie obejmować określonych dziedzin lub obszarów wiedzy specjalistycznej. Po drugie, może to być metoda wrażliwa, ponieważ jest podatna na błędy w opisie tekstowym obrazu.
Aby uzyskać więcej informacji, zobacz Wirtualna stylizacja mody z generatywną sztuczną inteligencją przy użyciu Amazon SageMaker.
Sprzątać
Po zakończeniu uruchamiania notesu pamiętaj o usunięciu wszystkich zasobów utworzonych w procesie, aby mieć pewność, że rozliczenia zostaną zatrzymane. Kod służący do czyszczenia punktu końcowego jest dostępny w powiązanym pliku notatnik.
Wnioski
W tym poście pokazaliśmy, jak wdrożyć wstępnie wytrenowany model malowania metodą stabilnej dyfuzji za pomocą funkcji JumpStart. W tym poście pokazaliśmy fragmenty kodu — pełny kod ze wszystkimi krokami w tej wersji demonstracyjnej jest dostępny w Wprowadzenie do JumpStart — Popraw jakość obrazu, kierując się monitami przykładowy notatnik. Wypróbuj rozwiązanie samodzielnie i prześlij nam swoje uwagi.
Aby dowiedzieć się więcej o modelu i sposobie jego działania, zobacz następujące zasoby:
Aby dowiedzieć się więcej o JumpStart, sprawdź następujące posty:
O autorach
Dr Vivek Madan jest naukowcem w zespole Amazon SageMaker JumpStart. Uzyskał doktorat na Uniwersytecie Illinois w Urbana-Champaign i był badaczem podoktoranckim w Georgia Tech. Jest aktywnym badaczem w dziedzinie uczenia maszynowego i projektowania algorytmów. Publikował artykuły na konferencjach EMNLP, ICLR, COLT, FOCS i SODA.
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.
- 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/inpaint-images-with-stable-diffusion-using-amazon-sagemaker-jumpstart/
- :Jest
- $W GÓRĘ
- 10
- 100
- 2022
- 7
- a
- O nas
- przyśpieszyć
- Akceptuj
- Akceptuje
- dostęp
- precyzja
- dokładny
- Osiągać
- aktywny
- Dodatkowy
- do tego
- Dorosły
- zaawansowany
- Zalety
- przystępne
- Po
- przed
- AI
- AI / ML
- AIDS
- algorytm
- wyrównany
- Wszystkie kategorie
- pozwala
- zawsze
- Amazonka
- Amazon Sage Maker
- Amazon SageMaker JumpStart
- i
- Inne
- api
- Pszczoła
- stosowany
- podejście
- właściwy
- w przybliżeniu
- architektoniczny
- SĄ
- POWIERZCHNIA
- obszary
- AS
- At
- automatycznie
- dostępny
- AWS
- baza
- na podstawie
- BE
- bo
- BEST
- Najlepsze praktyki
- Ulepsz Swój
- stronniczość
- billing
- Mieszanka
- Niebieski
- budować
- Budowanie
- by
- CAN
- walizka
- casual
- CAT
- spowodowanie
- Centrum
- pewien
- wyzwanie
- ZOBACZ
- Dodaj
- klasa
- kliknij
- Kliniczne
- dokładnie
- kod
- komentarze
- kompletny
- wypełniając
- wszechstronny
- konferencje
- Rozważania
- Budowa
- zawierać
- Pojemnik
- Pojemniki
- zawartość
- kontrola
- Stwórz
- stworzony
- Tworzenie
- zwyczaj
- Klientów
- dane
- Utrata danych
- dedykowane
- głęboko
- głęboka nauka
- Domyślnie
- dostarcza
- demonstruje
- rozwijać
- wdrażane
- wdrażanie
- Wdrożenie
- opisane
- opis
- Wnętrze
- życzenia
- detal
- detale
- Transmitowanie
- niepełnosprawny
- inny
- Doker
- Nie
- domeny
- nie
- podczas
- każdy
- faktycznie
- ruchomości
- wydajny
- skutecznie
- bądź
- Umożliwia
- koniec końców
- Punkt końcowy
- Angielski
- zapewnić
- wejście
- Środowisko
- Błędy
- szczególnie
- niezbędny
- przykład
- przykłady
- podniecony
- eksperyment
- ekspertyza
- Oczy
- twarze
- Moda
- Cecha
- Korzyści
- Wyposażony w
- stopy
- Płeć żeńska
- Pobrano
- kilka
- filet
- finansować
- i terminów, a
- dopasować
- Elastyczność
- pływak
- następujący
- W razie zamówieenia projektu
- format
- Naprzód
- od
- pełny
- dalej
- ogólnie
- Generować
- wygenerowane
- generujący
- generacja
- generatywny
- generatywna sztuczna inteligencja
- dobry
- GPU
- poradnictwo
- poprowadzi
- Przewodniki
- uchwyt
- Have
- głowa
- Zdrowie
- opieki zdrowotnej
- pomoc
- wysokiej jakości
- wysoka rozdzielczość
- wyższy
- Dobranie (Hit)
- przytrzymanie
- Hosting
- W jaki sposób
- How To
- HTML
- HTTPS
- identyfikuje
- Illinois
- obraz
- zdjęcia
- Obrazowanie
- imponujący
- in
- zawierać
- włączony
- Włącznie z
- Informacja
- wkład
- przykład
- zintegrowany
- Interfejs
- przedstawiać
- IT
- JEGO
- jpg
- json
- język
- Języki
- duży
- prowadzić
- UCZYĆ SIĘ
- nauka
- poziom
- lubić
- Ograniczenia
- Ograniczony
- Limity
- linie
- Lista
- długo
- dłużej
- od
- maszyna
- uczenie maszynowe
- utrzymać
- Utrzymywanie
- robić
- kierowniczy
- Manipulacja
- wiele
- maska
- Maski
- Materia
- Może..
- metoda
- metody
- może
- minut
- brakujący
- Złagodzić
- ML
- model
- modele
- jeszcze
- bardziej wydajny
- Ponadto
- MRI
- wielokrotność
- Naturalny
- Potrzebować
- ujemny
- Nowości
- nlp
- notatnik
- powieść
- listopad
- numer
- przedmiot
- uzyskać
- of
- Oferty
- on
- ONE
- koncepcja
- operacyjny
- zamówienie
- oryginalny
- Inne
- wytyczne
- wydajność
- ogólny
- własny
- Pakiety
- strona
- Papiery
- parametry
- Park
- strony
- przechodzić
- wzory
- doskonały
- wykonać
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- Platforma
- plato
- Analiza danych Platona
- PlatoDane
- punkt
- Pozycje
- pozytywny
- Post
- Wiadomości
- power
- praktyki
- precyzyjny
- Przewidywania
- Urządzenie prognozujące
- przygotowany
- teraźniejszość
- Cena
- wygląda tak
- Obrobiony
- przetwarzanie
- produkować
- Produkt
- zapewniać
- pod warunkiem,
- zapewnia
- że
- publiczny
- zdrowie publiczne
- publikacje
- opublikowany
- Python
- jakość
- Randomizowane
- Surowy
- w czasie rzeczywistym
- królestwo
- odbieranie
- polecić
- zmniejszyć
- Zredukowany
- odnosi
- region
- związane z
- szczątki
- naprawa
- otrzymuje
- zażądać
- wywołań
- wymagać
- wymagany
- wymagania
- Wymaga
- badacz
- przypomina
- Zasoby
- odpowiedź
- przywrócenie
- wynikły
- Efekt
- powrót
- powraca
- RGB
- run
- bieganie
- sagemaker
- taki sam
- Skala
- Naukowiec
- skrypty
- Sdk
- druga
- Sekcja
- działy
- Sektory
- nasienie
- segmentacja
- wybrany
- wysyłanie
- senior
- wrażliwy
- oddzielny
- ustawienie
- w panelu ustawień
- kilka
- Krzem
- Silicon Valley
- pojedynczy
- Rozmiar
- mały
- mniejszy
- So
- rozwiązanie
- kilka
- rozpiętość
- specjalista
- specyficzny
- określony
- stabilny
- początek
- Stan
- Cel
- Nadal
- zatrzymany
- sznur
- Walka
- studio
- przedmiot
- taki
- Cierpią
- wystarczający
- wsparcie
- wrażliwy
- trwa
- Zadanie
- zadania
- zespół
- tech
- Techniczny
- REGULAMIN
- Testy
- że
- Połączenia
- w związku z tym
- Te
- Trzeci
- Przez
- czas
- do
- już dziś
- razem
- przeszkolony
- Trening
- typy
- zazwyczaj
- ui
- uniwersytet
- us
- Stosowanie
- posługiwać się
- Użytkownik
- Interfejs użytkownika
- Użytkownicy
- wykorzystać
- wykorzystuje
- Dolina
- Wartości
- różnorodność
- różnorodny
- wszechstronny
- przez
- Wideo
- Droga..
- DOBRZE
- który
- biały
- szeroki
- będzie
- w
- w ciągu
- bez
- Praca
- pracować razem
- pracujący
- działa
- Wydajność
- You
- Twój
- zefirnet