În noiembrie 2022, noi a anunțat cu care clienții AWS pot genera imagini din text Difuzie stabilă modele în Amazon SageMaker JumpStart. Astăzi, anunțăm o nouă funcție care vă permite să măriți imaginile (redimensionați imaginile fără a pierde calitatea) cu modelele Stable Diffusion în JumpStart. O imagine cu rezoluție scăzută, neclară și pixelată poate fi convertită într-o imagine de înaltă rezoluție care pare mai netedă, mai clară și mai detaliată. Acest proces, numit upscaling, poate fi aplicat atât imaginilor reale, cât și imaginilor generate de modele text-to-image Stable Diffusion. Acesta poate fi folosit pentru a îmbunătăți calitatea imaginii în diverse industrii, cum ar fi comerțul electronic și imobiliare, precum și pentru artiști și fotografi. În plus, upscalingul poate îmbunătăți calitatea vizuală a imaginilor cu rezoluție scăzută atunci când sunt afișate pe ecrane de înaltă rezoluție.
Stable Diffusion folosește un algoritm AI pentru a mări imaginile, eliminând nevoia de lucru manual care poate necesita completarea manuală a golurilor dintr-o imagine. A fost instruit pe milioane de imagini și poate prezice cu precizie imagini de înaltă rezoluție, rezultând o creștere semnificativă a detaliilor în comparație cu sistemele de upscalare tradiționale. În plus, spre deosebire de tehnicile non-deep-learning, cum ar fi cel mai apropiat vecin, Stable Diffusion ia în considerare contextul imaginii, folosind un prompt textual pentru a ghida procesul de upscaling.
În această postare, oferim o privire de ansamblu asupra modului de implementare și rulare a inferenței cu modelul de upscaler Stable Diffusion în două moduri: prin interfața cu utilizatorul (UI) JumpStart în Amazon SageMaker Studio, și programatic prin API-uri JumpStart disponibil în SageMaker Python SDK.
Prezentare generală a soluțiilor
Următoarele imagini prezintă exemple de upscaling efectuate de model. În stânga este imaginea originală cu rezoluție scăzută mărită pentru a se potrivi cu dimensiunea imaginii generate de model. În dreapta este imaginea generată de model.
Prima imagine generată este rezultatul imaginii cu rezoluție scăzută a pisicii și a promptului „o pisică albă”.
A doua imagine generată este rezultatul imaginii fluture cu rezoluție scăzută și promptul „un fluture pe o frunză verde”.
Rularea modelelor mari, cum ar fi Stable Diffusion, necesită scripturi de inferență personalizate. Trebuie să rulați teste end-to-end pentru a vă asigura că scriptul, modelul și instanța dorită funcționează împreună eficient. JumpStart simplifică acest proces prin furnizarea de scripturi gata de utilizare care au fost testate robust. Puteți accesa aceste scripturi cu un singur clic prin interfața de utilizare Studio sau cu foarte puține linii de cod prin intermediul API-uri JumpStart.
Următoarele secțiuni oferă o prezentare generală a modului de implementare a modelului și de rulare a inferenței folosind fie interfața de utilizare Studio, fie API-urile JumpStart.
Rețineți că, prin utilizarea acestui model, sunteți de acord cu CreativeML Open RAIL++-M Licență.
Accesați JumpStart prin interfața de utilizare Studio
În această secțiune, demonstrăm cum să antrenăm și să implementăm modele JumpStart prin interfața de utilizare Studio. Următorul videoclip arată cum să găsiți modelul de upscaler Stable Diffusion pre-antrenat pe JumpStart și să îl implementați. Pagina modelului conține informații valoroase despre model și despre modul de utilizare. Pentru deducere, folosim tipul de instanță ml.p3.2xlarge deoarece oferă accelerația GPU necesară pentru o latență scăzută a inferenței la un preț scăzut. După ce configurați instanța de găzduire SageMaker, alegeți Lansa. Va dura 5-10 minute până când punctul final este pornit și gata să răspundă la solicitările de inferență.
Pentru a accelera timpul până la inferență, JumpStart oferă un exemplu de blocnotes care arată cum să rulați inferența pe punctul final nou creat. Pentru a accesa blocnotesul în Studio, alegeți Deschide Notebook în Utilizați Endpoint din Studio secțiunea paginii de punct final al modelului.
Utilizați JumpStart în mod programatic cu SDK-ul SageMaker
Puteți utiliza interfața de utilizare JumpStart pentru a implementa un model pre-antrenat în mod interactiv, în doar câteva clicuri. Cu toate acestea, puteți utiliza modele JumpStart și în mod programatic, utilizând API-uri care sunt integrate în SDK-ul SageMaker Python.
În această secțiune, alegem un model pre-antrenat adecvat în JumpStart, implementăm acest model într-un punct final SageMaker și rulăm inferențe asupra punctului final implementat, toate utilizând SDK-ul SageMaker Python. Următoarele exemple conțin fragmente de cod. Pentru codul complet cu toți pașii din această demonstrație, consultați Introducere în JumpStart – Îmbunătățiți calitatea imaginii ghidată de prompt exemplu de caiet.
Implementați modelul pre-antrenat
SageMaker utilizează containere Docker pentru diferite sarcini de construcție și de execuție. JumpStart utilizează Containere de învățare profundă SageMaker (DLC-uri) care sunt specifice cadrului. Preluăm mai întâi orice pachete suplimentare, precum și scripturi pentru a gestiona instruirea și inferența pentru sarcina selectată. Apoi, artefactele modelului pre-antrenate sunt preluate separat model_uris
, care oferă flexibilitate platformei. Acest lucru permite utilizarea mai multor modele pre-antrenate cu un singur script de inferență. Următorul cod ilustrează acest proces:
În continuare, oferim aceste resurse într-un Modelul SageMaker instanță și implementați un punct final:
După ce modelul nostru este implementat, putem obține predicții din acesta în timp real!
formatul de intrare
Punctul final acceptă o imagine cu rezoluție scăzută ca valori RGB brute sau o imagine codificată în bază64. Managerul de inferență decodifică imaginea pe baza content_type
:
- Pentru
content_type = “application/json”
, sarcina utilă de intrare trebuie să fie un dicționar JSON cu valorile RGB brute, un prompt textual și alți parametri opționali - Pentru
content_type = “application/json;jpeg”
, sarcina utilă de intrare trebuie să fie un dicționar JSON cu imaginea codificată în base64, un prompt textual și alți parametri opționali
Format de iesire
Următoarele exemple de cod vă oferă o imagine despre cum arată ieșirile. Similar cu formatul de intrare, punctul final poate răspunde cu valorile RGB brute ale imaginii sau cu o imagine codificată base64. Acest lucru poate fi specificat prin setare accept
la una dintre cele două valori:
- Pentru
accept = “application/json”
, punctul final returnează un dicționar JSON cu valori RGB pentru imagine - Pentru
accept = “application/json;jpeg”
, punctul final returnează un dicționar JSON cu imaginea JPEG ca octeți codificați cu codificare base64.b64
Rețineți că trimiterea sau primirea sarcinii utile cu valori RGB brute poate atinge limitele implicite pentru sarcina utilă de intrare și dimensiunea răspunsului. Prin urmare, vă recomandăm să utilizați imaginea codificată base64 prin setare content_type = “application/json;jpeg”
și accept = “application/json;jpeg”
.
Următorul cod este un exemplu de solicitare de inferență:
Răspunsul punctului final este un obiect JSON care conține imaginile generate și promptul:
Parametri acceptați
Modelele de upscaling Stable Diffusion acceptă mulți parametri pentru generarea de imagini:
- imagine – O imagine cu rezoluție scăzută.
- prompt – Un prompt pentru a ghida generarea imaginii. Poate fi un șir sau o listă de șiruri.
- num_inference_steps (opțional) – Numărul de pași de eliminare a zgomotului în timpul generării imaginii. Mai mulți pași duc la o imagine de calitate mai bună. Dacă este specificat, trebuie să fie un întreg pozitiv. Rețineți că mai mulți pași de inferență vor duce la un timp de răspuns mai lung.
- guidance_scale (opțional) – O scară de ghidare mai mare are ca rezultat o imagine mai strâns legată de prompt, în detrimentul calității imaginii. Dacă este specificat, trebuie să fie un float.
guidance_scale<=1
este ignorat. - negative_prompt (opțional) – Aceasta ghidează generarea imaginii în raport cu acest prompt. Dacă este specificat, trebuie să fie un șir sau o listă de șiruri și să fie folosit cu
guidance_scale
. Dacăguidance_scale
este dezactivat, și acesta este dezactivat. Mai mult, dacă promptul este o listă de șiruri, atunci negative_prompt trebuie să fie și o listă de șiruri. - sămânță (opțional) – Acest lucru fixează starea randomizată pentru reproductibilitate. Dacă este specificat, trebuie să fie un număr întreg. Ori de câte ori utilizați același prompt cu aceeași sămânță, imaginea rezultată va fi întotdeauna aceeași.
- noise_level (opțional) – Acest lucru adaugă zgomot vectorilor latenți înainte de scalare. Dacă este specificat, trebuie să fie un număr întreg.
Puteți mări recursiv o imagine invocând punctul final în mod repetat pentru a obține imagini de calitate din ce în ce mai mare.
Dimensiunea imaginii și tipurile de instanțe
Imaginile generate de model pot fi de până la patru ori mai mari decât imaginea originală cu rezoluție scăzută. Mai mult, necesarul de memorie a modelului (memoria GPU) crește odată cu dimensiunea imaginii generate. Prin urmare, dacă upscaling o imagine deja de înaltă rezoluție sau upscaling recursiv imagini, selectați un tip de instanță cu o memorie GPU mare. De exemplu, ml.g5.2xlarge are mai multă memorie GPU decât tipul de instanță ml.p3.2xlarge pe care l-am folosit mai devreme. Pentru mai multe informații despre diferite tipuri de instanțe, consultați Tipuri de instanțe Amazon EC2.
Creșterea imaginilor bucată cu bucată
Pentru a reduce cerințele de memorie atunci când măriți imagini mari, puteți împărți imaginea în secțiuni mai mici, cunoscute sub numele de gresie, și upgrade fiecare țiglă individual. După ce plăcile au fost mărite, acestea pot fi amestecate pentru a crea imaginea finală. Această metodă necesită adaptarea promptului pentru fiecare placă, astfel încât modelul să poată înțelege conținutul plăcii și să evite crearea de imagini ciudate. Partea de stil a promptului ar trebui să rămână consecventă pentru toate plăcile, pentru a ușura amestecarea. Când utilizați setări mai mari de dezgomot, este important să fiți mai specific în prompt, deoarece modelul are mai multă libertate de a adapta imaginea. Acest lucru poate fi o provocare atunci când țigla conține doar fundal sau nu are legătură directă cu conținutul principal al imaginii.
Limitări și părtinire
Chiar dacă Stable Diffusion are performanțe impresionante în upscaling, aceasta suferă de mai multe limitări și părtiniri. Acestea includ, dar nu se limitează la:
- Este posibil ca modelul să nu genereze fețe sau membre precise, deoarece datele de antrenament nu includ suficiente imagini cu aceste caracteristici
- Modelul a fost antrenat pe Setul de date LAION-5B, care are conținut pentru adulți și este posibil să nu fie potrivit pentru utilizarea produsului fără alte considerații
- Este posibil ca modelul să nu funcționeze bine cu limbile non-engleze, deoarece modelul a fost instruit pe text în limba engleză
- Modelul nu poate genera text bun în imagini
Pentru mai multe informații despre limitări și părtinire, consultați Card model Stable Diffusion upscaler.
A curăța
După ce ați terminat de rulat blocnotesul, asigurați-vă că ștergeți toate resursele create în acest proces pentru a vă asigura că facturarea este oprită. Codul pentru curățarea punctului final este disponibil în fișierul asociat caiet.
Concluzie
În această postare, am arătat cum să implementăm un model de upscaler Stable Diffusion pre-antrenat folosind JumpStart. Am arătat fragmente de cod în această postare — codul complet cu toți pașii din această demonstrație este disponibil în Introducere în JumpStart – Îmbunătățiți calitatea imaginii ghidată de prompt exemplu de caiet. Încercați singur soluția și trimiteți-ne comentariile dvs.
Pentru a afla mai multe despre model și cum funcționează, consultați următoarele resurse:
Pentru a afla mai multe despre JumpStart, consultați următoarele postări de blog:
Despre Autori
Dr. Vivek Madan este un om de știință aplicat în echipa Amazon SageMaker JumpStart. Și-a luat doctoratul la Universitatea din Illinois la Urbana-Champaign și a fost cercetător post-doctoral la Georgia Tech. Este un cercetător activ în învățarea automată și proiectarea algoritmilor și a publicat lucrări în cadrul conferințelor EMNLP, ICLR, COLT, FOCS și SODA.
Heiko Hotz este arhitect senior de soluții pentru AI și învățare automată, cu un accent special pe procesarea limbajului natural (NLP), modelele de limbaj mari (LLM) și IA generativă. Înainte de acest rol, a fost șeful departamentului de știință a datelor pentru Serviciul Clienți al Amazon UE. Heiko îi ajută pe clienții noștri să aibă succes în călătoria lor AI/ML pe AWS și a lucrat cu organizații din multe industrii, inclusiv asigurări, servicii financiare, media și divertisment, asistență medicală, utilități și producție. În timpul liber, Heiko călătorește cât mai mult posibil.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/upscale-images-with-stable-diffusion-in-amazon-sagemaker-jumpstart/
- 100
- 2022
- 7
- a
- Despre Noi
- accelera
- Accept
- acceptă
- acces
- Cont
- precis
- precis
- realizat
- activ
- adapta
- Suplimentar
- În plus,
- Adaugă
- Adult
- După
- împotriva
- AI
- AI și învățarea automată
- AI / ML
- Algoritmul
- TOATE
- permite
- deja
- mereu
- Amazon
- Amazon SageMaker
- Amazon SageMaker JumpStart
- și
- anunța
- api
- API-uri
- aplicat
- adecvat
- Artiști
- asociate
- în mod automat
- disponibil
- AWS
- fundal
- bazat
- deoarece
- înainte
- fiind
- părtinire
- facturare
- amestecare
- Blog
- Blog
- Pauză
- construi
- denumit
- Poate obține
- CAT
- provocare
- verifica
- Alege
- clasă
- mai clar
- îndeaproape
- cod
- comentarii
- comparație
- conferințe
- consistent
- Recipient
- Containere
- conține
- conţinut
- context
- convertit
- crea
- a creat
- Crearea
- personalizat
- client
- Serviciu clienți
- clienţii care
- de date
- știința datelor
- scădea
- adânc
- învățare profundă
- Mod implicit
- demonstra
- implementa
- dislocate
- Amenajări
- detaliu
- detaliat
- diferit
- difuziune
- direct
- invalid
- Docher
- Nu
- în timpul
- fiecare
- Mai devreme
- mai ușor
- E-commerce
- eficient
- oricare
- eliminarea
- un capăt la altul
- Punct final
- Engleză
- asigura
- Divertisment
- intrare
- bunuri
- EU
- exemplu
- exemple
- fete
- Caracteristică
- Adus
- puțini
- Fișier
- final
- financiar
- Servicii financiare
- Găsi
- First
- potrivi
- Flexibilitate
- pluti
- Concentra
- următor
- format
- Libertate
- din
- Complet
- mai mult
- În plus
- genera
- generată
- generaţie
- generativ
- AI generativă
- Georgia
- obține
- Da
- licărire
- bine
- GPU
- Verde
- creste
- ghida
- Ghiduri
- manipula
- cap
- de asistență medicală
- înălțime
- ajută
- Rezoluție înaltă
- superior
- Lovit
- găzduire
- Cum
- Cum Pentru a
- Totuși
- HTML
- HTTPS
- Illinois
- imagine
- imagini
- important
- impresionant
- îmbunătăţi
- in
- include
- Inclusiv
- Crește
- Individual
- industrii
- informații
- intrare
- instanță
- asigurare
- integrate
- interfaţă
- IT
- călătorie
- JSON
- cunoscut
- limbă
- Limbă
- mare
- Latență
- conduce
- AFLAȚI
- învăţare
- Permite
- limitări
- Limitat
- Limitele
- linii
- Listă
- mai lung
- Uite
- arată ca
- care pierde
- Jos
- maşină
- masina de învățare
- Principal
- face
- manual
- munca manuala
- manual
- de fabricaţie
- multe
- Meci
- Mass-media
- Memorie
- metodă
- milioane
- minute
- ML
- model
- Modele
- mai mult
- multiplu
- Natural
- Procesarea limbajului natural
- Nevoie
- Nou
- nlp
- Zgomot
- caiet
- noiembrie
- număr
- obiect
- ONE
- deschide
- comandă
- organizații
- original
- Altele
- Prezentare generală
- propriu
- ofertele
- lucrări
- parametrii
- parte
- performanță
- imagine
- bucată
- platformă
- Plato
- Informații despre date Platon
- PlatoData
- Punct
- pozitiv
- posibil
- Post
- postări
- competenţelor
- prezice
- Predictii
- Predictor
- prezenta
- preţ
- anterior
- proces
- prelucrare
- Produs
- furniza
- furnizează
- furnizarea
- publicat
- Piton
- calitate
- randomized
- Crud
- gata
- real
- Imobiliare
- primire
- recomanda
- legate de
- rămâne
- REPETAT
- solicita
- cereri de
- necesita
- cerință
- Cerinţe
- Necesită
- cercetător
- Rezoluţie
- Resurse
- Răspunde
- răspuns
- rezultat
- rezultând
- REZULTATE
- reveni
- Returnează
- RGB
- Rol
- Alerga
- funcţionare
- sagemaker
- acelaşi
- Scară
- Ştiinţă
- Om de stiinta
- ecrane
- script-uri
- sdk
- Al doilea
- Secțiune
- secțiuni
- sămânţă
- selectate
- trimitere
- senior
- serviciu
- Servicii
- instalare
- setări
- câteva
- să
- Arăta
- Emisiuni
- semnificativ
- asemănător
- singur
- Mărimea
- mai mici
- mai lin
- So
- soluţie
- soluţii
- special
- specific
- specificată
- stabil
- Stat
- paşi
- oprit
- studio
- stil
- de succes
- astfel de
- suferă
- suficient
- a sustine
- Lua
- ia
- Sarcină
- sarcini
- echipă
- tech
- tehnici de
- teste
- lor
- prin urmare
- Prin
- timp
- ori
- la
- astăzi
- împreună
- tradiţional
- Tren
- dresat
- Pregătire
- CĂLĂTORII
- Tipuri
- ui
- înţelege
- universitate
- us
- utilizare
- Utilizator
- User Interface
- utilitati
- utilizează
- Valoros
- Valori
- diverse
- de
- Video
- modalități de
- Ce
- care
- alb
- voi
- în
- fără
- Apartamente
- lucram impreuna
- a lucrat
- fabrică
- Tu
- Ta
- zephyrnet